Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck...
[pandora-kernel.git] / drivers / net / wireless / brcm80211 / brcmsmac / phy / phy_n.c
1 /*
2  * Copyright (c) 2010 Broadcom Corporation
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
11  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
13  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16
17 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
18
19 #include <linux/kernel.h>
20 #include <linux/delay.h>
21 #include <linux/cordic.h>
22
23 #include <brcm_hw_ids.h>
24 #include <aiutils.h>
25 #include <chipcommon.h>
26 #include <pmu.h>
27 #include <d11.h>
28 #include <phy_shim.h>
29 #include "phy_int.h"
30 #include "phy_hal.h"
31 #include "phy_radio.h"
32 #include "phyreg_n.h"
33 #include "phytbl_n.h"
34 #include "soc.h"
35
36 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
37         read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
38                        ((core == PHY_CORE_0) ? \
39                         radio_type##_##jspace##0 : \
40                         radio_type##_##jspace##1))
41
42 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
43         write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
44                         ((core ==  PHY_CORE_0) ? \
45                          radio_type##_##jspace##0 : \
46                          radio_type##_##jspace##1), value)
47
48 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
49         write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
50
51 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
52         read_radio_reg(pi, ((core == PHY_CORE_0) ? \
53                             radio_type##_##jspace##0##_##reg_name : \
54                             radio_type##_##jspace##1##_##reg_name))
55
56 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
57         write_radio_reg(pi, ((core ==  PHY_CORE_0) ? \
58                              radio_type##_##jspace##0##_##reg_name : \
59                              radio_type##_##jspace##1##_##reg_name), \
60                         value)
61
62 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
63         read_radio_reg(pi, ((core == PHY_CORE_0) ? \
64                              radio_type##_##reg_name##_##jspace##0 : \
65                              radio_type##_##reg_name##_##jspace##1))
66
67 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
68         write_radio_reg(pi, ((core == PHY_CORE_0) ? \
69                         radio_type##_##reg_name##_##jspace##0 : \
70                         radio_type##_##reg_name##_##jspace##1), \
71                         value)
72
73 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
74 #define NPHY_ACI_CHANNEL_DELTA 5
75 #define NPHY_ACI_CHANNEL_SKIP 4
76 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
77 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
78 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
79 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
80 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
81 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
82
83 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
84
85 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
86
87 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
88
89 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
90
91 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
92
93 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
94
95 #define NPHY_NOISE_NOASSOC_ENTER_TH  400
96
97 #define NPHY_NOISE_ASSOC_ENTER_TH  400
98
99 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
100
101 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
102 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
103
104 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
105
106 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
107
108 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
109
110 #define NPHY_RSSICAL_MAXREAD 31
111
112 #define NPHY_RSSICAL_NPOLL 8
113 #define NPHY_RSSICAL_MAXD  (1<<20)
114 #define NPHY_MIN_RXIQ_PWR 2
115
116 #define NPHY_RSSICAL_W1_TARGET 25
117 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
118 #define NPHY_RSSICAL_NB_TARGET 0
119
120 #define NPHY_RSSICAL_W1_TARGET_REV3 29
121 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
122
123 #define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
124 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
125 #define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
126 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
127                                         NPHY_RSSICAL_MAXREAD)
128 #define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
129 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
130                                         NPHY_RSSICAL_MAXREAD)
131 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
132 #define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
133                                ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
134 #define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
135                                ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
136 #define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
137                                ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
138
139 #define NPHY_IQCAL_NUMGAINS 9
140 #define NPHY_N_GCTL 0x66
141
142 #define NPHY_PAPD_EPS_TBL_SIZE 64
143 #define NPHY_PAPD_SCL_TBL_SIZE 64
144 #define NPHY_NUM_DIG_FILT_COEFFS 15
145
146 #define NPHY_PAPD_COMP_OFF 0
147 #define NPHY_PAPD_COMP_ON  1
148
149 #define NPHY_SROM_TEMPSHIFT             32
150 #define NPHY_SROM_MAXTEMPOFFSET         16
151 #define NPHY_SROM_MINTEMPOFFSET         -16
152
153 #define NPHY_CAL_MAXTEMPDELTA           64
154
155 #define NPHY_NOISEVAR_TBLLEN40 256
156 #define NPHY_NOISEVAR_TBLLEN20 128
157
158 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
159
160 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
161
162 /* 5357 Chip specific ChipControl register bits */
163 #define CCTRL5357_EXTPA            (1<<14) /* extPA in ChipControl 1, bit 14 */
164 #define CCTRL5357_ANT_MUX_2o3      (1<<15) /* 2o3 in ChipControl 1, bit 15 */
165
166 #define NPHY_CAL_TSSISAMPS      64
167 #define NPHY_TEST_TONE_FREQ_40MHz 4000
168 #define NPHY_TEST_TONE_FREQ_20MHz 2500
169
170 #define MAX_205x_RCAL_WAITLOOPS 10000
171
172 #define NPHY_RXCAL_TONEAMP 181
173 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
174 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
175
176 #define TXFILT_SHAPING_OFDM20   0
177 #define TXFILT_SHAPING_OFDM40   1
178 #define TXFILT_SHAPING_CCK      2
179 #define TXFILT_DEFAULT_OFDM20   3
180 #define TXFILT_DEFAULT_OFDM40   4
181
182 struct nphy_iqcal_params {
183         u16 txlpf;
184         u16 txgm;
185         u16 pga;
186         u16 pad;
187         u16 ipa;
188         u16 cal_gain;
189         u16 ncorr[5];
190 };
191
192 struct nphy_txiqcal_ladder {
193         u8 percent;
194         u8 g_env;
195 };
196
197 struct nphy_ipa_txcalgains {
198         struct nphy_txgains gains;
199         bool useindex;
200         u8 index;
201 };
202
203 struct nphy_papd_restore_state {
204         u16 fbmix[2];
205         u16 vga_master[2];
206         u16 intpa_master[2];
207         u16 afectrl[2];
208         u16 afeoverride[2];
209         u16 pwrup[2];
210         u16 atten[2];
211         u16 mm;
212 };
213
214 struct nphy_ipa_txrxgain {
215         u16 hpvga;
216         u16 lpf_biq1;
217         u16 lpf_biq0;
218         u16 lna2;
219         u16 lna1;
220         s8 txpwrindex;
221 };
222
223 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
224
225 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz[] = {
226         {0, 0, 0, 0, 0, 100},
227         {0, 0, 0, 0, 0, 50},
228         {0, 0, 0, 0, 0, -1},
229         {0, 0, 0, 3, 0, -1},
230         {0, 0, 3, 3, 0, -1},
231         {0, 2, 3, 3, 0, -1}
232 };
233
234 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz[] = {
235         {0, 0, 0, 0, 0, 128},
236         {0, 0, 0, 0, 0, 70},
237         {0, 0, 0, 0, 0, 20},
238         {0, 0, 0, 3, 0, 20},
239         {0, 0, 3, 3, 0, 20},
240         {0, 2, 3, 3, 0, 20}
241 };
242
243 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = {
244         {0, 0, 0, 0, 0, 100},
245         {0, 0, 0, 0, 0, 50},
246         {0, 0, 0, 0, 0, -1},
247         {0, 0, 0, 3, 0, -1},
248         {0, 0, 3, 3, 0, -1},
249         {0, 0, 5, 3, 0, -1}
250 };
251
252 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = {
253         {0, 0, 0, 0, 0, 10},
254         {0, 0, 0, 1, 0, 10},
255         {0, 0, 1, 2, 0, 10},
256         {0, 0, 1, 3, 0, 10},
257         {0, 0, 4, 3, 0, 10},
258         {0, 0, 6, 3, 0, 10}
259 };
260
261 enum {
262         NPHY_RXCAL_GAIN_INIT = 0,
263         NPHY_RXCAL_GAIN_UP,
264         NPHY_RXCAL_GAIN_DOWN
265 };
266
267 #define wlc_phy_get_papd_nphy(pi) \
268         (read_phy_reg((pi), 0x1e7) & \
269          ((0x1 << 15) | \
270           (0x1 << 14) | \
271           (0x1 << 13)))
272
273 static const u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
274         {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
275          230, -44, 230, 201, -191, 201},
276         {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
277          26, 34, -32, 34},
278         {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
279          121, -73, 121, 91, 124, 91},
280         {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
281          151, 301, 151, 602, -752, 602},
282         {-92, 58, -96, 49, -104, 44, 17, 35, 17,
283          12, 25, 12, 13, 27, 13},
284         {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
285          230, -44, 230, 201, -191, 201},
286         {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
287          0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
288 };
289
290 struct chan_info_nphy_2055 {
291         u16 chan;
292         u16 freq;
293         uint unknown;
294         u8 RF_pll_ref;
295         u8 RF_rf_pll_mod1;
296         u8 RF_rf_pll_mod0;
297         u8 RF_vco_cap_tail;
298         u8 RF_vco_cal1;
299         u8 RF_vco_cal2;
300         u8 RF_pll_lf_c1;
301         u8 RF_pll_lf_r1;
302         u8 RF_pll_lf_c2;
303         u8 RF_lgbuf_cen_buf;
304         u8 RF_lgen_tune1;
305         u8 RF_lgen_tune2;
306         u8 RF_core1_lgbuf_a_tune;
307         u8 RF_core1_lgbuf_g_tune;
308         u8 RF_core1_rxrf_reg1;
309         u8 RF_core1_tx_pga_pad_tn;
310         u8 RF_core1_tx_mx_bgtrim;
311         u8 RF_core2_lgbuf_a_tune;
312         u8 RF_core2_lgbuf_g_tune;
313         u8 RF_core2_rxrf_reg1;
314         u8 RF_core2_tx_pga_pad_tn;
315         u8 RF_core2_tx_mx_bgtrim;
316         u16 PHY_BW1a;
317         u16 PHY_BW2;
318         u16 PHY_BW3;
319         u16 PHY_BW4;
320         u16 PHY_BW5;
321         u16 PHY_BW6;
322 };
323
324 struct chan_info_nphy_radio205x {
325         u16 chan;
326         u16 freq;
327         u8 RF_SYN_pll_vcocal1;
328         u8 RF_SYN_pll_vcocal2;
329         u8 RF_SYN_pll_refdiv;
330         u8 RF_SYN_pll_mmd2;
331         u8 RF_SYN_pll_mmd1;
332         u8 RF_SYN_pll_loopfilter1;
333         u8 RF_SYN_pll_loopfilter2;
334         u8 RF_SYN_pll_loopfilter3;
335         u8 RF_SYN_pll_loopfilter4;
336         u8 RF_SYN_pll_loopfilter5;
337         u8 RF_SYN_reserved_addr27;
338         u8 RF_SYN_reserved_addr28;
339         u8 RF_SYN_reserved_addr29;
340         u8 RF_SYN_logen_VCOBUF1;
341         u8 RF_SYN_logen_MIXER2;
342         u8 RF_SYN_logen_BUF3;
343         u8 RF_SYN_logen_BUF4;
344         u8 RF_RX0_lnaa_tune;
345         u8 RF_RX0_lnag_tune;
346         u8 RF_TX0_intpaa_boost_tune;
347         u8 RF_TX0_intpag_boost_tune;
348         u8 RF_TX0_pada_boost_tune;
349         u8 RF_TX0_padg_boost_tune;
350         u8 RF_TX0_pgaa_boost_tune;
351         u8 RF_TX0_pgag_boost_tune;
352         u8 RF_TX0_mixa_boost_tune;
353         u8 RF_TX0_mixg_boost_tune;
354         u8 RF_RX1_lnaa_tune;
355         u8 RF_RX1_lnag_tune;
356         u8 RF_TX1_intpaa_boost_tune;
357         u8 RF_TX1_intpag_boost_tune;
358         u8 RF_TX1_pada_boost_tune;
359         u8 RF_TX1_padg_boost_tune;
360         u8 RF_TX1_pgaa_boost_tune;
361         u8 RF_TX1_pgag_boost_tune;
362         u8 RF_TX1_mixa_boost_tune;
363         u8 RF_TX1_mixg_boost_tune;
364         u16 PHY_BW1a;
365         u16 PHY_BW2;
366         u16 PHY_BW3;
367         u16 PHY_BW4;
368         u16 PHY_BW5;
369         u16 PHY_BW6;
370 };
371
372 struct chan_info_nphy_radio2057 {
373         u16 chan;
374         u16 freq;
375         u8 RF_vcocal_countval0;
376         u8 RF_vcocal_countval1;
377         u8 RF_rfpll_refmaster_sparextalsize;
378         u8 RF_rfpll_loopfilter_r1;
379         u8 RF_rfpll_loopfilter_c2;
380         u8 RF_rfpll_loopfilter_c1;
381         u8 RF_cp_kpd_idac;
382         u8 RF_rfpll_mmd0;
383         u8 RF_rfpll_mmd1;
384         u8 RF_vcobuf_tune;
385         u8 RF_logen_mx2g_tune;
386         u8 RF_logen_mx5g_tune;
387         u8 RF_logen_indbuf2g_tune;
388         u8 RF_logen_indbuf5g_tune;
389         u8 RF_txmix2g_tune_boost_pu_core0;
390         u8 RF_pad2g_tune_pus_core0;
391         u8 RF_pga_boost_tune_core0;
392         u8 RF_txmix5g_boost_tune_core0;
393         u8 RF_pad5g_tune_misc_pus_core0;
394         u8 RF_lna2g_tune_core0;
395         u8 RF_lna5g_tune_core0;
396         u8 RF_txmix2g_tune_boost_pu_core1;
397         u8 RF_pad2g_tune_pus_core1;
398         u8 RF_pga_boost_tune_core1;
399         u8 RF_txmix5g_boost_tune_core1;
400         u8 RF_pad5g_tune_misc_pus_core1;
401         u8 RF_lna2g_tune_core1;
402         u8 RF_lna5g_tune_core1;
403         u16 PHY_BW1a;
404         u16 PHY_BW2;
405         u16 PHY_BW3;
406         u16 PHY_BW4;
407         u16 PHY_BW5;
408         u16 PHY_BW6;
409 };
410
411 struct chan_info_nphy_radio2057_rev5 {
412         u16 chan;
413         u16 freq;
414         u8 RF_vcocal_countval0;
415         u8 RF_vcocal_countval1;
416         u8 RF_rfpll_refmaster_sparextalsize;
417         u8 RF_rfpll_loopfilter_r1;
418         u8 RF_rfpll_loopfilter_c2;
419         u8 RF_rfpll_loopfilter_c1;
420         u8 RF_cp_kpd_idac;
421         u8 RF_rfpll_mmd0;
422         u8 RF_rfpll_mmd1;
423         u8 RF_vcobuf_tune;
424         u8 RF_logen_mx2g_tune;
425         u8 RF_logen_indbuf2g_tune;
426         u8 RF_txmix2g_tune_boost_pu_core0;
427         u8 RF_pad2g_tune_pus_core0;
428         u8 RF_lna2g_tune_core0;
429         u8 RF_txmix2g_tune_boost_pu_core1;
430         u8 RF_pad2g_tune_pus_core1;
431         u8 RF_lna2g_tune_core1;
432         u16 PHY_BW1a;
433         u16 PHY_BW2;
434         u16 PHY_BW3;
435         u16 PHY_BW4;
436         u16 PHY_BW5;
437         u16 PHY_BW6;
438 };
439
440 struct nphy_sfo_cfg {
441         u16 PHY_BW1a;
442         u16 PHY_BW2;
443         u16 PHY_BW3;
444         u16 PHY_BW4;
445         u16 PHY_BW5;
446         u16 PHY_BW6;
447 };
448
449 static const struct chan_info_nphy_2055 chan_info_nphy_2055[] = {
450         {
451          184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
452          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
453          0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
454         {
455          186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
456          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
457          0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
458         {
459          188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
460          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
461          0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
462         {
463          190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
464          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
465          0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
466         {
467          192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
468          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
469          0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
470         {
471          194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
472          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
473          0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
474         {
475          196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
476          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
477          0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
478         {
479          198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
480          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
481          0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
482         {
483          200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
484          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
485          0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
486         {
487          202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
488          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
489          0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
490         {
491          204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
492          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
493          0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
494         {
495          206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
496          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
497          0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
498         {
499          208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
500          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
501          0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
502         {
503          210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
504          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
505          0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
506         {
507          212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
508          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
509          0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
510         {
511          214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
512          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
513          0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
514         {
515          216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
516          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
517          0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
518         {
519          218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
520          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
521          0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
522         {
523          220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
524          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
525          0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
526         {
527          222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
528          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
529          0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
530         {
531          224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
532          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
533          0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
534         {
535          226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
536          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
537          0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
538         {
539          228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
540          0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
541          0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
542         {
543          32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
544          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
545          0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
546         {
547          34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
548          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
549          0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
550         {
551          36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
552          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
553          0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
554         {
555          38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
556          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
557          0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
558         {
559          40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
560          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
561          0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
562         {
563          42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
564          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
565          0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
566         {
567          44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
568          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
569          0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
570         {
571          46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
572          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
573          0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
574         {
575          48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
576          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
577          0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
578         {
579          50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
580          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
581          0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
582         {
583          52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
584          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
585          0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
586         {
587          54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
588          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
589          0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
590         {
591          56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
592          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
593          0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
594         {
595          58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
596          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
597          0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
598         {
599          60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
600          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
601          0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
602         {
603          62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
604          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
605          0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
606         {
607          64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
608          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
609          0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
610         {
611          66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
612          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
613          0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
614         {
615          68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
616          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
617          0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
618         {
619          70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
620          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
621          0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
622         {
623          72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
624          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
625          0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
626         {
627          74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
628          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
629          0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
630         {
631          76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
632          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
633          0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
634         {
635          78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
636          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
637          0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
638         {
639          80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
640          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
641          0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
642         {
643          82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
644          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
645          0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
646         {
647          84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
648          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
649          0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
650         {
651          86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
652          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
653          0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
654         {
655          88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
656          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
657          0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
658         {
659          90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
660          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
661          0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
662         {
663          92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
664          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
665          0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
666         {
667          94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
668          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
669          0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
670         {
671          96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
672          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
673          0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
674         {
675          98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
676          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
677          0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
678         {
679          100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
680          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
681          0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
682         {
683          102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
684          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
685          0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
686         {
687          104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
688          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
689          0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
690         {
691          106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
692          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
693          0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
694         {
695          108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
696          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
697          0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
698         {
699          110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
700          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
701          0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
702         {
703          112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
704          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
705          0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
706         {
707          114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
708          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
709          0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
710         {
711          116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
712          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
713          0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
714         {
715          118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
716          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
717          0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
718         {
719          120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
720          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
721          0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
722         {
723          122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
724          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
725          0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
726         {
727          124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
728          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
729          0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
730         {
731          126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
732          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
733          0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
734         {
735          128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
736          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
737          0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
738         {
739          130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
740          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
741          0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
742         {
743          132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
744          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
745          0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
746         {
747          134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
748          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
749          0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
750         {
751          136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
752          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
753          0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
754         {
755          138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
756          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
757          0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
758         {
759          140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
760          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
761          0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
762         {
763          142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
764          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
765          0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
766         {
767          144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
768          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
769          0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
770         {
771          145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
772          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
773          0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
774         {
775          146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
776          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
777          0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
778         {
779          147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
780          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
781          0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
782         {
783          148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
784          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
785          0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
786         {
787          149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
788          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
789          0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
790         {
791          150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
792          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
793          0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
794         {
795          151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
796          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
797          0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
798         {
799          152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
800          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
801          0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
802         {
803          153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
804          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
805          0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
806         {
807          154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
808          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
809          0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
810         {
811          155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
812          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
813          0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
814         {
815          156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
816          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
817          0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
818         {
819          157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
820          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
821          0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
822         {
823          158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
824          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
825          0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
826         {
827          159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
828          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
829          0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
830         {
831          160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
832          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
833          0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
834         {
835          161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
836          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
837          0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
838         {
839          162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
840          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
841          0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
842         {
843          163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
844          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
845          0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
846         {
847          164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
848          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
849          0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
850         {
851          165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
852          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
853          0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
854         {
855          166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
856          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
857          0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
858         {
859          168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
860          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
861          0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
862         {
863          170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
864          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
865          0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
866         {
867          172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
868          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
869          0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
870         {
871          174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
872          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
873          0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
874         {
875          176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
876          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
877          0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
878         {
879          178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
880          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
881          0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
882         {
883          180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
884          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
885          0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
886         {
887          182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
888          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
889          0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
890         {
891          1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
892          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
893          0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
894         {
895          2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
896          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
897          0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
898         {
899          3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
900          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
901          0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
902         {
903          4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
904          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
905          0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
906         {
907          5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
908          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
909          0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
910         {
911          6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
912          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
913          0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
914         {
915          7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
916          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
917          0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
918         {
919          8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
920          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
921          0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
922         {
923          9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
924          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
925          0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
926         {
927          10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
928          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
929          0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
930         {
931          11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
932          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
933          0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
934         {
935          12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
936          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
937          0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
938         {
939          13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
940          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
941          0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
942         {
943          14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
944          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
945          0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
946 };
947
948 static const struct chan_info_nphy_radio205x chan_info_nphyrev3_2056[] = {
949         {
950          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
951          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
952          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
953          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
954         {
955          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
956          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
957          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
958          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
959         {
960          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
961          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
962          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
963          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
964         {
965          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
966          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
967          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
968          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
969         {
970          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
971          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
972          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
973          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
974         {
975          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
976          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
977          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
978          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
979         {
980          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
981          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
982          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
983          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
984         {
985          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
986          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
987          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
988          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
989         {
990          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
991          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
992          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
993          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
994         {
995          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
996          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
997          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
998          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
999         {
1000          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1001          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1002          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1003          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1004         {
1005          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1006          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1007          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1008          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1009         {
1010          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1011          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1012          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1013          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1014         {
1015          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1016          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1017          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1018          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1019         {
1020          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1021          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1022          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1023          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1024         {
1025          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1026          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1027          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1028          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1029         {
1030          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1031          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1032          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1033          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1034         {
1035          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1036          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1037          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1038          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1039         {
1040          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1041          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1042          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1043          0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1044         {
1045          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1046          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1047          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1048          0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1049         {
1050          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1051          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1052          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1053          0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1054         {
1055          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1056          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1057          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1058          0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1059         {
1060          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1061          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1062          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1063          0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1064         {
1065          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1066          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1067          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1068          0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1069         {
1070          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1071          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1072          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1073          0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1074         {
1075          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1076          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1077          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1078          0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1079         {
1080          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1081          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1082          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1083          0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1084         {
1085          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1086          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1087          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1088          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1089         {
1090          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1091          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1092          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1093          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1094         {
1095          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1096          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1097          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1098          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1099         {
1100          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1101          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1102          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1103          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1104         {
1105          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1106          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1107          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1108          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1109         {
1110          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1111          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1112          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1113          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1114         {
1115          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1116          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1117          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1118          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1119         {
1120          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1121          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1122          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1123          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1124         {
1125          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1126          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1127          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1128          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1129         {
1130          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1131          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1132          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1133          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1134         {
1135          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1136          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1137          0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1138          0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1139         {
1140          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1141          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1142          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1143          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1144         {
1145          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1146          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1147          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1148          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1149         {
1150          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1151          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1152          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1153          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1154         {
1155          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1156          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1157          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1158          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1159         {
1160          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1161          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1162          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1163          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1164         {
1165          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1166          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1167          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1168          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1169         {
1170          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1171          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1172          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1173          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1174         {
1175          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1176          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1177          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1178          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1179         {
1180          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1181          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1182          0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1183          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1184         {
1185          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1186          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1187          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1188          0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1189         {
1190          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1191          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1192          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1193          0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1194         {
1195          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1196          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1197          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1198          0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1199         {
1200          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1201          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1202          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1203          0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1204         {
1205          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1206          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1207          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1208          0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1209         {
1210          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1211          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1212          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1213          0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1214         {
1215          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1216          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1217          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1218          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1219         {
1220          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1221          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1222          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1223          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1224         {
1225          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1226          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1227          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1228          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1229         {
1230          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1231          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1232          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1233          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1234         {
1235          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1236          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1237          0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1238          0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1239         {
1240          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1241          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1242          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1243          0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1244         {
1245          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1246          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1247          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1248          0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1249         {
1250          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1251          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1252          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1253          0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1254         {
1255          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1256          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1257          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1258          0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1259         {
1260          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1261          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1262          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1263          0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1264         {
1265          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1266          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1267          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1268          0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1269         {
1270          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1271          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1272          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1273          0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1274         {
1275          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1276          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1277          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1278          0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1279         {
1280          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1281          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1282          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1283          0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1284         {
1285          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1286          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1287          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1288          0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1289         {
1290          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1291          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1292          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1293          0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1294         {
1295          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1296          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1297          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1298          0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1299         {
1300          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1301          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1302          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1303          0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1304         {
1305          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1306          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1307          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1308          0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1309         {
1310          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1311          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1312          0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1313          0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1314         {
1315          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1316          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1317          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1318          0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1319         {
1320          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1321          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1322          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1323          0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1324         {
1325          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1326          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1327          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1328          0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1329         {
1330          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1331          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1332          0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1333          0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1334         {
1335          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1336          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1337          0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1338          0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1339         {
1340          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1341          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1342          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1343          0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1344         {
1345          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1346          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1347          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1348          0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1349         {
1350          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1351          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1352          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1353          0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1354         {
1355          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1356          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1357          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1358          0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1359         {
1360          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1361          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1362          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1363          0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1364         {
1365          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1366          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1367          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1368          0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1369         {
1370          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1371          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1372          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1373          0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1374         {
1375          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1376          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1377          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1378          0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1379         {
1380          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1381          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1382          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1383          0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1384         {
1385          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1386          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1387          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1388          0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1389         {
1390          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1391          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1392          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1393          0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1394         {
1395          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1396          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1397          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1398          0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1399         {
1400          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1401          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1402          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1403          0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1404         {
1405          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1406          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1407          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1408          0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1409         {
1410          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1411          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1412          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1413          0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1414         {
1415          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1416          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1417          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1418          0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1419         {
1420          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1421          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1422          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1423          0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1424         {
1425          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1426          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1427          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1428          0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1429         {
1430          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1431          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1432          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1433          0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1434         {
1435          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1436          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1437          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1438          0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1439         {
1440          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1441          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1442          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1443          0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1444         {
1445          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1446          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1447          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1448          0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1449         {
1450          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1451          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1452          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1453          0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1454         {
1455          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1456          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1457          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1458          0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1459         {
1460          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1461          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1462          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1463          0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1464         {
1465          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1466          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1467          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1468          0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1469         {
1470          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1471          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1472          0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1473          0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1474         {
1475          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1476          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1477          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1478          0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1479         {
1480          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1481          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1482          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1483          0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1484         {
1485          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1486          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1487          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1488          0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1489         {
1490          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1491          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1492          0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1493          0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1494         {
1495          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1496          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1497          0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1498          0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1499         {
1500          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1501          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1502          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1503          0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1504         {
1505          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1506          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1507          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1508          0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1509         {
1510          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1511          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1512          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1513          0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1514         {
1515          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1516          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1517          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1518          0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1519         {
1520          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1521          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1522          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1523          0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1524         {
1525          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1526          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1527          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1528          0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1529         {
1530          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1531          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1532          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1533          0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1534         {
1535          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1536          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1537          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1538          0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1539         {
1540          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1541          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1542          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1543          0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1544         {
1545          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1546          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1547          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1548          0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1549         {
1550          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1551          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1552          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1553          0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1554         {
1555          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1556          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1557          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1558          0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1559         {
1560          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1561          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1562          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1563          0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1564         {
1565          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1566          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1567          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1568          0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1569 };
1570
1571 static const struct chan_info_nphy_radio205x chan_info_nphyrev4_2056_A1[] = {
1572         {
1573          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1574          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1575          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1576          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1577         {
1578          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1579          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1580          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1581          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1582         {
1583          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1584          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1585          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1586          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1587         {
1588          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1589          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1590          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1591          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1592         {
1593          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1594          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1595          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1596          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1597         {
1598          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1599          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1600          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1601          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1602         {
1603          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1604          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1605          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1606          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1607         {
1608          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1609          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1610          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1611          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1612         {
1613          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1614          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1615          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1616          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1617         {
1618          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1619          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1620          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1621          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1622         {
1623          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1624          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1625          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1626          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1627         {
1628          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1629          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1630          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1631          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1632         {
1633          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1634          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1635          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1636          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1637         {
1638          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1639          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1640          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1641          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1642         {
1643          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1644          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1645          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1646          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1647         {
1648          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1649          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1650          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1651          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1652         {
1653          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1654          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1655          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1656          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1657         {
1658          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1659          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1660          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1661          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1662         {
1663          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1664          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1665          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1666          0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1667         {
1668          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1669          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1670          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1671          0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1672         {
1673          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1674          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1675          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1676          0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1677         {
1678          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1679          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1680          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1681          0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1682         {
1683          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1684          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1685          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1686          0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1687         {
1688          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1689          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1690          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1691          0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1692         {
1693          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1694          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1695          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1696          0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1697         {
1698          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1699          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1700          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1701          0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1702         {
1703          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1704          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1705          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1706          0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1707         {
1708          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1709          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1710          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1711          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1712         {
1713          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1714          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1715          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1716          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1717         {
1718          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1719          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1720          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1721          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1722         {
1723          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1724          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1725          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1726          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1727         {
1728          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1729          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1730          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1731          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1732         {
1733          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1734          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1735          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1736          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1737         {
1738          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1739          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1740          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1741          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1742         {
1743          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1744          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1745          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1746          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1747         {
1748          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1749          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1750          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1751          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1752         {
1753          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1754          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1755          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1756          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1757         {
1758          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1759          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1760          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1761          0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1762         {
1763          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1764          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1765          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1766          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1767         {
1768          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1769          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1770          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1771          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1772         {
1773          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1774          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1775          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1776          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1777         {
1778          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1779          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1780          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1781          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1782         {
1783          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1784          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1785          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1786          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1787         {
1788          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1789          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1790          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1791          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1792         {
1793          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1794          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1795          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1796          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1797         {
1798          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1799          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1800          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1801          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1802         {
1803          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1804          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1805          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1806          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1807         {
1808          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1809          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1810          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1811          0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1812         {
1813          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1814          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1815          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1816          0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1817         {
1818          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1819          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1820          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1821          0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1822         {
1823          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1824          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1825          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1826          0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1827         {
1828          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1829          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1830          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1831          0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1832         {
1833          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1834          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1835          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1836          0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1837         {
1838          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1839          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1840          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1841          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1842         {
1843          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1844          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1845          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1846          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1847         {
1848          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1849          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1850          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1851          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1852         {
1853          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1854          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1855          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1856          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1857         {
1858          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1859          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1860          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1861          0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1862         {
1863          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1864          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1865          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1866          0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1867         {
1868          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1869          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1870          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1871          0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1872         {
1873          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1874          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1875          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1876          0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1877         {
1878          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1879          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1880          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1881          0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1882         {
1883          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1884          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1885          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1886          0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1887         {
1888          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1889          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1890          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1891          0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1892         {
1893          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1894          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1895          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1896          0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1897         {
1898          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1899          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1900          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1901          0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1902         {
1903          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1904          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1905          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1906          0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1907         {
1908          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1909          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1910          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1911          0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1912         {
1913          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1914          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1915          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1916          0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1917         {
1918          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1919          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1920          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1921          0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1922         {
1923          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1924          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1925          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1926          0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1927         {
1928          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1929          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1930          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1931          0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1932         {
1933          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1934          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1935          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1936          0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1937         {
1938          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1939          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1940          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1941          0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1942         {
1943          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1944          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1945          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1946          0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1947         {
1948          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1949          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1950          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1951          0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1952         {
1953          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1954          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1955          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1956          0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1957         {
1958          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1959          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1960          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1961          0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1962         {
1963          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1964          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1965          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1966          0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1967         {
1968          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1969          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1970          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1971          0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1972         {
1973          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1974          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1975          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1976          0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1977         {
1978          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1979          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1980          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1981          0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1982         {
1983          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1984          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1985          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1986          0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1987         {
1988          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1989          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1990          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1991          0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1992         {
1993          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1994          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1995          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1996          0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1997         {
1998          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1999          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
2000          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2001          0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2002         {
2003          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2004          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2005          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2006          0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2007         {
2008          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2009          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2010          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2011          0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2012         {
2013          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2014          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2015          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2016          0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2017         {
2018          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2019          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2020          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2021          0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2022         {
2023          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2024          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2025          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2026          0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2027         {
2028          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2029          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2030          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2031          0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2032         {
2033          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2034          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2035          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2036          0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2037         {
2038          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2039          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2040          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2041          0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2042         {
2043          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2044          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2045          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2046          0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2047         {
2048          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2049          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2050          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2051          0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2052         {
2053          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2054          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2055          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2056          0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2057         {
2058          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2059          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2060          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2061          0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2062         {
2063          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2064          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2065          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2066          0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2067         {
2068          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2069          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2070          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2071          0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2072         {
2073          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2074          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2075          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2076          0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2077         {
2078          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2079          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2080          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2081          0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2082         {
2083          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2084          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2085          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2086          0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2087         {
2088          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2089          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2090          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2091          0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2092         {
2093          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2094          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2095          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2096          0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2097         {
2098          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2099          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2100          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2101          0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2102         {
2103          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2104          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2105          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2106          0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2107         {
2108          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2109          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2110          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2111          0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2112         {
2113          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2114          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2115          0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2116          0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2117         {
2118          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2119          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2120          0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2121          0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2122         {
2123          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2124          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2125          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2126          0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2127         {
2128          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2129          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2130          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2131          0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2132         {
2133          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2134          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2135          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2136          0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2137         {
2138          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2139          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2140          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2141          0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2142         {
2143          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2144          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2145          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2146          0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2147         {
2148          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2149          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2150          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2151          0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2152         {
2153          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2154          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2155          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2156          0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2157         {
2158          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2159          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2160          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2161          0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2162         {
2163          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2164          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2165          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2166          0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2167         {
2168          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2169          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2170          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2171          0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2172         {
2173          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2174          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2175          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2176          0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2177         {
2178          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2179          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2180          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2181          0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2182         {
2183          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2184          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2185          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2186          0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2187         {
2188          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2189          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2190          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2191          0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2192 };
2193
2194 static const struct chan_info_nphy_radio205x chan_info_nphyrev5_2056v5[] = {
2195         {
2196          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2197          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2198          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2199          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2200         {
2201          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2202          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2203          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2204          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2205         {
2206          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2207          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2208          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2209          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2210         {
2211          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2212          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2213          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2214          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2215         {
2216          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2217          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2218          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2219          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2220         {
2221          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2222          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2223          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2224          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2225         {
2226          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2227          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2228          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2229          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2230         {
2231          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2232          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2233          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2234          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2235         {
2236          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2237          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2238          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2239          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2240         {
2241          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2242          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2243          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2244          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2245         {
2246          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2247          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2248          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2249          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2250         {
2251          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2252          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2253          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2254          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2255         {
2256          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2257          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2258          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2259          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2260         {
2261          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2262          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2263          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2264          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2265         {
2266          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2267          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2268          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2269          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2270         {
2271          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2272          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2273          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2274          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2275         {
2276          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2277          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2278          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2279          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2280         {
2281          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2282          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2283          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2284          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2285         {
2286          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2287          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2288          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2289          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2290         {
2291          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2292          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2293          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2294          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2295         {
2296          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2297          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2298          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2299          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2300         {
2301          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2302          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2303          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2304          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2305         {
2306          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2307          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2308          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2309          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2310         {
2311          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2312          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2313          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2314          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2315         {
2316          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2317          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2318          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2319          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2320         {
2321          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2322          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2323          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2324          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2325         {
2326          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2327          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2328          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2329          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2330         {
2331          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2332          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2333          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2334          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2335         {
2336          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2337          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2338          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2339          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2340         {
2341          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2342          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2343          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2344          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2345         {
2346          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2347          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2348          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2349          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2350         {
2351          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2352          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2353          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2354          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2355         {
2356          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2357          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2358          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2359          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2360         {
2361          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2362          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2363          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2364          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2365         {
2366          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2367          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2368          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2369          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2370         {
2371          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2372          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2373          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2374          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2375         {
2376          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2377          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2378          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2379          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2380         {
2381          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2382          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2383          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2384          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2385         {
2386          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2387          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2388          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2389          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2390         {
2391          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2392          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2393          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2394          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2395         {
2396          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2397          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2398          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2399          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2400         {
2401          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2402          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2403          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2404          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2405         {
2406          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2407          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2408          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2409          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2410         {
2411          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2412          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2413          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2414          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2415         {
2416          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2417          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2418          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2419          0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2420         {
2421          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2422          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2423          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2424          0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2425         {
2426          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2427          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2428          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2429          0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2430         {
2431          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2432          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2433          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2434          0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2435         {
2436          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2437          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2438          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2439          0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2440         {
2441          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2442          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2443          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2444          0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2445         {
2446          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2447          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2448          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2449          0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2450         {
2451          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2452          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2453          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2454          0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2455         {
2456          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2457          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2458          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2459          0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2460         {
2461          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2462          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2463          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2464          0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2465         {
2466          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2467          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2468          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2469          0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2470         {
2471          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2472          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2473          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2474          0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2475         {
2476          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2477          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2478          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2479          0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2480         {
2481          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2482          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2483          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2484          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2485         {
2486          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2487          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2488          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2489          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2490         {
2491          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2492          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2493          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2494          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2495         {
2496          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2497          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2498          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2499          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2500         {
2501          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2502          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2503          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2504          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2505         {
2506          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2507          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2508          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2509          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2510         {
2511          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2512          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2513          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2514          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2515         {
2516          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2517          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2518          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2519          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2520         {
2521          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2522          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2523          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2524          0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2525         {
2526          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2527          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2528          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2529          0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2530         {
2531          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2532          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2533          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2534          0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2535         {
2536          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2537          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2538          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2539          0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2540         {
2541          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2542          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2543          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2544          0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2545         {
2546          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2547          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2548          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2549          0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2550         {
2551          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2552          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2553          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2554          0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2555         {
2556          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2557          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2558          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2559          0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2560         {
2561          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2562          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2563          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2564          0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2565         {
2566          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2567          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2568          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2569          0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2570         {
2571          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2572          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2573          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2574          0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2575         {
2576          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2577          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2578          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2579          0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2580         {
2581          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2582          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2583          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2584          0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2585         {
2586          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2587          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2588          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2589          0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2590         {
2591          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2592          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2593          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2594          0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2595         {
2596          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2597          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2598          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2599          0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2600         {
2601          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2602          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2603          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2604          0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2605         {
2606          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2607          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2608          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2609          0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2610         {
2611          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2612          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2613          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2614          0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2615         {
2616          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2617          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2618          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2619          0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2620         {
2621          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2622          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2623          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2624          0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2625         {
2626          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2627          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2628          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2629          0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2630         {
2631          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2632          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2633          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2634          0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2635         {
2636          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2637          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2638          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2639          0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2640         {
2641          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2642          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2643          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2644          0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2645         {
2646          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2647          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2648          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2649          0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2650         {
2651          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2652          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2653          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2654          0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2655         {
2656          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2657          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2658          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2659          0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2660         {
2661          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2662          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2663          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2664          0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2665         {
2666          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2667          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2668          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2669          0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2670         {
2671          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2672          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2673          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2674          0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2675         {
2676          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2677          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2678          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2679          0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2680         {
2681          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2682          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2683          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2684          0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2685         {
2686          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2687          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2688          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2689          0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2690         {
2691          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2692          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2693          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2694          0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2695         {
2696          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2697          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2698          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2699          0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2700         {
2701          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2702          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2703          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2704          0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2705         {
2706          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2707          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2708          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2709          0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2710         {
2711          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2712          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2713          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2714          0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2715         {
2716          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2717          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2718          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2719          0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2720         {
2721          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2722          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2723          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2724          0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2725         {
2726          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2727          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2728          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2729          0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2730         {
2731          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2732          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2733          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2734          0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2735         {
2736          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2737          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2738          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2739          0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2740         {
2741          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2742          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2743          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2744          0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2745         {
2746          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2747          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2748          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2749          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2750         {
2751          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2752          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2753          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2754          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2755         {
2756          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2757          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2758          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2759          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2760         {
2761          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2762          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2763          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2764          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2765         {
2766          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2767          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2768          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2769          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2770         {
2771          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2772          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2773          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2774          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2775         {
2776          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2777          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2778          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2779          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2780         {
2781          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2782          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2783          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2784          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2785         {
2786          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2787          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2788          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2789          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2790         {
2791          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2792          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2793          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2794          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2795         {
2796          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2797          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2798          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2799          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2800         {
2801          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2802          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2803          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2804          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2805         {
2806          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2807          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2808          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2809          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2810         {
2811          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2812          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2813          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2814          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2815 };
2816
2817 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v6[] = {
2818         {
2819          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2820          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2821          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2822          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2823         {
2824          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2825          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2826          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2827          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2828         {
2829          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2830          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2831          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2832          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2833         {
2834          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2835          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2836          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2837          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2838         {
2839          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2840          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2841          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2842          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2843         {
2844          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2845          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2846          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2847          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2848         {
2849          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2850          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2851          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2852          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2853         {
2854          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2855          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2856          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2857          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2858         {
2859          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2860          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2861          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2862          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2863         {
2864          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2865          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2866          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2867          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2868         {
2869          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2870          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2871          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2872          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2873         {
2874          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2875          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2876          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2877          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2878         {
2879          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2880          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2881          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2882          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2883         {
2884          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2885          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2886          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2887          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2888         {
2889          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2890          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2891          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2892          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2893         {
2894          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2895          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2896          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2897          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2898         {
2899          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2900          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2901          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2902          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2903         {
2904          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2905          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2906          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2907          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2908         {
2909          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2910          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2911          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2912          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2913         {
2914          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2915          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2916          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2917          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2918         {
2919          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2920          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2921          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2922          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2923         {
2924          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2925          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2926          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2927          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2928         {
2929          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2930          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2931          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2932          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2933         {
2934          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2935          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2936          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2937          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2938         {
2939          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2940          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2941          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2942          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2943         {
2944          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2945          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2946          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2947          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2948         {
2949          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2950          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2951          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2952          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2953         {
2954          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2955          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2956          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2957          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2958         {
2959          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2960          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2961          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2962          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2963         {
2964          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2965          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2966          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2967          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2968         {
2969          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2970          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2971          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2972          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2973         {
2974          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2975          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2976          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2977          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2978         {
2979          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2980          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2981          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2982          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2983         {
2984          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2985          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2986          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2987          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2988         {
2989          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2990          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2991          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2992          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2993         {
2994          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2995          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2996          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2997          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2998         {
2999          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3000          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3001          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3002          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3003         {
3004          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3005          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3006          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3007          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3008         {
3009          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3010          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3011          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3012          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3013         {
3014          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3015          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
3016          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3017          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3018         {
3019          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3020          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
3021          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3022          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3023         {
3024          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3025          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3026          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3027          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3028         {
3029          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3030          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3031          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3032          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3033         {
3034          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3035          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3036          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3037          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3038         {
3039          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3040          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3041          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3042          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3043         {
3044          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3045          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3046          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3047          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3048         {
3049          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3050          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3051          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3052          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3053         {
3054          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3055          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3056          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3057          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3058         {
3059          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3060          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3061          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3062          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3063         {
3064          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3065          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3066          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3067          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3068         {
3069          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3070          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3071          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3072          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3073         {
3074          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3075          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3076          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3077          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3078         {
3079          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3080          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3081          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3082          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3083         {
3084          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3085          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3086          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3087          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3088         {
3089          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3090          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3091          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3092          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3093         {
3094          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3095          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3096          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3097          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3098         {
3099          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3100          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3101          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3102          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3103         {
3104          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3105          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3106          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3107          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3108         {
3109          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3110          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3111          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3112          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3113         {
3114          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3115          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3116          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3117          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3118         {
3119          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3120          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3121          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3122          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3123         {
3124          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3125          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3126          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3127          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3128         {
3129          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3130          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3131          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3132          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3133         {
3134          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3135          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3136          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3137          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3138         {
3139          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3140          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3141          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3142          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3143         {
3144          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3145          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3146          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3147          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3148         {
3149          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3150          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3151          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3152          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3153         {
3154          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3155          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3156          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3157          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3158         {
3159          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3160          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3161          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3162          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3163         {
3164          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3165          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3166          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3167          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3168         {
3169          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3170          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3171          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3172          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3173         {
3174          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3175          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3176          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3177          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3178         {
3179          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3180          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3181          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3182          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3183         {
3184          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3185          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3186          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3187          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3188         {
3189          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3190          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3191          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3192          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3193         {
3194          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3195          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3196          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3197          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3198         {
3199          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3200          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3201          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3202          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3203         {
3204          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3205          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3206          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3207          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3208         {
3209          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3210          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3211          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3212          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3213         {
3214          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3215          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3216          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3217          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3218         {
3219          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3220          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3221          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3222          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3223         {
3224          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3225          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3226          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3227          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3228         {
3229          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3230          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3231          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3232          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3233         {
3234          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3235          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3236          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3237          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3238         {
3239          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3240          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3241          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3242          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3243         {
3244          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3245          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3246          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3247          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3248         {
3249          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3250          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3251          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3252          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3253         {
3254          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3255          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3256          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3257          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3258         {
3259          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3260          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3261          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3262          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3263         {
3264          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3265          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3266          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3267          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3268         {
3269          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3270          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3271          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3272          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3273         {
3274          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3275          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3276          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3277          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3278         {
3279          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3280          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3281          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3282          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3283         {
3284          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3285          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3286          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3287          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3288         {
3289          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3290          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3291          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3292          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3293         {
3294          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3295          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3296          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3297          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3298         {
3299          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3300          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3301          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3302          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3303         {
3304          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3305          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3306          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3307          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3308         {
3309          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3310          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3311          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3312          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3313         {
3314          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3315          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3316          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3317          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3318         {
3319          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3320          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3321          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3322          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3323         {
3324          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3325          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3326          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3327          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3328         {
3329          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3330          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3331          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3332          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3333         {
3334          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3335          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3336          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3337          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3338         {
3339          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3340          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3341          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3342          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3343         {
3344          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3345          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3346          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3347          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3348         {
3349          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3350          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3351          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3352          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3353         {
3354          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3355          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3356          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3357          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3358         {
3359          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3360          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3361          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3362          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3363         {
3364          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3365          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3366          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3367          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3368         {
3369          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3370          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3371          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3372          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3373         {
3374          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3375          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3376          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3377          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3378         {
3379          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3380          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3381          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3382          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3383         {
3384          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3385          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3386          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3387          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3388         {
3389          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3390          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3391          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3392          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3393         {
3394          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3395          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3396          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3397          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3398         {
3399          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3400          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3401          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3402          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3403         {
3404          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3405          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3406          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3407          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3408         {
3409          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3410          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3411          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3412          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3413         {
3414          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3415          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3416          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3417          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3418         {
3419          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3420          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3421          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3422          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3423         {
3424          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3425          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3426          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3427          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3428         {
3429          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3430          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3431          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3432          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3433         {
3434          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3435          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3436          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3437          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3438 };
3439
3440 static const struct chan_info_nphy_radio205x chan_info_nphyrev5n6_2056v7[] = {
3441         {
3442          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3443          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3444          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3445          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3446         {
3447          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3448          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3449          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3450          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3451         {
3452          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3453          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3454          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3455          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3456         {
3457          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3458          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3459          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3460          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3461         {
3462          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3463          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3464          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3465          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3466         {
3467          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3468          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3469          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3470          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3471         {
3472          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3473          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3474          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3475          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3476         {
3477          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3478          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3479          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3480          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3481         {
3482          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3483          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3484          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3485          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3486         {
3487          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3488          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3489          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3490          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3491         {
3492          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3493          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3494          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3495          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3496         {
3497          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3498          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3499          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3500          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3501         {
3502          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3503          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3504          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3505          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3506         {
3507          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3508          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3509          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3510          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3511         {
3512          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3513          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3514          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3515          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3516         {
3517          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3518          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3519          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3520          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3521         {
3522          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3523          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3524          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3525          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3526         {
3527          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3528          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3529          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3530          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3531         {
3532          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3533          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3534          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3535          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3536         {
3537          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3538          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3539          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3540          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3541         {
3542          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3543          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3544          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3545          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3546         {
3547          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3548          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3549          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3550          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3551         {
3552          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3553          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3554          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3555          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3556         {
3557          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3558          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3559          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3560          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3561         {
3562          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3563          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3564          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3565          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3566         {
3567          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3568          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3569          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3570          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3571         {
3572          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3573          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3574          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3575          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3576         {
3577          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3578          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3579          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3580          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3581         {
3582          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3583          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3584          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3585          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3586         {
3587          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3588          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3589          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3590          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3591         {
3592          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3593          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3594          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3595          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3596         {
3597          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3598          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3599          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3600          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3601         {
3602          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3603          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3604          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3605          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3606         {
3607          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3608          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3609          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3610          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3611         {
3612          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3613          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3614          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3615          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3616         {
3617          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3618          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3619          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3620          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3621         {
3622          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3623          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3624          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3625          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3626         {
3627          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3628          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3629          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3630          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3631         {
3632          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3633          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3634          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3635          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3636         {
3637          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3638          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3639          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3640          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3641         {
3642          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3643          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3644          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3645          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3646         {
3647          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3648          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3649          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3650          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3651         {
3652          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3653          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3654          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3655          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3656         {
3657          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3658          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3659          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3660          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3661         {
3662          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3663          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3664          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3665          0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3666         {
3667          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3668          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3669          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3670          0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3671         {
3672          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3673          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3674          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3675          0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3676         {
3677          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3678          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3679          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3680          0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3681         {
3682          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3683          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3684          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3685          0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3686         {
3687          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3688          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3689          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3690          0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3691         {
3692          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3693          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3694          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3695          0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3696         {
3697          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3698          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3699          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3700          0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3701         {
3702          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3703          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3704          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3705          0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3706         {
3707          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3708          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3709          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3710          0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3711         {
3712          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3713          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3714          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3715          0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3716         {
3717          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3718          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3719          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3720          0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3721         {
3722          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3723          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3724          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3725          0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3726         {
3727          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3728          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3729          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3730          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3731         {
3732          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3733          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3734          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3735          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3736         {
3737          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3738          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3739          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3740          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3741         {
3742          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3743          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3744          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3745          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3746         {
3747          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3748          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3749          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3750          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3751         {
3752          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3753          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3754          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3755          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3756         {
3757          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3758          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3759          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3760          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3761         {
3762          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3763          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3764          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3765          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3766         {
3767          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3768          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3769          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3770          0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3771         {
3772          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3773          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3774          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3775          0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3776         {
3777          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3778          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3779          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3780          0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3781         {
3782          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3783          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3784          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3785          0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3786         {
3787          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3788          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3789          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3790          0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3791         {
3792          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3793          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3794          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3795          0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3796         {
3797          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3798          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3799          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3800          0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3801         {
3802          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3803          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3804          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3805          0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3806         {
3807          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3808          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3809          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3810          0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3811         {
3812          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3813          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3814          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3815          0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3816         {
3817          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3818          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3819          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3820          0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3821         {
3822          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3823          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3824          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3825          0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3826         {
3827          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3828          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3829          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3830          0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3831         {
3832          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3833          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3834          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3835          0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3836         {
3837          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3838          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3839          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3840          0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3841         {
3842          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3843          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3844          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3845          0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3846         {
3847          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3848          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3849          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3850          0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3851         {
3852          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3853          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3854          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3855          0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3856         {
3857          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3858          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3859          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3860          0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3861         {
3862          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3863          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3864          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3865          0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3866         {
3867          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3868          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3869          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3870          0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3871         {
3872          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3873          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3874          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3875          0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3876         {
3877          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3878          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3879          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3880          0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3881         {
3882          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3883          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3884          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3885          0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3886         {
3887          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3888          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3889          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3890          0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3891         {
3892          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3893          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3894          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3895          0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3896         {
3897          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3898          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3899          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3900          0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3901         {
3902          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3903          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3904          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3905          0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3906         {
3907          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3908          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3909          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3910          0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3911         {
3912          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3913          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3914          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3915          0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3916         {
3917          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3918          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3919          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3920          0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3921         {
3922          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3923          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3924          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3925          0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3926         {
3927          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3928          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3929          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3930          0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3931         {
3932          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3933          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3934          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3935          0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3936         {
3937          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3938          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3939          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3940          0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3941         {
3942          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3943          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3944          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3945          0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3946         {
3947          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3948          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3949          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3950          0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3951         {
3952          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3953          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3954          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3955          0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3956         {
3957          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3958          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3959          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3960          0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3961         {
3962          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3963          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3964          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3965          0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3966         {
3967          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3968          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3969          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3970          0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3971         {
3972          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3973          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3974          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3975          0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3976         {
3977          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3978          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3979          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3980          0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3981         {
3982          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3983          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3984          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3985          0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3986         {
3987          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3988          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3989          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3990          0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3991         {
3992          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3993          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3994          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3995          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3996         {
3997          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3998          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3999          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4000          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4001         {
4002          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4003          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
4004          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4005          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4006         {
4007          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4008          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4009          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4010          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4011         {
4012          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4013          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
4014          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4015          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4016         {
4017          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4018          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
4019          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4020          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4021         {
4022          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4023          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
4024          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
4025          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4026         {
4027          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4028          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4029          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4030          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4031         {
4032          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4033          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4034          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4035          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4036         {
4037          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4038          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4039          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4040          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4041         {
4042          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4043          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4044          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4045          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4046         {
4047          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4048          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4049          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4050          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4051         {
4052          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4053          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4054          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4055          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4056         {
4057          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4058          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4059          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4060          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4061 };
4062
4063 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v8[] = {
4064         {
4065          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4066          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4067          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4068          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4069         {
4070          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4071          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4072          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4073          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4074         {
4075          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4076          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4077          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4078          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4079         {
4080          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4081          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4082          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4083          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4084         {
4085          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4086          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4087          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4088          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4089         {
4090          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4091          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4092          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4093          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4094         {
4095          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4096          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4097          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4098          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4099         {
4100          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4101          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4102          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4103          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4104         {
4105          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4106          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4107          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4108          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4109         {
4110          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4111          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4112          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4113          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4114         {
4115          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4116          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4117          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4118          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4119         {
4120          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4121          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4122          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4123          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4124         {
4125          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4126          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4127          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4128          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4129         {
4130          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4131          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4132          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4133          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4134         {
4135          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4136          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4137          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4138          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4139         {
4140          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4141          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4142          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4143          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4144         {
4145          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4146          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4147          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4148          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4149         {
4150          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4151          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4152          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4153          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4154         {
4155          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4156          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4157          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4158          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4159         {
4160          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4161          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4162          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4163          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4164         {
4165          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4166          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4167          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4168          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4169         {
4170          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4171          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4172          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4173          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4174         {
4175          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4176          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4177          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4178          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4179         {
4180          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4181          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4182          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4183          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4184         {
4185          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4186          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4187          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4188          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4189         {
4190          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4191          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4192          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4193          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4194         {
4195          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4196          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4197          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4198          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4199         {
4200          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4201          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4202          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4203          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4204         {
4205          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4206          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4207          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4208          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4209         {
4210          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4211          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4212          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4213          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4214         {
4215          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4216          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4217          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4218          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4219         {
4220          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4221          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4222          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4223          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4224         {
4225          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4226          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4227          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4228          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4229         {
4230          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4231          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4232          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4233          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4234         {
4235          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4236          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4237          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4238          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4239         {
4240          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4241          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4242          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4243          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4244         {
4245          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4246          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4247          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4248          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4249         {
4250          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4251          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4252          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4253          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4254         {
4255          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4256          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4257          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4258          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4259         {
4260          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4261          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4262          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4263          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4264         {
4265          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4266          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4267          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4268          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4269         {
4270          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4271          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4272          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4273          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4274         {
4275          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4276          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4277          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4278          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4279         {
4280          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4281          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4282          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4283          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4284         {
4285          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4286          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4287          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4288          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4289         {
4290          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4291          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4292          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4293          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4294         {
4295          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4296          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4297          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4298          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4299         {
4300          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4301          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4302          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4303          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4304         {
4305          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4306          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4307          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4308          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4309         {
4310          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4311          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4312          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4313          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4314         {
4315          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4316          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4317          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4318          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4319         {
4320          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4321          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4322          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4323          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4324         {
4325          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4326          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4327          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4328          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4329         {
4330          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4331          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4332          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4333          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4334         {
4335          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4336          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4337          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4338          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4339         {
4340          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4341          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4342          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4343          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4344         {
4345          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4346          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4347          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4348          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4349         {
4350          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4351          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4352          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4353          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4354         {
4355          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4356          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4357          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4358          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4359         {
4360          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4361          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4362          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4363          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4364         {
4365          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4366          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4367          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4368          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4369         {
4370          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4371          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4372          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4373          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4374         {
4375          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4376          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4377          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4378          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4379         {
4380          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4381          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4382          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4383          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4384         {
4385          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4386          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4387          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4388          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4389         {
4390          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4391          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4392          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4393          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4394         {
4395          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4396          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4397          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4398          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4399         {
4400          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4401          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4402          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4403          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4404         {
4405          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4406          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4407          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4408          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4409         {
4410          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4411          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4412          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4413          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4414         {
4415          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4416          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4417          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4418          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4419         {
4420          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4421          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4422          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4423          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4424         {
4425          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4426          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4427          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4428          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4429         {
4430          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4431          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4432          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4433          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4434         {
4435          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4436          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4437          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4438          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4439         {
4440          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4441          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4442          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4443          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4444         {
4445          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4446          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4447          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4448          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4449         {
4450          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4451          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4452          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4453          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4454         {
4455          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4456          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4457          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4458          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4459         {
4460          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4461          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4462          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4463          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4464         {
4465          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4466          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4467          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4468          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4469         {
4470          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4471          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4472          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4473          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4474         {
4475          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4476          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4477          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4478          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4479         {
4480          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4481          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4482          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4483          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4484         {
4485          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4486          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4487          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4488          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4489         {
4490          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4491          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4492          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4493          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4494         {
4495          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4496          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4497          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4498          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4499         {
4500          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4501          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4502          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4503          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4504         {
4505          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4506          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4507          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4508          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4509         {
4510          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4511          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4512          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4513          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4514         {
4515          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4516          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4517          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4518          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4519         {
4520          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4521          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4522          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4523          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4524         {
4525          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4526          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4527          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4528          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4529         {
4530          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4531          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4532          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4533          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4534         {
4535          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4536          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4537          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4538          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4539         {
4540          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4541          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4542          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4543          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4544         {
4545          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4546          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4547          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4548          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4549         {
4550          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4551          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4552          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4553          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4554         {
4555          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4556          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4557          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4558          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4559         {
4560          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4561          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4562          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4563          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4564         {
4565          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4566          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4567          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4568          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4569         {
4570          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4571          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4572          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4573          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4574         {
4575          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4576          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4577          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4578          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4579         {
4580          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4581          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4582          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4583          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4584         {
4585          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4586          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4587          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4588          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4589         {
4590          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4591          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4592          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4593          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4594         {
4595          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4596          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4597          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4598          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4599         {
4600          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4601          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4602          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4603          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4604         {
4605          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4606          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4607          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4608          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4609         {
4610          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4611          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4612          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4613          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4614         {
4615          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4616          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4617          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4618          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4619         {
4620          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4621          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4622          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4623          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4624         {
4625          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4626          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4627          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4628          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4629         {
4630          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4631          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4632          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4633          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4634         {
4635          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4636          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4637          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4638          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4639         {
4640          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4641          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4642          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4643          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4644         {
4645          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4646          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4647          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4648          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4649         {
4650          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4651          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4652          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4653          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4654         {
4655          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4656          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4657          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4658          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4659         {
4660          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4661          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4662          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4663          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4664         {
4665          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4666          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4667          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4668          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4669         {
4670          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4671          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4672          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4673          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4674         {
4675          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4676          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4677          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4678          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4679         {
4680          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4681          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4682          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4683          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4684 };
4685
4686 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v11[] = {
4687         {
4688          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4689          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4690          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4691          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4692         {
4693          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4694          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4695          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4696          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4697         {
4698          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4699          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4700          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4701          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4702         {
4703          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4704          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4705          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4706          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4707         {
4708          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4709          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4710          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4711          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4712         {
4713          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4714          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4715          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4716          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4717         {
4718          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4719          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4720          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4721          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4722         {
4723          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4724          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4725          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4726          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4727         {
4728          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4729          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4730          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4731          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4732         {
4733          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4734          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4735          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4736          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4737         {
4738          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4739          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4740          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4741          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4742         {
4743          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4744          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4745          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4746          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4747         {
4748          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4749          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4750          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4751          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4752         {
4753          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4754          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4755          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4756          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4757         {
4758          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4759          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4760          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4761          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4762         {
4763          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4764          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4765          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4766          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4767         {
4768          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4769          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4770          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4771          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4772         {
4773          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4774          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4775          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4776          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4777         {
4778          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4779          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4780          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4781          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4782         {
4783          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4784          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4785          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4786          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4787         {
4788          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4789          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4790          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4791          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4792         {
4793          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4794          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4795          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4796          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4797         {
4798          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4799          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4800          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4801          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4802         {
4803          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4804          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4805          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4806          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4807         {
4808          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4809          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4810          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4811          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4812         {
4813          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4814          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4815          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4816          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4817         {
4818          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4819          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4820          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4821          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4822         {
4823          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4824          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4825          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4826          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4827         {
4828          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4829          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4830          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4831          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4832         {
4833          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4834          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4835          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4836          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4837         {
4838          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4839          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4840          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4841          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4842         {
4843          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4844          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4845          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4846          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4847         {
4848          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4849          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4850          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4851          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4852         {
4853          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4854          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4855          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4856          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4857         {
4858          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4859          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4860          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4861          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4862         {
4863          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4864          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4865          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4866          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4867         {
4868          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4869          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4870          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4871          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4872         {
4873          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4874          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4875          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4876          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4877         {
4878          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4879          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4880          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4881          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4882         {
4883          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4884          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4885          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4886          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4887         {
4888          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4889          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4890          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4891          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4892         {
4893          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4894          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4895          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4896          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4897         {
4898          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4899          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4900          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4901          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4902         {
4903          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4904          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4905          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4906          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4907         {
4908          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4909          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4910          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4911          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4912         {
4913          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4914          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4915          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4916          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4917         {
4918          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4919          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4920          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4921          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4922         {
4923          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4924          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4925          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4926          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4927         {
4928          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4929          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4930          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4931          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4932         {
4933          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4934          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4935          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4936          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4937         {
4938          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4939          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4940          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4941          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4942         {
4943          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4944          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4945          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4946          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4947         {
4948          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4949          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4950          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4951          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4952         {
4953          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4954          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4955          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4956          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4957         {
4958          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4959          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4960          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4961          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4962         {
4963          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4964          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4965          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4966          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4967         {
4968          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4969          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4970          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4971          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4972         {
4973          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4974          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4975          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4976          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4977         {
4978          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4979          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4980          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4981          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4982         {
4983          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4984          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4985          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4986          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4987         {
4988          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4989          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4990          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4991          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4992         {
4993          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4994          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4995          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4996          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4997         {
4998          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4999          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5000          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5001          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
5002         {
5003          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5004          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5005          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5006          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
5007         {
5008          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5009          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
5010          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5011          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
5012         {
5013          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5014          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
5015          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5016          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
5017         {
5018          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5019          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
5020          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5021          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
5022         {
5023          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
5024          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5025          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5026          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
5027         {
5028          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5029          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5030          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5031          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5032         {
5033          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5034          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5035          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5036          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5037         {
5038          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5039          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5040          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5041          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5042         {
5043          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5044          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5045          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5046          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5047         {
5048          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5049          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5050          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5051          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5052         {
5053          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5054          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5055          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5056          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5057         {
5058          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5059          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5060          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5061          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5062         {
5063          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5064          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5065          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5066          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5067         {
5068          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5069          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5070          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5071          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5072         {
5073          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5074          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5075          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5076          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5077         {
5078          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5079          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5080          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5081          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5082         {
5083          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5084          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5085          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5086          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5087         {
5088          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5089          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5090          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5091          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5092         {
5093          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5094          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5095          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5096          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5097         {
5098          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5099          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5100          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5101          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5102         {
5103          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5104          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5105          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5106          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5107         {
5108          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5109          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5110          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5111          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5112         {
5113          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5114          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5115          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5116          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5117         {
5118          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5119          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5120          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5121          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5122         {
5123          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5124          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5125          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5126          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5127         {
5128          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5129          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5130          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5131          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5132         {
5133          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5134          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5135          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5136          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5137         {
5138          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5139          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5140          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5141          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5142         {
5143          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5144          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5145          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5146          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5147         {
5148          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5149          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5150          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5151          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5152         {
5153          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5154          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5155          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5156          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5157         {
5158          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5159          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5160          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5161          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5162         {
5163          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5164          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5165          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5166          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5167         {
5168          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5169          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5170          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5171          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5172         {
5173          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5174          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5175          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5176          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5177         {
5178          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5179          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5180          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5181          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5182         {
5183          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5184          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5185          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5186          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5187         {
5188          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5189          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5190          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5191          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5192         {
5193          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5194          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5195          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5196          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5197         {
5198          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5199          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5200          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5201          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5202         {
5203          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5204          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5205          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5206          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5207         {
5208          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5209          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5210          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5211          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5212         {
5213          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5214          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5215          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5216          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5217         {
5218          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5219          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5220          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5221          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5222         {
5223          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5224          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5225          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5226          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5227         {
5228          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5229          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5230          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5231          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5232         {
5233          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5234          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5235          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5236          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5237         {
5238          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5239          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5240          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5241          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5242         {
5243          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5244          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5245          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5246          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5247         {
5248          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5249          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5250          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5251          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5252         {
5253          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5254          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5255          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5256          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5257         {
5258          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5259          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5260          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5261          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5262         {
5263          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5264          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5265          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5266          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5267         {
5268          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5269          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5270          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5271          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5272         {
5273          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5274          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5275          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5276          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5277         {
5278          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5279          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5280          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5281          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5282         {
5283          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5284          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5285          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5286          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5287         {
5288          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5289          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5290          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5291          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5292         {
5293          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5294          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5295          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5296          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5297         {
5298          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5299          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5300          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5301          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5302         {
5303          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5304          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5305          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5306          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5307 };
5308
5309 static const struct chan_info_nphy_radio2057 chan_info_nphyrev7_2057_rev4[] = {
5310         {
5311          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5312          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5313          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5314          0x0215,
5315          0x0216,
5316          },
5317         {
5318          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5319          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5320          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5321          0x0214,
5322          0x0215,
5323          },
5324         {
5325          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5326          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5327          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5328          0x0213,
5329          0x0214,
5330          },
5331         {
5332          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5333          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5334          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5335          0x0212,
5336          0x0213,
5337          },
5338         {
5339          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5340          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5341          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5342          0x0211,
5343          0x0212,
5344          },
5345         {
5346          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5347          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5348          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5349          0x020f,
5350          0x0211,
5351          },
5352         {
5353          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5354          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5355          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5356          0x020e,
5357          0x020f,
5358          },
5359         {
5360          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5361          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5362          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5363          0x020d,
5364          0x020e,
5365          },
5366         {
5367          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5368          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5369          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5370          0x020c,
5371          0x020d,
5372          },
5373         {
5374          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5375          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5376          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5377          0x020b,
5378          0x020c,
5379          },
5380         {
5381          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5382          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5383          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5384          0x020a,
5385          0x020b,
5386          },
5387         {
5388          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5389          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5390          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5391          0x0209,
5392          0x020a,
5393          },
5394         {
5395          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5396          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5397          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5398          0x0208,
5399          0x0209,
5400          },
5401         {
5402          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5403          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5404          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5405          0x0207,
5406          0x0208,
5407          },
5408         {
5409          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5410          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5411          0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5412          0x0206,
5413          0x0207,
5414          },
5415         {
5416          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5417          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5418          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5419          0x0205,
5420          0x0206,
5421          },
5422         {
5423          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5424          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5425          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5426          0x0204,
5427          0x0205,
5428          },
5429         {
5430          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5431          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5432          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5433          0x0203,
5434          0x0204,
5435          },
5436         {
5437          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5438          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5439          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5440          0x0202,
5441          0x0203,
5442          },
5443         {
5444          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5445          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5446          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5447          0x0201,
5448          0x0202,
5449          },
5450         {
5451          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5452          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5453          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5454          0x0200,
5455          0x0201,
5456          },
5457         {
5458          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5459          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5460          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5461          0x01ff,
5462          0x0200,
5463          },
5464         {
5465          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5466          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5467          0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5468          0x01fe,
5469          0x01ff,
5470          },
5471         {
5472          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5473          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5474          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5475          0x01fc,
5476          0x01fd,
5477          },
5478         {
5479          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5480          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5481          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5482          0x01fb,
5483          0x01fc,
5484          },
5485         {
5486          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5487          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5488          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5489          0x01fa,
5490          0x01fb,
5491          },
5492         {
5493          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5494          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5495          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5496          0x01f9,
5497          0x01fa,
5498          },
5499         {
5500          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5501          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5502          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5503          0x01f8,
5504          0x01f9,
5505          },
5506         {
5507          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5508          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5509          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5510          0x01f7,
5511          0x01f8,
5512          },
5513         {
5514          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5515          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5516          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5517          0x01f6,
5518          0x01f7,
5519          },
5520         {
5521          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5522          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5523          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5524          0x01f5,
5525          0x01f6,
5526          },
5527         {
5528          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5529          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5530          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5531          0x01f4,
5532          0x01f5,
5533          },
5534         {
5535          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5536          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5537          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5538          0x01f3,
5539          0x01f4,
5540          },
5541         {
5542          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5543          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5544          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5545          0x01f2,
5546          0x01f3,
5547          },
5548         {
5549          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5550          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5551          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5552          0x01f1,
5553          0x01f2,
5554          },
5555         {
5556          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5557          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5558          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5559          0x01f0,
5560          0x01f1,
5561          },
5562         {
5563          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5564          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5565          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5566          0x01f0,
5567          0x01f0,
5568          },
5569         {
5570          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5571          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5572          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5573          0x01ef,
5574          0x01f0,
5575          },
5576         {
5577          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5578          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5579          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5580          0x01ee,
5581          0x01ef,
5582          },
5583         {
5584          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5585          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5586          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5587          0x01ed,
5588          0x01ee,
5589          },
5590         {
5591          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5592          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5593          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5594          0x01ec,
5595          0x01ed,
5596          },
5597         {
5598          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5599          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5600          0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5601          0x01eb,
5602          0x01ec,
5603          },
5604         {
5605          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5606          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5607          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5608          0x01ea,
5609          0x01eb,
5610          },
5611         {
5612          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5613          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5614          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5615          0x01e9,
5616          0x01ea,
5617          },
5618         {
5619          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5620          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5621          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5622          0x01e8,
5623          0x01e9,
5624          },
5625         {
5626          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5627          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5628          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5629          0x01e7,
5630          0x01e8,
5631          },
5632         {
5633          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5634          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5635          0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5636          0x01e6,
5637          0x01e7,
5638          },
5639         {
5640          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5641          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5642          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5643          0x01e5,
5644          0x01e6,
5645          },
5646         {
5647          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5648          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5649          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5650          0x01e5,
5651          0x01e5,
5652          },
5653         {
5654          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5655          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5656          0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5657          0x01e4,
5658          0x01e5,
5659          },
5660         {
5661          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5662          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5663          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5664          0x01e3,
5665          0x01e4,
5666          },
5667         {
5668          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5669          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5670          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5671          0x01e2,
5672          0x01e3,
5673          },
5674         {
5675          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5676          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5677          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5678          0x01e1,
5679          0x01e2,
5680          },
5681         {
5682          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5683          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5684          0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5685          0x01e0,
5686          0x01e1,
5687          },
5688         {
5689          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5690          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5691          0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5692          0x01df,
5693          0x01e0,
5694          },
5695         {
5696          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5697          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5698          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5699          0x01de,
5700          0x01df,
5701          },
5702         {
5703          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5704          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5705          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5706          0x01dd,
5707          0x01de,
5708          },
5709         {
5710          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5711          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5712          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5713          0x01dd,
5714          0x01dd,
5715          },
5716         {
5717          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5718          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5719          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5720          0x01dc,
5721          0x01dd,
5722          },
5723         {
5724          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5725          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5726          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5727          0x01db,
5728          0x01dc,
5729          },
5730         {
5731          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5732          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5733          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5734          0x01da,
5735          0x01db,
5736          },
5737         {
5738          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5739          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5740          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5741          0x01d9,
5742          0x01da,
5743          },
5744         {
5745          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5746          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5747          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5748          0x01d8,
5749          0x01d9,
5750          },
5751         {
5752          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5753          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5754          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5755          0x01d7,
5756          0x01d8,
5757          },
5758         {
5759          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5760          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5761          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5762          0x01d7,
5763          0x01d7,
5764          },
5765         {
5766          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5767          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5768          0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5769          0x01d6,
5770          0x01d7,
5771          },
5772         {
5773          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5774          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5775          0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5776          0x01d5,
5777          0x01d6,
5778          },
5779         {
5780          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5781          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5782          0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5783          0x01d4,
5784          0x01d5,
5785          },
5786         {
5787          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5788          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5789          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5790          0x01d3,
5791          0x01d4,
5792          },
5793         {
5794          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5795          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5796          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5797          0x01d2,
5798          0x01d3,
5799          },
5800         {
5801          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5802          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5803          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5804          0x01d2,
5805          0x01d2,
5806          },
5807         {
5808          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5809          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5810          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5811          0x01d1,
5812          0x01d2,
5813          },
5814         {
5815          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5816          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5817          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5818          0x01d0,
5819          0x01d1,
5820          },
5821         {
5822          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5823          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5824          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5825          0x01cf,
5826          0x01d0,
5827          },
5828         {
5829          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5830          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5831          0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5832          0x01ce,
5833          0x01cf,
5834          },
5835         {
5836          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5837          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5838          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5839          0x01ce,
5840          0x01ce,
5841          },
5842         {
5843          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5844          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5845          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5846          0x01cd,
5847          0x01ce,
5848          },
5849         {
5850          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5851          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5852          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5853          0x01cc,
5854          0x01cd,
5855          },
5856         {
5857          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5858          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5859          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5860          0x01cb,
5861          0x01cc,
5862          },
5863         {
5864          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5865          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5866          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5867          0x01ca,
5868          0x01cb,
5869          },
5870         {
5871          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5872          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5873          0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5874          0x01ca,
5875          0x01cb,
5876          },
5877         {
5878          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5879          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5880          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5881          0x01c9,
5882          0x01ca,
5883          },
5884         {
5885          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5886          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5887          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5888          0x01c9,
5889          0x01ca,
5890          },
5891         {
5892          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5893          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5894          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5895          0x01c9,
5896          0x01c9,
5897          },
5898         {
5899          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5900          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5901          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5902          0x01c8,
5903          0x01c9,
5904          },
5905         {
5906          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5907          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5908          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5909          0x01c8,
5910          0x01c9,
5911          },
5912         {
5913          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5914          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5915          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5916          0x01c8,
5917          0x01c8,
5918          },
5919         {
5920          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5921          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5922          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5923          0x01c7,
5924          0x01c8,
5925          },
5926         {
5927          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5928          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5929          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5930          0x01c7,
5931          0x01c8,
5932          },
5933         {
5934          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5935          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5936          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5937          0x01c6,
5938          0x01c7,
5939          },
5940         {
5941          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5942          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5943          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5944          0x01c6,
5945          0x01c7,
5946          },
5947         {
5948          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5949          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5950          0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5951          0x01c6,
5952          0x01c6,
5953          },
5954         {
5955          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5956          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5957          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5958          0x01c5,
5959          0x01c6,
5960          },
5961         {
5962          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5963          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5964          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5965          0x01c5,
5966          0x01c6,
5967          },
5968         {
5969          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5970          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5971          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5972          0x01c4,
5973          0x01c5,
5974          },
5975         {
5976          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5977          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5978          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5979          0x01c4,
5980          0x01c5,
5981          },
5982         {
5983          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5984          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5985          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5986          0x01c4,
5987          0x01c4,
5988          },
5989         {
5990          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5991          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5992          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5993          0x01c3,
5994          0x01c4,
5995          },
5996         {
5997          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5998          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5999          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6000          0x01c3,
6001          0x01c4,
6002          },
6003         {
6004          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6005          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6006          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6007          0x01c2,
6008          0x01c3,
6009          },
6010         {
6011          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6012          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6013          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6014          0x01c2,
6015          0x01c3,
6016          },
6017         {
6018          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6019          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6020          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6021          0x01c2,
6022          0x01c2,
6023          },
6024         {
6025          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6026          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6027          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6028          0x01c1,
6029          0x01c2,
6030          },
6031         {
6032          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6033          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6034          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6035          0x01c0,
6036          0x01c1,
6037          },
6038         {
6039          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6040          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6041          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6042          0x01bf,
6043          0x01c0,
6044          },
6045         {
6046          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6047          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6048          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6049          0x01bf,
6050          0x01bf,
6051          },
6052         {
6053          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6054          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6055          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6056          0x01be,
6057          0x01bf,
6058          },
6059         {
6060          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6061          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6062          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6063          0x01bd,
6064          0x01be,
6065          },
6066         {
6067          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6068          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6069          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6070          0x01bc,
6071          0x01bd,
6072          },
6073         {
6074          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6075          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6076          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6077          0x043f,
6078          0x0443,
6079          },
6080         {
6081          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6082          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6083          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6084          0x043d,
6085          0x0441,
6086          },
6087         {
6088          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6089          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6090          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6091          0x043a,
6092          0x043f,
6093          },
6094         {
6095          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6096          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6097          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6098          0x0438,
6099          0x043d,
6100          },
6101         {
6102          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6103          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6104          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6105          0x0436,
6106          0x043a,
6107          },
6108         {
6109          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6110          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6111          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6112          0x0434,
6113          0x0438,
6114          },
6115         {
6116          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6117          0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6118          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6119          0x0431,
6120          0x0436,
6121          },
6122         {
6123          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6124          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6125          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6126          0x042f,
6127          0x0434,
6128          },
6129         {
6130          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6131          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6132          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6133          0x042d,
6134          0x0431,
6135          },
6136         {
6137          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6138          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6139          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6140          0x042b,
6141          0x042f,
6142          },
6143         {
6144          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6145          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6146          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6147          0x0429,
6148          0x042d,
6149          },
6150         {
6151          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6152          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6153          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6154          0x0427,
6155          0x042b,
6156          },
6157         {
6158          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6159          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6160          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6161          0x0424,
6162          0x0429,
6163          },
6164         {
6165          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6166          0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6167          0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6168          0x041f,
6169          0x0424}
6170 };
6171
6172 static const struct chan_info_nphy_radio2057_rev5
6173 chan_info_nphyrev8_2057_rev5[] = {
6174         {
6175          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6176          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6177          0x043a, 0x043f, 0x0443},
6178         {
6179          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6180          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6181          0x0438, 0x043d, 0x0441},
6182         {
6183          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6184          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6185          0x0436, 0x043a, 0x043f},
6186         {
6187          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6188          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6189          0x0434, 0x0438, 0x043d},
6190         {
6191          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6192          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6193          0x0431, 0x0436, 0x043a},
6194         {
6195          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6196          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6197          0x042f, 0x0434, 0x0438},
6198         {
6199          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6200          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6201          0x042d, 0x0431, 0x0436},
6202         {
6203          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6204          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6205          0x042b, 0x042f, 0x0434},
6206         {
6207          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6208          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6209          0x0429, 0x042d, 0x0431},
6210         {
6211          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6212          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6213          0x0427, 0x042b, 0x042f},
6214         {
6215          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6216          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6217          0x0424, 0x0429, 0x042d},
6218         {
6219          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6220          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6221          0x0422, 0x0427, 0x042b},
6222         {
6223          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6224          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6225          0x0420, 0x0424, 0x0429},
6226         {
6227          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6228          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6229          0x041b, 0x041f, 0x0424}
6230 };
6231
6232 static const struct chan_info_nphy_radio2057_rev5
6233 chan_info_nphyrev9_2057_rev5v1[] = {
6234         {
6235          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6236          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6237          0x043a, 0x043f, 0x0443},
6238         {
6239          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6240          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6241          0x0438, 0x043d, 0x0441},
6242         {
6243          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6244          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6245          0x0436, 0x043a, 0x043f},
6246         {
6247          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6248          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6249          0x0434, 0x0438, 0x043d},
6250         {
6251          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6252          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6253          0x0431, 0x0436, 0x043a},
6254         {
6255          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6256          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6257          0x042f, 0x0434, 0x0438},
6258         {
6259          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6260          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6261          0x042d, 0x0431, 0x0436},
6262         {
6263          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6264          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6265          0x042b, 0x042f, 0x0434},
6266         {
6267          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6268          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6269          0x0429, 0x042d, 0x0431},
6270         {
6271          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6272          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6273          0x0427, 0x042b, 0x042f},
6274         {
6275          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6276          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6277          0x0424, 0x0429, 0x042d},
6278         {
6279          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6280          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6281          0x0422, 0x0427, 0x042b},
6282         {
6283          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6284          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6285          0x0420, 0x0424, 0x0429},
6286         {
6287          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6288          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6289          0x041b, 0x041f, 0x0424}
6290 };
6291
6292 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev7[] = {
6293         {
6294          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6295          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6296          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6297          0x0215,
6298          0x0216},
6299         {
6300          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6301          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6302          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6303          0x0214,
6304          0x0215},
6305         {
6306          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6307          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6308          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6309          0x0213,
6310          0x0214},
6311         {
6312          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6313          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6314          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6315          0x0212,
6316          0x0213},
6317         {
6318          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6319          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6320          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6321          0x0211,
6322          0x0212},
6323         {
6324          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6325          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6326          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6327          0x020f,
6328          0x0211},
6329         {
6330          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6331          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6332          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6333          0x020e,
6334          0x020f},
6335         {
6336          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6337          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6338          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6339          0x020d,
6340          0x020e},
6341         {
6342          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6343          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6344          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6345          0x020c,
6346          0x020d},
6347         {
6348          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6349          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6350          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6351          0x020b,
6352          0x020c},
6353         {
6354          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6355          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6356          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6357          0x020a,
6358          0x020b},
6359         {
6360          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6361          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6362          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6363          0x0209,
6364          0x020a},
6365         {
6366          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6367          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6368          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6369          0x0208,
6370          0x0209},
6371         {
6372          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6373          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6374          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6375          0x0207,
6376          0x0208},
6377         {
6378          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6379          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6380          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6381          0x0206,
6382          0x0207},
6383         {
6384          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6385          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6386          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6387          0x0205,
6388          0x0206},
6389         {
6390          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6391          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6392          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6393          0x0204,
6394          0x0205},
6395         {
6396          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6397          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6398          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6399          0x0203,
6400          0x0204},
6401         {
6402          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6403          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6404          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6405          0x0202,
6406          0x0203},
6407         {
6408          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6409          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6410          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6411          0x0201,
6412          0x0202},
6413         {
6414          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6415          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6416          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6417          0x0200,
6418          0x0201},
6419         {
6420          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6421          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6422          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6423          0x01ff,
6424          0x0200},
6425         {
6426          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6427          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6428          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6429          0x01fe,
6430          0x01ff},
6431         {
6432          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6433          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6434          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6435          0x01fc,
6436          0x01fd},
6437         {
6438          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6439          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6440          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6441          0x01fb,
6442          0x01fc},
6443         {
6444          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6445          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6446          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6447          0x01fa,
6448          0x01fb},
6449         {
6450          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6451          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6452          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6453          0x01f9,
6454          0x01fa},
6455         {
6456          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6457          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6458          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6459          0x01f8,
6460          0x01f9},
6461         {
6462          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6463          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6464          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6465          0x01f7,
6466          0x01f8},
6467         {
6468          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6469          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6470          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6471          0x01f6,
6472          0x01f7},
6473         {
6474          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6475          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6476          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6477          0x01f5,
6478          0x01f6},
6479         {
6480          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6481          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6482          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6483          0x01f4,
6484          0x01f5},
6485         {
6486          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6487          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6488          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6489          0x01f3,
6490          0x01f4},
6491         {
6492          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6493          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6494          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6495          0x01f2,
6496          0x01f3},
6497         {
6498          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6499          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6500          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6501          0x01f1,
6502          0x01f2},
6503         {
6504          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6505          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6506          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6507          0x01f0,
6508          0x01f1},
6509         {
6510          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6511          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6512          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6513          0x01f0,
6514          0x01f0},
6515         {
6516          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6517          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6518          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6519          0x01ef,
6520          0x01f0},
6521         {
6522          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6523          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6524          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6525          0x01ee,
6526          0x01ef},
6527         {
6528          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6529          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6530          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6531          0x01ed,
6532          0x01ee},
6533         {
6534          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6535          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6536          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6537          0x01ec,
6538          0x01ed},
6539         {
6540          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6541          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6542          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6543          0x01eb,
6544          0x01ec},
6545         {
6546          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6547          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6548          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6549          0x01ea,
6550          0x01eb},
6551         {
6552          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6553          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6554          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6555          0x01e9,
6556          0x01ea},
6557         {
6558          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6559          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6560          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6561          0x01e8,
6562          0x01e9},
6563         {
6564          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6565          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6566          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6567          0x01e7,
6568          0x01e8},
6569         {
6570          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6571          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6572          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6573          0x01e6,
6574          0x01e7},
6575         {
6576          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6577          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6578          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6579          0x01e5,
6580          0x01e6},
6581         {
6582          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6583          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6584          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6585          0x01e5,
6586          0x01e5},
6587         {
6588          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6589          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6590          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6591          0x01e4,
6592          0x01e5},
6593         {
6594          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6595          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6596          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6597          0x01e3,
6598          0x01e4},
6599         {
6600          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6601          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6602          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6603          0x01e2,
6604          0x01e3},
6605         {
6606          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6607          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6608          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6609          0x01e1,
6610          0x01e2},
6611         {
6612          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6613          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6614          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6615          0x01e0,
6616          0x01e1},
6617         {
6618          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6619          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6620          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6621          0x01df,
6622          0x01e0},
6623         {
6624          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6625          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6626          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6627          0x01de,
6628          0x01df},
6629         {
6630          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6631          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6632          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6633          0x01dd,
6634          0x01de},
6635         {
6636          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6637          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6638          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6639          0x01dd,
6640          0x01dd},
6641         {
6642          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6643          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6644          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6645          0x01dc,
6646          0x01dd},
6647         {
6648          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6649          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6650          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6651          0x01db,
6652          0x01dc},
6653         {
6654          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6655          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6656          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6657          0x01da,
6658          0x01db},
6659         {
6660          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6661          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6662          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6663          0x01d9,
6664          0x01da},
6665         {
6666          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6667          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6668          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6669          0x01d8,
6670          0x01d9},
6671         {
6672          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6673          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6674          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6675          0x01d7,
6676          0x01d8},
6677         {
6678          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6679          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6680          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6681          0x01d7,
6682          0x01d7},
6683         {
6684          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6685          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6686          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6687          0x01d6,
6688          0x01d7},
6689         {
6690          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6691          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6692          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6693          0x01d5,
6694          0x01d6},
6695         {
6696          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6697          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6698          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6699          0x01d4,
6700          0x01d5},
6701         {
6702          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6703          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6704          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6705          0x01d3,
6706          0x01d4},
6707         {
6708          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6709          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6710          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6711          0x01d2,
6712          0x01d3},
6713         {
6714          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6715          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6716          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6717          0x01d2,
6718          0x01d2},
6719         {
6720          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6721          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6722          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6723          0x01d1,
6724          0x01d2},
6725         {
6726          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6727          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6728          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6729          0x01d0,
6730          0x01d1},
6731         {
6732          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6733          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6734          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6735          0x01cf,
6736          0x01d0},
6737         {
6738          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6739          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6740          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6741          0x01ce,
6742          0x01cf},
6743         {
6744          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6745          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6746          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6747          0x01ce,
6748          0x01ce},
6749         {
6750          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6751          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6752          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6753          0x01cd,
6754          0x01ce},
6755         {
6756          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6757          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6758          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6759          0x01cc,
6760          0x01cd},
6761         {
6762          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6763          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6764          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6765          0x01cb,
6766          0x01cc},
6767         {
6768          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6769          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6770          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6771          0x01ca,
6772          0x01cb},
6773         {
6774          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6775          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6776          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6777          0x01ca,
6778          0x01cb},
6779         {
6780          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6781          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6782          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6783          0x01c9,
6784          0x01ca},
6785         {
6786          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6787          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6788          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6789          0x01c9,
6790          0x01ca},
6791         {
6792          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6793          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6794          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6795          0x01c9,
6796          0x01c9},
6797         {
6798          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6799          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6800          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6801          0x01c8,
6802          0x01c9},
6803         {
6804          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6805          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6806          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6807          0x01c8,
6808          0x01c9},
6809         {
6810          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6811          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6812          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6813          0x01c8,
6814          0x01c8},
6815         {
6816          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6817          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6818          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6819          0x01c7,
6820          0x01c8},
6821         {
6822          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6823          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6824          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6825          0x01c7,
6826          0x01c8},
6827         {
6828          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6829          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6830          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6831          0x01c6,
6832          0x01c7},
6833         {
6834          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6835          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6836          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6837          0x01c6,
6838          0x01c7},
6839         {
6840          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6841          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6842          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6843          0x01c6,
6844          0x01c6},
6845         {
6846          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6847          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6848          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6849          0x01c5,
6850          0x01c6},
6851         {
6852          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6853          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6854          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6855          0x01c5,
6856          0x01c6},
6857         {
6858          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6859          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6860          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6861          0x01c4,
6862          0x01c5},
6863         {
6864          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6865          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6866          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6867          0x01c4,
6868          0x01c5},
6869         {
6870          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6871          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6872          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6873          0x01c4,
6874          0x01c4},
6875         {
6876          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6877          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6878          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6879          0x01c3,
6880          0x01c4},
6881         {
6882          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6883          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6884          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6885          0x01c3,
6886          0x01c4},
6887         {
6888          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6889          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6890          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6891          0x01c2,
6892          0x01c3},
6893         {
6894          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6895          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6896          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6897          0x01c2,
6898          0x01c3},
6899         {
6900          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6901          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6902          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6903          0x01c2,
6904          0x01c2},
6905         {
6906          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6907          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6908          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6909          0x01c1,
6910          0x01c2},
6911         {
6912          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6913          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6914          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6915          0x01c0,
6916          0x01c1},
6917         {
6918          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6919          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6920          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6921          0x01bf,
6922          0x01c0},
6923         {
6924          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6925          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6926          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6927          0x01bf,
6928          0x01bf},
6929         {
6930          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6931          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6932          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6933          0x01be,
6934          0x01bf},
6935         {
6936          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6937          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6938          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6939          0x01bd,
6940          0x01be},
6941         {
6942          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6943          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6944          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6945          0x01bc,
6946          0x01bd},
6947         {
6948          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6949          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6950          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6951          0x043f,
6952          0x0443},
6953         {
6954          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6955          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6956          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6957          0x043d,
6958          0x0441},
6959         {
6960          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6961          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6962          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6963          0x043a,
6964          0x043f},
6965         {
6966          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6967          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6968          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6969          0x0438,
6970          0x043d},
6971         {
6972          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6973          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6974          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6975          0x0436,
6976          0x043a},
6977         {
6978          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6979          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6980          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6981          0x0434,
6982          0x0438},
6983         {
6984          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6985          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6986          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6987          0x0431,
6988          0x0436},
6989         {
6990          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6991          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6992          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6993          0x042f,
6994          0x0434},
6995         {
6996          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6997          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6998          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6999          0x042d,
7000          0x0431},
7001         {
7002          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7003          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7004          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7005          0x042b,
7006          0x042f},
7007         {
7008          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7009          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7010          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7011          0x0429,
7012          0x042d},
7013         {
7014          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7015          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7016          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7017          0x0427,
7018          0x042b},
7019         {
7020          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7021          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7022          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7023          0x0424,
7024          0x0429},
7025         {
7026          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7027          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7028          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7029          0x041f,
7030          0x0424}
7031 };
7032
7033 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev8[] = {
7034         {
7035          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7036          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7037          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7038          0x0214,
7039          0x0215},
7040         {
7041          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7042          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7043          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7044          0x0213,
7045          0x0214},
7046         {
7047          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7048          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7049          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7050          0x0212,
7051          0x0213},
7052         {
7053          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7054          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7055          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7056          0x0211,
7057          0x0212},
7058         {
7059          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7060          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7061          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7062          0x020f,
7063          0x0211},
7064         {
7065          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7066          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7067          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7068          0x020e,
7069          0x020f},
7070         {
7071          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7072          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7073          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7074          0x020d,
7075          0x020e},
7076         {
7077          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7078          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7079          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7080          0x020c,
7081          0x020d},
7082         {
7083          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7084          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7085          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7086          0x020b,
7087          0x020c},
7088         {
7089          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7090          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7091          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7092          0x020a,
7093          0x020b},
7094         {
7095          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7096          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7097          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7098          0x0209,
7099          0x020a},
7100         {
7101          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7102          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7103          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7104          0x0208,
7105          0x0209},
7106         {
7107          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7108          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7109          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7110          0x0207,
7111          0x0208},
7112         {
7113          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7114          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7115          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7116          0x0206,
7117          0x0207},
7118         {
7119          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7120          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7121          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7122          0x0205,
7123          0x0206},
7124         {
7125          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7126          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7127          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7128          0x0204,
7129          0x0205},
7130         {
7131          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7132          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7133          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7134          0x0203,
7135          0x0204},
7136         {
7137          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7138          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7139          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7140          0x0202,
7141          0x0203},
7142         {
7143          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7144          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7145          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7146          0x0201,
7147          0x0202},
7148         {
7149          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7150          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7151          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7152          0x0200,
7153          0x0201},
7154         {
7155          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7156          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7157          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7158          0x01ff,
7159          0x0200},
7160         {
7161          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7162          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7163          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7164          0x01fe,
7165          0x01ff},
7166         {
7167          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7168          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7169          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7170          0x01fc,
7171          0x01fd},
7172         {
7173          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7174          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7175          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7176          0x01fb,
7177          0x01fc},
7178         {
7179          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7180          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7181          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7182          0x01fa,
7183          0x01fb},
7184         {
7185          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7186          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7187          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7188          0x01f9,
7189          0x01fa},
7190         {
7191          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7192          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7193          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7194          0x01f8,
7195          0x01f9},
7196         {
7197          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7198          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7199          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7200          0x01f7,
7201          0x01f8},
7202         {
7203          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7204          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7205          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7206          0x01f6,
7207          0x01f7},
7208         {
7209          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7210          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7211          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7212          0x01f5,
7213          0x01f6},
7214         {
7215          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7216          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7217          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7218          0x01f4,
7219          0x01f5},
7220         {
7221          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7222          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7223          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7224          0x01f3,
7225          0x01f4},
7226         {
7227          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7228          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7229          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7230          0x01f2,
7231          0x01f3},
7232         {
7233          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7234          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7235          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7236          0x01f1,
7237          0x01f2},
7238         {
7239          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7240          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7241          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7242          0x01f0,
7243          0x01f1},
7244         {
7245          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7246          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7247          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7248          0x01f0,
7249          0x01f0},
7250         {
7251          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7252          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7253          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7254          0x01ef,
7255          0x01f0},
7256         {
7257          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7258          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7259          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7260          0x01ee,
7261          0x01ef},
7262         {
7263          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7264          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7265          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7266          0x01ed,
7267          0x01ee},
7268         {
7269          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7270          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7271          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7272          0x01ec,
7273          0x01ed},
7274         {
7275          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7276          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7277          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7278          0x01eb,
7279          0x01ec},
7280         {
7281          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7282          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7283          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7284          0x01ea,
7285          0x01eb},
7286         {
7287          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7288          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7289          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7290          0x01e9,
7291          0x01ea},
7292         {
7293          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7294          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7295          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7296          0x01e8,
7297          0x01e9},
7298         {
7299          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7300          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7301          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7302          0x01e7,
7303          0x01e8},
7304         {
7305          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7306          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7307          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7308          0x01e6,
7309          0x01e7},
7310         {
7311          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7312          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7313          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7314          0x01e5,
7315          0x01e6},
7316         {
7317          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7318          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7319          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7320          0x01e5,
7321          0x01e5},
7322         {
7323          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7324          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7325          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7326          0x01e4,
7327          0x01e5},
7328         {
7329          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7330          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7331          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7332          0x01e3,
7333          0x01e4},
7334         {
7335          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7336          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7337          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7338          0x01e2,
7339          0x01e3},
7340         {
7341          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7342          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7343          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7344          0x01e1,
7345          0x01e2},
7346         {
7347          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7348          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7349          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7350          0x01e0,
7351          0x01e1},
7352         {
7353          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7354          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7355          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7356          0x01df,
7357          0x01e0},
7358         {
7359          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7360          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7361          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7362          0x01de,
7363          0x01df},
7364         {
7365          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7366          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7367          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7368          0x01dd,
7369          0x01de},
7370         {
7371          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7372          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7373          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7374          0x01dd,
7375          0x01dd},
7376         {
7377          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7378          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7379          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7380          0x01dc,
7381          0x01dd},
7382         {
7383          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7384          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7385          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7386          0x01db,
7387          0x01dc},
7388         {
7389          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7390          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7391          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7392          0x01da,
7393          0x01db},
7394         {
7395          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7396          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7397          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7398          0x01d9,
7399          0x01da},
7400         {
7401          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7402          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7403          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7404          0x01d8,
7405          0x01d9},
7406         {
7407          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7408          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7409          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7410          0x01d7,
7411          0x01d8},
7412         {
7413          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7414          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7415          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7416          0x01d7,
7417          0x01d7},
7418         {
7419          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7420          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7421          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7422          0x01d6,
7423          0x01d7},
7424         {
7425          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7426          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7427          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7428          0x01d5,
7429          0x01d6},
7430         {
7431          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7432          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7433          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7434          0x01d4,
7435          0x01d5},
7436         {
7437          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7438          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7439          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7440          0x01d3,
7441          0x01d4},
7442         {
7443          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7444          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7445          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7446          0x01d2,
7447          0x01d3},
7448         {
7449          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7450          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7451          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7452          0x01d2,
7453          0x01d2},
7454         {
7455          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7456          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7457          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7458          0x01d1,
7459          0x01d2},
7460         {
7461          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7462          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7463          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7464          0x01d0,
7465          0x01d1},
7466         {
7467          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7468          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7469          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7470          0x01cf,
7471          0x01d0},
7472         {
7473          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7474          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7475          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7476          0x01ce,
7477          0x01cf},
7478         {
7479          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7480          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7481          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7482          0x01ce,
7483          0x01ce},
7484         {
7485          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7486          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7487          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7488          0x01cd,
7489          0x01ce},
7490         {
7491          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7492          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7493          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7494          0x01cc,
7495          0x01cd},
7496         {
7497          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7498          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7499          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7500          0x01cb,
7501          0x01cc},
7502         {
7503          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7504          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7505          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7506          0x01ca,
7507          0x01cb},
7508         {
7509          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7510          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7511          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7512          0x01ca,
7513          0x01cb},
7514         {
7515          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7516          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7517          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7518          0x01c9,
7519          0x01ca},
7520         {
7521          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7522          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7523          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7524          0x01c9,
7525          0x01ca},
7526         {
7527          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7528          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7529          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7530          0x01c9,
7531          0x01c9},
7532         {
7533          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7534          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7535          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7536          0x01c8,
7537          0x01c9},
7538         {
7539          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7540          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7541          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7542          0x01c8,
7543          0x01c9},
7544         {
7545          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7546          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7547          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7548          0x01c8,
7549          0x01c8},
7550         {
7551          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7552          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7553          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7554          0x01c7,
7555          0x01c8},
7556         {
7557          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7558          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7559          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7560          0x01c7,
7561          0x01c8},
7562         {
7563          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7564          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7565          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7566          0x01c6,
7567          0x01c7},
7568         {
7569          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7570          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7571          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7572          0x01c6,
7573          0x01c7},
7574         {
7575          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7576          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7577          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7578          0x01c6,
7579          0x01c6},
7580         {
7581          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7582          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7583          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7584          0x01c5,
7585          0x01c6},
7586         {
7587          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7588          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7589          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7590          0x01c5,
7591          0x01c6},
7592         {
7593          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7594          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7595          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7596          0x01c4,
7597          0x01c5},
7598         {
7599          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7600          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7601          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7602          0x01c4,
7603          0x01c5},
7604         {
7605          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7606          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7607          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7608          0x01c4,
7609          0x01c4},
7610         {
7611          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7612          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7613          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7614          0x01c3,
7615          0x01c4},
7616         {
7617          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7618          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7619          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7620          0x01c3,
7621          0x01c4},
7622         {
7623          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7624          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7625          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7626          0x01c2,
7627          0x01c3},
7628         {
7629          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7630          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7631          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7632          0x01c2,
7633          0x01c3},
7634         {
7635          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7636          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7637          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7638          0x01c2,
7639          0x01c2},
7640         {
7641          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7642          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7643          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7644          0x01c1,
7645          0x01c2},
7646         {
7647          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7648          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7649          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7650          0x01c0,
7651          0x01c1},
7652         {
7653          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7654          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7655          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7656          0x01bf,
7657          0x01c0},
7658         {
7659          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7660          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7661          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7662          0x01bf,
7663          0x01bf},
7664         {
7665          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7666          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7667          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7668          0x01be,
7669          0x01bf},
7670         {
7671          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7672          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7673          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7674          0x01bd,
7675          0x01be},
7676         {
7677          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7678          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7679          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7680          0x01bc,
7681          0x01bd},
7682         {
7683          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7684          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7685          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7686          0x043f,
7687          0x0443},
7688         {
7689          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7690          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7691          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7692          0x043d,
7693          0x0441},
7694         {
7695          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7696          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7697          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7698          0x043a,
7699          0x043f},
7700         {
7701          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7702          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7703          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7704          0x0438,
7705          0x043d},
7706         {
7707          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7708          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7709          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7710          0x0436,
7711          0x043a},
7712         {
7713          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7714          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7715          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7716          0x0434,
7717          0x0438},
7718         {
7719          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7720          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7721          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7722          0x0431,
7723          0x0436},
7724         {
7725          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7726          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7727          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7728          0x042f,
7729          0x0434},
7730         {
7731          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7732          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7733          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7734          0x042d,
7735          0x0431},
7736         {
7737          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7738          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7739          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7740          0x042b,
7741          0x042f},
7742         {
7743          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7744          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7745          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7746          0x0429,
7747          0x042d},
7748         {
7749          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7750          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7751          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7752          0x0427,
7753          0x042b},
7754         {
7755          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7756          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7757          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7758          0x0424,
7759          0x0429},
7760         {
7761          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7762          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7763          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7764          0x041f,
7765          0x0424}
7766 };
7767
7768 static struct radio_regs regs_2055[] = {
7769         {0x02, 0x80, 0x80, 0, 0},
7770         {0x03, 0, 0, 0, 0},
7771         {0x04, 0x27, 0x27, 0, 0},
7772         {0x05, 0, 0, 0, 0},
7773         {0x06, 0x27, 0x27, 0, 0},
7774         {0x07, 0x7f, 0x7f, 1, 1},
7775         {0x08, 0x7, 0x7, 1, 1},
7776         {0x09, 0x7f, 0x7f, 1, 1},
7777         {0x0A, 0x7, 0x7, 1, 1},
7778         {0x0B, 0x15, 0x15, 0, 0},
7779         {0x0C, 0x15, 0x15, 0, 0},
7780         {0x0D, 0x4f, 0x4f, 1, 1},
7781         {0x0E, 0x5, 0x5, 1, 1},
7782         {0x0F, 0x4f, 0x4f, 1, 1},
7783         {0x10, 0x5, 0x5, 1, 1},
7784         {0x11, 0xd0, 0xd0, 0, 0},
7785         {0x12, 0x2, 0x2, 0, 0},
7786         {0x13, 0, 0, 0, 0},
7787         {0x14, 0x40, 0x40, 0, 0},
7788         {0x15, 0, 0, 0, 0},
7789         {0x16, 0, 0, 0, 0},
7790         {0x17, 0, 0, 0, 0},
7791         {0x18, 0, 0, 0, 0},
7792         {0x19, 0, 0, 0, 0},
7793         {0x1A, 0, 0, 0, 0},
7794         {0x1B, 0, 0, 0, 0},
7795         {0x1C, 0, 0, 0, 0},
7796         {0x1D, 0xc0, 0xc0, 0, 0},
7797         {0x1E, 0xff, 0xff, 0, 0},
7798         {0x1F, 0xc0, 0xc0, 0, 0},
7799         {0x20, 0xff, 0xff, 0, 0},
7800         {0x21, 0xc0, 0xc0, 0, 0},
7801         {0x22, 0, 0, 0, 0},
7802         {0x23, 0x2c, 0x2c, 0, 0},
7803         {0x24, 0, 0, 0, 0},
7804         {0x25, 0, 0, 0, 0},
7805         {0x26, 0, 0, 0, 0},
7806         {0x27, 0, 0, 0, 0},
7807         {0x28, 0, 0, 0, 0},
7808         {0x29, 0, 0, 0, 0},
7809         {0x2A, 0, 0, 0, 0},
7810         {0x2B, 0, 0, 0, 0},
7811         {0x2C, 0, 0, 0, 0},
7812         {0x2D, 0xa4, 0xa4, 0, 0},
7813         {0x2E, 0x38, 0x38, 0, 0},
7814         {0x2F, 0, 0, 0, 0},
7815         {0x30, 0x4, 0x4, 1, 1},
7816         {0x31, 0, 0, 0, 0},
7817         {0x32, 0xa, 0xa, 0, 0},
7818         {0x33, 0x87, 0x87, 0, 0},
7819         {0x34, 0x9, 0x9, 0, 0},
7820         {0x35, 0x70, 0x70, 0, 0},
7821         {0x36, 0x11, 0x11, 0, 0},
7822         {0x37, 0x18, 0x18, 1, 1},
7823         {0x38, 0x6, 0x6, 0, 0},
7824         {0x39, 0x4, 0x4, 1, 1},
7825         {0x3A, 0x6, 0x6, 0, 0},
7826         {0x3B, 0x9e, 0x9e, 0, 0},
7827         {0x3C, 0x9, 0x9, 0, 0},
7828         {0x3D, 0xc8, 0xc8, 1, 1},
7829         {0x3E, 0x88, 0x88, 0, 0},
7830         {0x3F, 0, 0, 0, 0},
7831         {0x40, 0, 0, 0, 0},
7832         {0x41, 0, 0, 0, 0},
7833         {0x42, 0x1, 0x1, 0, 0},
7834         {0x43, 0x2, 0x2, 0, 0},
7835         {0x44, 0x96, 0x96, 0, 0},
7836         {0x45, 0x3e, 0x3e, 0, 0},
7837         {0x46, 0x3e, 0x3e, 0, 0},
7838         {0x47, 0x13, 0x13, 0, 0},
7839         {0x48, 0x2, 0x2, 0, 0},
7840         {0x49, 0x15, 0x15, 0, 0},
7841         {0x4A, 0x7, 0x7, 0, 0},
7842         {0x4B, 0, 0, 0, 0},
7843         {0x4C, 0, 0, 0, 0},
7844         {0x4D, 0, 0, 0, 0},
7845         {0x4E, 0, 0, 0, 0},
7846         {0x4F, 0, 0, 0, 0},
7847         {0x50, 0x8, 0x8, 0, 0},
7848         {0x51, 0x8, 0x8, 0, 0},
7849         {0x52, 0x6, 0x6, 0, 0},
7850         {0x53, 0x84, 0x84, 1, 1},
7851         {0x54, 0xc3, 0xc3, 0, 0},
7852         {0x55, 0x8f, 0x8f, 0, 0},
7853         {0x56, 0xff, 0xff, 0, 0},
7854         {0x57, 0xff, 0xff, 0, 0},
7855         {0x58, 0x88, 0x88, 0, 0},
7856         {0x59, 0x88, 0x88, 0, 0},
7857         {0x5A, 0, 0, 0, 0},
7858         {0x5B, 0xcc, 0xcc, 0, 0},
7859         {0x5C, 0x6, 0x6, 0, 0},
7860         {0x5D, 0x80, 0x80, 0, 0},
7861         {0x5E, 0x80, 0x80, 0, 0},
7862         {0x5F, 0xf8, 0xf8, 0, 0},
7863         {0x60, 0x88, 0x88, 0, 0},
7864         {0x61, 0x88, 0x88, 0, 0},
7865         {0x62, 0x88, 0x8, 1, 1},
7866         {0x63, 0x88, 0x88, 0, 0},
7867         {0x64, 0, 0, 0, 0},
7868         {0x65, 0x1, 0x1, 1, 1},
7869         {0x66, 0x8a, 0x8a, 0, 0},
7870         {0x67, 0x8, 0x8, 0, 0},
7871         {0x68, 0x83, 0x83, 0, 0},
7872         {0x69, 0x6, 0x6, 0, 0},
7873         {0x6A, 0xa0, 0xa0, 0, 0},
7874         {0x6B, 0xa, 0xa, 0, 0},
7875         {0x6C, 0x87, 0x87, 1, 1},
7876         {0x6D, 0x2a, 0x2a, 0, 0},
7877         {0x6E, 0x2a, 0x2a, 0, 0},
7878         {0x6F, 0x2a, 0x2a, 0, 0},
7879         {0x70, 0x2a, 0x2a, 0, 0},
7880         {0x71, 0x18, 0x18, 0, 0},
7881         {0x72, 0x6a, 0x6a, 1, 1},
7882         {0x73, 0xab, 0xab, 1, 1},
7883         {0x74, 0x13, 0x13, 1, 1},
7884         {0x75, 0xc1, 0xc1, 1, 1},
7885         {0x76, 0xaa, 0xaa, 1, 1},
7886         {0x77, 0x87, 0x87, 1, 1},
7887         {0x78, 0, 0, 0, 0},
7888         {0x79, 0x6, 0x6, 0, 0},
7889         {0x7A, 0x7, 0x7, 0, 0},
7890         {0x7B, 0x7, 0x7, 0, 0},
7891         {0x7C, 0x15, 0x15, 0, 0},
7892         {0x7D, 0x55, 0x55, 0, 0},
7893         {0x7E, 0x97, 0x97, 1, 1},
7894         {0x7F, 0x8, 0x8, 0, 0},
7895         {0x80, 0x14, 0x14, 1, 1},
7896         {0x81, 0x33, 0x33, 0, 0},
7897         {0x82, 0x88, 0x88, 0, 0},
7898         {0x83, 0x6, 0x6, 0, 0},
7899         {0x84, 0x3, 0x3, 1, 1},
7900         {0x85, 0xa, 0xa, 0, 0},
7901         {0x86, 0x3, 0x3, 1, 1},
7902         {0x87, 0x2a, 0x2a, 0, 0},
7903         {0x88, 0xa4, 0xa4, 0, 0},
7904         {0x89, 0x18, 0x18, 0, 0},
7905         {0x8A, 0x28, 0x28, 0, 0},
7906         {0x8B, 0, 0, 0, 0},
7907         {0x8C, 0x4a, 0x4a, 0, 0},
7908         {0x8D, 0, 0, 0, 0},
7909         {0x8E, 0xf8, 0xf8, 0, 0},
7910         {0x8F, 0x88, 0x88, 0, 0},
7911         {0x90, 0x88, 0x88, 0, 0},
7912         {0x91, 0x88, 0x8, 1, 1},
7913         {0x92, 0x88, 0x88, 0, 0},
7914         {0x93, 0, 0, 0, 0},
7915         {0x94, 0x1, 0x1, 1, 1},
7916         {0x95, 0x8a, 0x8a, 0, 0},
7917         {0x96, 0x8, 0x8, 0, 0},
7918         {0x97, 0x83, 0x83, 0, 0},
7919         {0x98, 0x6, 0x6, 0, 0},
7920         {0x99, 0xa0, 0xa0, 0, 0},
7921         {0x9A, 0xa, 0xa, 0, 0},
7922         {0x9B, 0x87, 0x87, 1, 1},
7923         {0x9C, 0x2a, 0x2a, 0, 0},
7924         {0x9D, 0x2a, 0x2a, 0, 0},
7925         {0x9E, 0x2a, 0x2a, 0, 0},
7926         {0x9F, 0x2a, 0x2a, 0, 0},
7927         {0xA0, 0x18, 0x18, 0, 0},
7928         {0xA1, 0x6a, 0x6a, 1, 1},
7929         {0xA2, 0xab, 0xab, 1, 1},
7930         {0xA3, 0x13, 0x13, 1, 1},
7931         {0xA4, 0xc1, 0xc1, 1, 1},
7932         {0xA5, 0xaa, 0xaa, 1, 1},
7933         {0xA6, 0x87, 0x87, 1, 1},
7934         {0xA7, 0, 0, 0, 0},
7935         {0xA8, 0x6, 0x6, 0, 0},
7936         {0xA9, 0x7, 0x7, 0, 0},
7937         {0xAA, 0x7, 0x7, 0, 0},
7938         {0xAB, 0x15, 0x15, 0, 0},
7939         {0xAC, 0x55, 0x55, 0, 0},
7940         {0xAD, 0x97, 0x97, 1, 1},
7941         {0xAE, 0x8, 0x8, 0, 0},
7942         {0xAF, 0x14, 0x14, 1, 1},
7943         {0xB0, 0x33, 0x33, 0, 0},
7944         {0xB1, 0x88, 0x88, 0, 0},
7945         {0xB2, 0x6, 0x6, 0, 0},
7946         {0xB3, 0x3, 0x3, 1, 1},
7947         {0xB4, 0xa, 0xa, 0, 0},
7948         {0xB5, 0x3, 0x3, 1, 1},
7949         {0xB6, 0x2a, 0x2a, 0, 0},
7950         {0xB7, 0xa4, 0xa4, 0, 0},
7951         {0xB8, 0x18, 0x18, 0, 0},
7952         {0xB9, 0x28, 0x28, 0, 0},
7953         {0xBA, 0, 0, 0, 0},
7954         {0xBB, 0x4a, 0x4a, 0, 0},
7955         {0xBC, 0, 0, 0, 0},
7956         {0xBD, 0x71, 0x71, 0, 0},
7957         {0xBE, 0x72, 0x72, 0, 0},
7958         {0xBF, 0x73, 0x73, 0, 0},
7959         {0xC0, 0x74, 0x74, 0, 0},
7960         {0xC1, 0x75, 0x75, 0, 0},
7961         {0xC2, 0x76, 0x76, 0, 0},
7962         {0xC3, 0x77, 0x77, 0, 0},
7963         {0xC4, 0x78, 0x78, 0, 0},
7964         {0xC5, 0x79, 0x79, 0, 0},
7965         {0xC6, 0x7a, 0x7a, 0, 0},
7966         {0xC7, 0, 0, 0, 0},
7967         {0xC8, 0, 0, 0, 0},
7968         {0xC9, 0, 0, 0, 0},
7969         {0xCA, 0, 0, 0, 0},
7970         {0xCB, 0, 0, 0, 0},
7971         {0xCC, 0, 0, 0, 0},
7972         {0xCD, 0, 0, 0, 0},
7973         {0xCE, 0x6, 0x6, 0, 0},
7974         {0xCF, 0, 0, 0, 0},
7975         {0xD0, 0, 0, 0, 0},
7976         {0xD1, 0x18, 0x18, 0, 0},
7977         {0xD2, 0x88, 0x88, 0, 0},
7978         {0xD3, 0, 0, 0, 0},
7979         {0xD4, 0, 0, 0, 0},
7980         {0xD5, 0, 0, 0, 0},
7981         {0xD6, 0, 0, 0, 0},
7982         {0xD7, 0, 0, 0, 0},
7983         {0xD8, 0, 0, 0, 0},
7984         {0xD9, 0, 0, 0, 0},
7985         {0xDA, 0x6, 0x6, 0, 0},
7986         {0xDB, 0, 0, 0, 0},
7987         {0xDC, 0, 0, 0, 0},
7988         {0xDD, 0x18, 0x18, 0, 0},
7989         {0xDE, 0x88, 0x88, 0, 0},
7990         {0xDF, 0, 0, 0, 0},
7991         {0xE0, 0, 0, 0, 0},
7992         {0xE1, 0, 0, 0, 0},
7993         {0xE2, 0, 0, 0, 0},
7994         {0xFFFF, 0, 0, 0, 0},
7995 };
7996
7997 static struct radio_regs regs_SYN_2056[] = {
7998         {0x02, 0, 0, 0, 0},
7999         {0x03, 0, 0, 0, 0},
8000         {0x04, 0, 0, 0, 0},
8001         {0x05, 0, 0, 0, 0},
8002         {0x06, 0, 0, 0, 0},
8003         {0x07, 0, 0, 0, 0},
8004         {0x08, 0, 0, 0, 0},
8005         {0x09, 0x1, 0x1, 0, 0},
8006         {0x0A, 0, 0, 0, 0},
8007         {0x0B, 0, 0, 0, 0},
8008         {0x0C, 0, 0, 0, 0},
8009         {0x0D, 0, 0, 0, 0},
8010         {0x0E, 0, 0, 0, 0},
8011         {0x0F, 0, 0, 0, 0},
8012         {0x10, 0, 0, 0, 0},
8013         {0x11, 0, 0, 0, 0},
8014         {0x12, 0, 0, 0, 0},
8015         {0x13, 0, 0, 0, 0},
8016         {0x14, 0, 0, 0, 0},
8017         {0x15, 0, 0, 0, 0},
8018         {0x16, 0, 0, 0, 0},
8019         {0x17, 0, 0, 0, 0},
8020         {0x18, 0, 0, 0, 0},
8021         {0x19, 0, 0, 0, 0},
8022         {0x1A, 0, 0, 0, 0},
8023         {0x1B, 0, 0, 0, 0},
8024         {0x1C, 0, 0, 0, 0},
8025         {0x1D, 0, 0, 0, 0},
8026         {0x1E, 0, 0, 0, 0},
8027         {0x1F, 0, 0, 0, 0},
8028         {0x20, 0, 0, 0, 0},
8029         {0x21, 0, 0, 0, 0},
8030         {0x22, 0x60, 0x60, 0, 0},
8031         {0x23, 0x6, 0x6, 0, 0},
8032         {0x24, 0xc, 0xc, 0, 0},
8033         {0x25, 0, 0, 0, 0},
8034         {0x26, 0, 0, 0, 0},
8035         {0x27, 0, 0, 0, 0},
8036         {0x28, 0x1, 0x1, 0, 0},
8037         {0x29, 0, 0, 0, 0},
8038         {0x2A, 0, 0, 0, 0},
8039         {0x2B, 0, 0, 0, 0},
8040         {0x2C, 0, 0, 0, 0},
8041         {0x2D, 0, 0, 0, 0},
8042         {0x2E, 0xd, 0xd, 0, 0},
8043         {0x2F, 0x1f, 0x1f, 0, 0},
8044         {0x30, 0x15, 0x15, 0, 0},
8045         {0x31, 0xf, 0xf, 0, 0},
8046         {0x32, 0, 0, 0, 0},
8047         {0x33, 0, 0, 0, 0},
8048         {0x34, 0, 0, 0, 0},
8049         {0x35, 0, 0, 0, 0},
8050         {0x36, 0, 0, 0, 0},
8051         {0x37, 0, 0, 0, 0},
8052         {0x38, 0, 0, 0, 0},
8053         {0x39, 0, 0, 0, 0},
8054         {0x3A, 0, 0, 0, 0},
8055         {0x3B, 0, 0, 0, 0},
8056         {0x3C, 0x13, 0x13, 0, 0},
8057         {0x3D, 0xf, 0xf, 0, 0},
8058         {0x3E, 0x18, 0x18, 0, 0},
8059         {0x3F, 0, 0, 0, 0},
8060         {0x40, 0, 0, 0, 0},
8061         {0x41, 0x20, 0x20, 0, 0},
8062         {0x42, 0x20, 0x20, 0, 0},
8063         {0x43, 0, 0, 0, 0},
8064         {0x44, 0x77, 0x77, 0, 0},
8065         {0x45, 0x7, 0x7, 0, 0},
8066         {0x46, 0x1, 0x1, 0, 0},
8067         {0x47, 0x4, 0x4, 0, 0},
8068         {0x48, 0xf, 0xf, 0, 0},
8069         {0x49, 0x30, 0x30, 0, 0},
8070         {0x4A, 0x32, 0x32, 0, 0},
8071         {0x4B, 0xd, 0xd, 0, 0},
8072         {0x4C, 0xd, 0xd, 0, 0},
8073         {0x4D, 0x4, 0x4, 0, 0},
8074         {0x4E, 0x6, 0x6, 0, 0},
8075         {0x4F, 0x1, 0x1, 0, 0},
8076         {0x50, 0x1c, 0x1c, 0, 0},
8077         {0x51, 0x2, 0x2, 0, 0},
8078         {0x52, 0x2, 0x2, 0, 0},
8079         {0x53, 0xf7, 0xf7, 1, 1},
8080         {0x54, 0xb4, 0xb4, 0, 0},
8081         {0x55, 0xd2, 0xd2, 0, 0},
8082         {0x56, 0, 0, 0, 0},
8083         {0x57, 0, 0, 0, 0},
8084         {0x58, 0x4, 0x4, 0, 0},
8085         {0x59, 0x96, 0x96, 0, 0},
8086         {0x5A, 0x3e, 0x3e, 0, 0},
8087         {0x5B, 0x3e, 0x3e, 0, 0},
8088         {0x5C, 0x13, 0x13, 0, 0},
8089         {0x5D, 0x2, 0x2, 0, 0},
8090         {0x5E, 0, 0, 0, 0},
8091         {0x5F, 0x7, 0x7, 0, 0},
8092         {0x60, 0x7, 0x7, 1, 1},
8093         {0x61, 0x8, 0x8, 0, 0},
8094         {0x62, 0x3, 0x3, 0, 0},
8095         {0x63, 0, 0, 0, 0},
8096         {0x64, 0, 0, 0, 0},
8097         {0x65, 0, 0, 0, 0},
8098         {0x66, 0, 0, 0, 0},
8099         {0x67, 0, 0, 0, 0},
8100         {0x68, 0x40, 0x40, 0, 0},
8101         {0x69, 0, 0, 0, 0},
8102         {0x6A, 0, 0, 0, 0},
8103         {0x6B, 0, 0, 0, 0},
8104         {0x6C, 0, 0, 0, 0},
8105         {0x6D, 0x1, 0x1, 0, 0},
8106         {0x6E, 0, 0, 0, 0},
8107         {0x6F, 0, 0, 0, 0},
8108         {0x70, 0x60, 0x60, 0, 0},
8109         {0x71, 0x66, 0x66, 0, 0},
8110         {0x72, 0xc, 0xc, 0, 0},
8111         {0x73, 0x66, 0x66, 0, 0},
8112         {0x74, 0x8f, 0x8f, 1, 1},
8113         {0x75, 0, 0, 0, 0},
8114         {0x76, 0xcc, 0xcc, 0, 0},
8115         {0x77, 0x1, 0x1, 0, 0},
8116         {0x78, 0x66, 0x66, 0, 0},
8117         {0x79, 0x66, 0x66, 0, 0},
8118         {0x7A, 0, 0, 0, 0},
8119         {0x7B, 0, 0, 0, 0},
8120         {0x7C, 0, 0, 0, 0},
8121         {0x7D, 0, 0, 0, 0},
8122         {0x7E, 0, 0, 0, 0},
8123         {0x7F, 0, 0, 0, 0},
8124         {0x80, 0, 0, 0, 0},
8125         {0x81, 0, 0, 0, 0},
8126         {0x82, 0, 0, 0, 0},
8127         {0x83, 0, 0, 0, 0},
8128         {0x84, 0, 0, 0, 0},
8129         {0x85, 0xff, 0xff, 0, 0},
8130         {0x86, 0, 0, 0, 0},
8131         {0x87, 0, 0, 0, 0},
8132         {0x88, 0, 0, 0, 0},
8133         {0x89, 0, 0, 0, 0},
8134         {0x8A, 0, 0, 0, 0},
8135         {0x8B, 0, 0, 0, 0},
8136         {0x8C, 0, 0, 0, 0},
8137         {0x8D, 0, 0, 0, 0},
8138         {0x8E, 0, 0, 0, 0},
8139         {0x8F, 0, 0, 0, 0},
8140         {0x90, 0, 0, 0, 0},
8141         {0x91, 0, 0, 0, 0},
8142         {0x92, 0, 0, 0, 0},
8143         {0x93, 0, 0, 0, 0},
8144         {0x94, 0, 0, 0, 0},
8145         {0x95, 0, 0, 0, 0},
8146         {0x96, 0, 0, 0, 0},
8147         {0x97, 0, 0, 0, 0},
8148         {0x98, 0, 0, 0, 0},
8149         {0x99, 0, 0, 0, 0},
8150         {0x9A, 0, 0, 0, 0},
8151         {0x9B, 0, 0, 0, 0},
8152         {0x9C, 0, 0, 0, 0},
8153         {0x9D, 0, 0, 0, 0},
8154         {0x9E, 0, 0, 0, 0},
8155         {0x9F, 0x6, 0x6, 0, 0},
8156         {0xA0, 0x66, 0x66, 0, 0},
8157         {0xA1, 0x66, 0x66, 0, 0},
8158         {0xA2, 0x66, 0x66, 0, 0},
8159         {0xA3, 0x66, 0x66, 0, 0},
8160         {0xA4, 0x66, 0x66, 0, 0},
8161         {0xA5, 0x66, 0x66, 0, 0},
8162         {0xA6, 0x66, 0x66, 0, 0},
8163         {0xA7, 0x66, 0x66, 0, 0},
8164         {0xA8, 0x66, 0x66, 0, 0},
8165         {0xA9, 0x66, 0x66, 0, 0},
8166         {0xAA, 0x66, 0x66, 0, 0},
8167         {0xAB, 0x66, 0x66, 0, 0},
8168         {0xAC, 0x66, 0x66, 0, 0},
8169         {0xAD, 0x66, 0x66, 0, 0},
8170         {0xAE, 0x66, 0x66, 0, 0},
8171         {0xAF, 0x66, 0x66, 0, 0},
8172         {0xB0, 0x66, 0x66, 0, 0},
8173         {0xB1, 0x66, 0x66, 0, 0},
8174         {0xB2, 0x66, 0x66, 0, 0},
8175         {0xB3, 0xa, 0xa, 0, 0},
8176         {0xB4, 0, 0, 0, 0},
8177         {0xB5, 0, 0, 0, 0},
8178         {0xB6, 0, 0, 0, 0},
8179         {0xFFFF, 0, 0, 0, 0}
8180 };
8181
8182 static struct radio_regs regs_TX_2056[] = {
8183         {0x02, 0, 0, 0, 0},
8184         {0x03, 0, 0, 0, 0},
8185         {0x04, 0, 0, 0, 0},
8186         {0x05, 0, 0, 0, 0},
8187         {0x06, 0, 0, 0, 0},
8188         {0x07, 0, 0, 0, 0},
8189         {0x08, 0, 0, 0, 0},
8190         {0x09, 0, 0, 0, 0},
8191         {0x0A, 0, 0, 0, 0},
8192         {0x0B, 0, 0, 0, 0},
8193         {0x0C, 0, 0, 0, 0},
8194         {0x0D, 0, 0, 0, 0},
8195         {0x0E, 0, 0, 0, 0},
8196         {0x0F, 0, 0, 0, 0},
8197         {0x10, 0, 0, 0, 0},
8198         {0x11, 0, 0, 0, 0},
8199         {0x12, 0, 0, 0, 0},
8200         {0x13, 0, 0, 0, 0},
8201         {0x14, 0, 0, 0, 0},
8202         {0x15, 0, 0, 0, 0},
8203         {0x16, 0, 0, 0, 0},
8204         {0x17, 0, 0, 0, 0},
8205         {0x18, 0, 0, 0, 0},
8206         {0x19, 0, 0, 0, 0},
8207         {0x1A, 0, 0, 0, 0},
8208         {0x1B, 0, 0, 0, 0},
8209         {0x1C, 0, 0, 0, 0},
8210         {0x1D, 0, 0, 0, 0},
8211         {0x1E, 0, 0, 0, 0},
8212         {0x1F, 0, 0, 0, 0},
8213         {0x20, 0, 0, 0, 0},
8214         {0x21, 0x88, 0x88, 0, 0},
8215         {0x22, 0x88, 0x88, 0, 0},
8216         {0x23, 0x88, 0x88, 0, 0},
8217         {0x24, 0x88, 0x88, 0, 0},
8218         {0x25, 0xc, 0xc, 0, 0},
8219         {0x26, 0, 0, 0, 0},
8220         {0x27, 0x3, 0x3, 0, 0},
8221         {0x28, 0, 0, 0, 0},
8222         {0x29, 0x3, 0x3, 0, 0},
8223         {0x2A, 0x37, 0x37, 0, 0},
8224         {0x2B, 0x3, 0x3, 0, 0},
8225         {0x2C, 0, 0, 0, 0},
8226         {0x2D, 0, 0, 0, 0},
8227         {0x2E, 0x1, 0x1, 0, 0},
8228         {0x2F, 0x1, 0x1, 0, 0},
8229         {0x30, 0, 0, 0, 0},
8230         {0x31, 0, 0, 0, 0},
8231         {0x32, 0, 0, 0, 0},
8232         {0x33, 0x11, 0x11, 0, 0},
8233         {0x34, 0x11, 0x11, 0, 0},
8234         {0x35, 0, 0, 0, 0},
8235         {0x36, 0, 0, 0, 0},
8236         {0x37, 0x3, 0x3, 0, 0},
8237         {0x38, 0xf, 0xf, 0, 0},
8238         {0x39, 0, 0, 0, 0},
8239         {0x3A, 0x2d, 0x2d, 0, 0},
8240         {0x3B, 0, 0, 0, 0},
8241         {0x3C, 0x6e, 0x6e, 0, 0},
8242         {0x3D, 0xf0, 0xf0, 1, 1},
8243         {0x3E, 0, 0, 0, 0},
8244         {0x3F, 0, 0, 0, 0},
8245         {0x40, 0, 0, 0, 0},
8246         {0x41, 0x3, 0x3, 0, 0},
8247         {0x42, 0x3, 0x3, 0, 0},
8248         {0x43, 0, 0, 0, 0},
8249         {0x44, 0x1e, 0x1e, 0, 0},
8250         {0x45, 0, 0, 0, 0},
8251         {0x46, 0x6e, 0x6e, 0, 0},
8252         {0x47, 0xf0, 0xf0, 1, 1},
8253         {0x48, 0, 0, 0, 0},
8254         {0x49, 0x2, 0x2, 0, 0},
8255         {0x4A, 0xff, 0xff, 1, 1},
8256         {0x4B, 0xc, 0xc, 0, 0},
8257         {0x4C, 0, 0, 0, 0},
8258         {0x4D, 0x38, 0x38, 0, 0},
8259         {0x4E, 0x70, 0x70, 1, 1},
8260         {0x4F, 0x2, 0x2, 0, 0},
8261         {0x50, 0x88, 0x88, 0, 0},
8262         {0x51, 0xc, 0xc, 0, 0},
8263         {0x52, 0, 0, 0, 0},
8264         {0x53, 0x8, 0x8, 0, 0},
8265         {0x54, 0x70, 0x70, 1, 1},
8266         {0x55, 0x2, 0x2, 0, 0},
8267         {0x56, 0xff, 0xff, 1, 1},
8268         {0x57, 0, 0, 0, 0},
8269         {0x58, 0x83, 0x83, 0, 0},
8270         {0x59, 0x77, 0x77, 1, 1},
8271         {0x5A, 0, 0, 0, 0},
8272         {0x5B, 0x2, 0x2, 0, 0},
8273         {0x5C, 0x88, 0x88, 0, 0},
8274         {0x5D, 0, 0, 0, 0},
8275         {0x5E, 0x8, 0x8, 0, 0},
8276         {0x5F, 0x77, 0x77, 1, 1},
8277         {0x60, 0x1, 0x1, 0, 0},
8278         {0x61, 0, 0, 0, 0},
8279         {0x62, 0x7, 0x7, 0, 0},
8280         {0x63, 0, 0, 0, 0},
8281         {0x64, 0x7, 0x7, 0, 0},
8282         {0x65, 0, 0, 0, 0},
8283         {0x66, 0, 0, 0, 0},
8284         {0x67, 0x74, 0x74, 1, 1},
8285         {0x68, 0, 0, 0, 0},
8286         {0x69, 0xa, 0xa, 0, 0},
8287         {0x6A, 0, 0, 0, 0},
8288         {0x6B, 0, 0, 0, 0},
8289         {0x6C, 0, 0, 0, 0},
8290         {0x6D, 0, 0, 0, 0},
8291         {0x6E, 0, 0, 0, 0},
8292         {0x6F, 0, 0, 0, 0},
8293         {0x70, 0, 0, 0, 0},
8294         {0x71, 0x2, 0x2, 0, 0},
8295         {0x72, 0, 0, 0, 0},
8296         {0x73, 0, 0, 0, 0},
8297         {0x74, 0xe, 0xe, 0, 0},
8298         {0x75, 0xe, 0xe, 0, 0},
8299         {0x76, 0xe, 0xe, 0, 0},
8300         {0x77, 0x13, 0x13, 0, 0},
8301         {0x78, 0x13, 0x13, 0, 0},
8302         {0x79, 0x1b, 0x1b, 0, 0},
8303         {0x7A, 0x1b, 0x1b, 0, 0},
8304         {0x7B, 0x55, 0x55, 0, 0},
8305         {0x7C, 0x5b, 0x5b, 0, 0},
8306         {0x7D, 0, 0, 0, 0},
8307         {0x7E, 0, 0, 0, 0},
8308         {0x7F, 0, 0, 0, 0},
8309         {0x80, 0, 0, 0, 0},
8310         {0x81, 0, 0, 0, 0},
8311         {0x82, 0, 0, 0, 0},
8312         {0x83, 0, 0, 0, 0},
8313         {0x84, 0, 0, 0, 0},
8314         {0x85, 0, 0, 0, 0},
8315         {0x86, 0, 0, 0, 0},
8316         {0x87, 0, 0, 0, 0},
8317         {0x88, 0, 0, 0, 0},
8318         {0x89, 0, 0, 0, 0},
8319         {0x8A, 0, 0, 0, 0},
8320         {0x8B, 0, 0, 0, 0},
8321         {0x8C, 0, 0, 0, 0},
8322         {0x8D, 0, 0, 0, 0},
8323         {0x8E, 0, 0, 0, 0},
8324         {0x8F, 0, 0, 0, 0},
8325         {0x90, 0, 0, 0, 0},
8326         {0x91, 0, 0, 0, 0},
8327         {0x92, 0, 0, 0, 0},
8328         {0xFFFF, 0, 0, 0, 0}
8329 };
8330
8331 static struct radio_regs regs_RX_2056[] = {
8332         {0x02, 0, 0, 0, 0},
8333         {0x03, 0, 0, 0, 0},
8334         {0x04, 0, 0, 0, 0},
8335         {0x05, 0, 0, 0, 0},
8336         {0x06, 0, 0, 0, 0},
8337         {0x07, 0, 0, 0, 0},
8338         {0x08, 0, 0, 0, 0},
8339         {0x09, 0, 0, 0, 0},
8340         {0x0A, 0, 0, 0, 0},
8341         {0x0B, 0, 0, 0, 0},
8342         {0x0C, 0, 0, 0, 0},
8343         {0x0D, 0, 0, 0, 0},
8344         {0x0E, 0, 0, 0, 0},
8345         {0x0F, 0, 0, 0, 0},
8346         {0x10, 0, 0, 0, 0},
8347         {0x11, 0, 0, 0, 0},
8348         {0x12, 0, 0, 0, 0},
8349         {0x13, 0, 0, 0, 0},
8350         {0x14, 0, 0, 0, 0},
8351         {0x15, 0, 0, 0, 0},
8352         {0x16, 0, 0, 0, 0},
8353         {0x17, 0, 0, 0, 0},
8354         {0x18, 0, 0, 0, 0},
8355         {0x19, 0, 0, 0, 0},
8356         {0x1A, 0, 0, 0, 0},
8357         {0x1B, 0, 0, 0, 0},
8358         {0x1C, 0, 0, 0, 0},
8359         {0x1D, 0, 0, 0, 0},
8360         {0x1E, 0, 0, 0, 0},
8361         {0x1F, 0, 0, 0, 0},
8362         {0x20, 0x3, 0x3, 0, 0},
8363         {0x21, 0, 0, 0, 0},
8364         {0x22, 0, 0, 0, 0},
8365         {0x23, 0x90, 0x90, 0, 0},
8366         {0x24, 0x55, 0x55, 0, 0},
8367         {0x25, 0x15, 0x15, 0, 0},
8368         {0x26, 0x5, 0x5, 0, 0},
8369         {0x27, 0x15, 0x15, 0, 0},
8370         {0x28, 0x5, 0x5, 0, 0},
8371         {0x29, 0x20, 0x20, 0, 0},
8372         {0x2A, 0x11, 0x11, 0, 0},
8373         {0x2B, 0x90, 0x90, 0, 0},
8374         {0x2C, 0, 0, 0, 0},
8375         {0x2D, 0x88, 0x88, 0, 0},
8376         {0x2E, 0x32, 0x32, 0, 0},
8377         {0x2F, 0x77, 0x77, 0, 0},
8378         {0x30, 0x17, 0x17, 1, 1},
8379         {0x31, 0xff, 0xff, 1, 1},
8380         {0x32, 0x20, 0x20, 0, 0},
8381         {0x33, 0, 0, 0, 0},
8382         {0x34, 0x88, 0x88, 0, 0},
8383         {0x35, 0x32, 0x32, 0, 0},
8384         {0x36, 0x77, 0x77, 0, 0},
8385         {0x37, 0x17, 0x17, 1, 1},
8386         {0x38, 0xf0, 0xf0, 1, 1},
8387         {0x39, 0x20, 0x20, 0, 0},
8388         {0x3A, 0x8, 0x8, 0, 0},
8389         {0x3B, 0x99, 0x99, 0, 0},
8390         {0x3C, 0, 0, 0, 0},
8391         {0x3D, 0x44, 0x44, 1, 1},
8392         {0x3E, 0, 0, 0, 0},
8393         {0x3F, 0x44, 0x44, 0, 0},
8394         {0x40, 0xf, 0xf, 1, 1},
8395         {0x41, 0x6, 0x6, 0, 0},
8396         {0x42, 0x4, 0x4, 0, 0},
8397         {0x43, 0x50, 0x50, 1, 1},
8398         {0x44, 0x8, 0x8, 0, 0},
8399         {0x45, 0x99, 0x99, 0, 0},
8400         {0x46, 0, 0, 0, 0},
8401         {0x47, 0x11, 0x11, 0, 0},
8402         {0x48, 0, 0, 0, 0},
8403         {0x49, 0x44, 0x44, 0, 0},
8404         {0x4A, 0x7, 0x7, 0, 0},
8405         {0x4B, 0x6, 0x6, 0, 0},
8406         {0x4C, 0x4, 0x4, 0, 0},
8407         {0x4D, 0, 0, 0, 0},
8408         {0x4E, 0, 0, 0, 0},
8409         {0x4F, 0x66, 0x66, 0, 0},
8410         {0x50, 0x66, 0x66, 0, 0},
8411         {0x51, 0x57, 0x57, 0, 0},
8412         {0x52, 0x57, 0x57, 0, 0},
8413         {0x53, 0x44, 0x44, 0, 0},
8414         {0x54, 0, 0, 0, 0},
8415         {0x55, 0, 0, 0, 0},
8416         {0x56, 0x8, 0x8, 0, 0},
8417         {0x57, 0x8, 0x8, 0, 0},
8418         {0x58, 0x7, 0x7, 0, 0},
8419         {0x59, 0x22, 0x22, 0, 0},
8420         {0x5A, 0x22, 0x22, 0, 0},
8421         {0x5B, 0x2, 0x2, 0, 0},
8422         {0x5C, 0x23, 0x23, 0, 0},
8423         {0x5D, 0x7, 0x7, 0, 0},
8424         {0x5E, 0x55, 0x55, 0, 0},
8425         {0x5F, 0x23, 0x23, 0, 0},
8426         {0x60, 0x41, 0x41, 0, 0},
8427         {0x61, 0x1, 0x1, 0, 0},
8428         {0x62, 0xa, 0xa, 0, 0},
8429         {0x63, 0, 0, 0, 0},
8430         {0x64, 0, 0, 0, 0},
8431         {0x65, 0, 0, 0, 0},
8432         {0x66, 0, 0, 0, 0},
8433         {0x67, 0, 0, 0, 0},
8434         {0x68, 0, 0, 0, 0},
8435         {0x69, 0, 0, 0, 0},
8436         {0x6A, 0, 0, 0, 0},
8437         {0x6B, 0xc, 0xc, 0, 0},
8438         {0x6C, 0, 0, 0, 0},
8439         {0x6D, 0, 0, 0, 0},
8440         {0x6E, 0, 0, 0, 0},
8441         {0x6F, 0, 0, 0, 0},
8442         {0x70, 0, 0, 0, 0},
8443         {0x71, 0, 0, 0, 0},
8444         {0x72, 0x22, 0x22, 0, 0},
8445         {0x73, 0x22, 0x22, 0, 0},
8446         {0x74, 0x2, 0x2, 0, 0},
8447         {0x75, 0xa, 0xa, 0, 0},
8448         {0x76, 0x1, 0x1, 0, 0},
8449         {0x77, 0x22, 0x22, 0, 0},
8450         {0x78, 0x30, 0x30, 0, 0},
8451         {0x79, 0, 0, 0, 0},
8452         {0x7A, 0, 0, 0, 0},
8453         {0x7B, 0, 0, 0, 0},
8454         {0x7C, 0, 0, 0, 0},
8455         {0x7D, 0, 0, 0, 0},
8456         {0x7E, 0, 0, 0, 0},
8457         {0x7F, 0, 0, 0, 0},
8458         {0x80, 0, 0, 0, 0},
8459         {0x81, 0, 0, 0, 0},
8460         {0x82, 0, 0, 0, 0},
8461         {0x83, 0, 0, 0, 0},
8462         {0x84, 0, 0, 0, 0},
8463         {0x85, 0, 0, 0, 0},
8464         {0x86, 0, 0, 0, 0},
8465         {0x87, 0, 0, 0, 0},
8466         {0x88, 0, 0, 0, 0},
8467         {0x89, 0, 0, 0, 0},
8468         {0x8A, 0, 0, 0, 0},
8469         {0x8B, 0, 0, 0, 0},
8470         {0x8C, 0, 0, 0, 0},
8471         {0x8D, 0, 0, 0, 0},
8472         {0x8E, 0, 0, 0, 0},
8473         {0x8F, 0, 0, 0, 0},
8474         {0x90, 0, 0, 0, 0},
8475         {0x91, 0, 0, 0, 0},
8476         {0x92, 0, 0, 0, 0},
8477         {0x93, 0, 0, 0, 0},
8478         {0x94, 0, 0, 0, 0},
8479         {0xFFFF, 0, 0, 0, 0}
8480 };
8481
8482 static struct radio_regs regs_SYN_2056_A1[] = {
8483         {0x02, 0, 0, 0, 0},
8484         {0x03, 0, 0, 0, 0},
8485         {0x04, 0, 0, 0, 0},
8486         {0x05, 0, 0, 0, 0},
8487         {0x06, 0, 0, 0, 0},
8488         {0x07, 0, 0, 0, 0},
8489         {0x08, 0, 0, 0, 0},
8490         {0x09, 0x1, 0x1, 0, 0},
8491         {0x0A, 0, 0, 0, 0},
8492         {0x0B, 0, 0, 0, 0},
8493         {0x0C, 0, 0, 0, 0},
8494         {0x0D, 0, 0, 0, 0},
8495         {0x0E, 0, 0, 0, 0},
8496         {0x0F, 0, 0, 0, 0},
8497         {0x10, 0, 0, 0, 0},
8498         {0x11, 0, 0, 0, 0},
8499         {0x12, 0, 0, 0, 0},
8500         {0x13, 0, 0, 0, 0},
8501         {0x14, 0, 0, 0, 0},
8502         {0x15, 0, 0, 0, 0},
8503         {0x16, 0, 0, 0, 0},
8504         {0x17, 0, 0, 0, 0},
8505         {0x18, 0, 0, 0, 0},
8506         {0x19, 0, 0, 0, 0},
8507         {0x1A, 0, 0, 0, 0},
8508         {0x1B, 0, 0, 0, 0},
8509         {0x1C, 0, 0, 0, 0},
8510         {0x1D, 0, 0, 0, 0},
8511         {0x1E, 0, 0, 0, 0},
8512         {0x1F, 0, 0, 0, 0},
8513         {0x20, 0, 0, 0, 0},
8514         {0x21, 0, 0, 0, 0},
8515         {0x22, 0x60, 0x60, 0, 0},
8516         {0x23, 0x6, 0x6, 0, 0},
8517         {0x24, 0xc, 0xc, 0, 0},
8518         {0x25, 0, 0, 0, 0},
8519         {0x26, 0, 0, 0, 0},
8520         {0x27, 0, 0, 0, 0},
8521         {0x28, 0x1, 0x1, 0, 0},
8522         {0x29, 0, 0, 0, 0},
8523         {0x2A, 0, 0, 0, 0},
8524         {0x2B, 0, 0, 0, 0},
8525         {0x2C, 0, 0, 0, 0},
8526         {0x2D, 0, 0, 0, 0},
8527         {0x2E, 0xd, 0xd, 0, 0},
8528         {0x2F, 0x1f, 0x1f, 0, 0},
8529         {0x30, 0x15, 0x15, 0, 0},
8530         {0x31, 0xf, 0xf, 0, 0},
8531         {0x32, 0, 0, 0, 0},
8532         {0x33, 0, 0, 0, 0},
8533         {0x34, 0, 0, 0, 0},
8534         {0x35, 0, 0, 0, 0},
8535         {0x36, 0, 0, 0, 0},
8536         {0x37, 0, 0, 0, 0},
8537         {0x38, 0, 0, 0, 0},
8538         {0x39, 0, 0, 0, 0},
8539         {0x3A, 0, 0, 0, 0},
8540         {0x3B, 0, 0, 0, 0},
8541         {0x3C, 0x13, 0x13, 0, 0},
8542         {0x3D, 0xf, 0xf, 0, 0},
8543         {0x3E, 0x18, 0x18, 0, 0},
8544         {0x3F, 0, 0, 0, 0},
8545         {0x40, 0, 0, 0, 0},
8546         {0x41, 0x20, 0x20, 0, 0},
8547         {0x42, 0x20, 0x20, 0, 0},
8548         {0x43, 0, 0, 0, 0},
8549         {0x44, 0x77, 0x77, 0, 0},
8550         {0x45, 0x7, 0x7, 0, 0},
8551         {0x46, 0x1, 0x1, 0, 0},
8552         {0x47, 0x4, 0x4, 0, 0},
8553         {0x48, 0xf, 0xf, 0, 0},
8554         {0x49, 0x30, 0x30, 0, 0},
8555         {0x4A, 0x32, 0x32, 0, 0},
8556         {0x4B, 0xd, 0xd, 0, 0},
8557         {0x4C, 0xd, 0xd, 0, 0},
8558         {0x4D, 0x4, 0x4, 0, 0},
8559         {0x4E, 0x6, 0x6, 0, 0},
8560         {0x4F, 0x1, 0x1, 0, 0},
8561         {0x50, 0x1c, 0x1c, 0, 0},
8562         {0x51, 0x2, 0x2, 0, 0},
8563         {0x52, 0x2, 0x2, 0, 0},
8564         {0x53, 0xf7, 0xf7, 1, 1},
8565         {0x54, 0xb4, 0xb4, 0, 0},
8566         {0x55, 0xd2, 0xd2, 0, 0},
8567         {0x56, 0, 0, 0, 0},
8568         {0x57, 0, 0, 0, 0},
8569         {0x58, 0x4, 0x4, 0, 0},
8570         {0x59, 0x96, 0x96, 0, 0},
8571         {0x5A, 0x3e, 0x3e, 0, 0},
8572         {0x5B, 0x3e, 0x3e, 0, 0},
8573         {0x5C, 0x13, 0x13, 0, 0},
8574         {0x5D, 0x2, 0x2, 0, 0},
8575         {0x5E, 0, 0, 0, 0},
8576         {0x5F, 0x7, 0x7, 0, 0},
8577         {0x60, 0x7, 0x7, 1, 1},
8578         {0x61, 0x8, 0x8, 0, 0},
8579         {0x62, 0x3, 0x3, 0, 0},
8580         {0x63, 0, 0, 0, 0},
8581         {0x64, 0, 0, 0, 0},
8582         {0x65, 0, 0, 0, 0},
8583         {0x66, 0, 0, 0, 0},
8584         {0x67, 0, 0, 0, 0},
8585         {0x68, 0x40, 0x40, 0, 0},
8586         {0x69, 0, 0, 0, 0},
8587         {0x6A, 0, 0, 0, 0},
8588         {0x6B, 0, 0, 0, 0},
8589         {0x6C, 0, 0, 0, 0},
8590         {0x6D, 0x1, 0x1, 0, 0},
8591         {0x6E, 0, 0, 0, 0},
8592         {0x6F, 0, 0, 0, 0},
8593         {0x70, 0x60, 0x60, 0, 0},
8594         {0x71, 0x66, 0x66, 0, 0},
8595         {0x72, 0xc, 0xc, 0, 0},
8596         {0x73, 0x66, 0x66, 0, 0},
8597         {0x74, 0x8f, 0x8f, 1, 1},
8598         {0x75, 0, 0, 0, 0},
8599         {0x76, 0xcc, 0xcc, 0, 0},
8600         {0x77, 0x1, 0x1, 0, 0},
8601         {0x78, 0x66, 0x66, 0, 0},
8602         {0x79, 0x66, 0x66, 0, 0},
8603         {0x7A, 0, 0, 0, 0},
8604         {0x7B, 0, 0, 0, 0},
8605         {0x7C, 0, 0, 0, 0},
8606         {0x7D, 0, 0, 0, 0},
8607         {0x7E, 0, 0, 0, 0},
8608         {0x7F, 0, 0, 0, 0},
8609         {0x80, 0, 0, 0, 0},
8610         {0x81, 0, 0, 0, 0},
8611         {0x82, 0, 0, 0, 0},
8612         {0x83, 0, 0, 0, 0},
8613         {0x84, 0, 0, 0, 0},
8614         {0x85, 0xff, 0xff, 0, 0},
8615         {0x86, 0, 0, 0, 0},
8616         {0x87, 0, 0, 0, 0},
8617         {0x88, 0, 0, 0, 0},
8618         {0x89, 0, 0, 0, 0},
8619         {0x8A, 0, 0, 0, 0},
8620         {0x8B, 0, 0, 0, 0},
8621         {0x8C, 0, 0, 0, 0},
8622         {0x8D, 0, 0, 0, 0},
8623         {0x8E, 0, 0, 0, 0},
8624         {0x8F, 0, 0, 0, 0},
8625         {0x90, 0, 0, 0, 0},
8626         {0x91, 0, 0, 0, 0},
8627         {0x92, 0, 0, 0, 0},
8628         {0x93, 0, 0, 0, 0},
8629         {0x94, 0, 0, 0, 0},
8630         {0x95, 0, 0, 0, 0},
8631         {0x96, 0, 0, 0, 0},
8632         {0x97, 0, 0, 0, 0},
8633         {0x98, 0, 0, 0, 0},
8634         {0x99, 0, 0, 0, 0},
8635         {0x9A, 0, 0, 0, 0},
8636         {0x9B, 0, 0, 0, 0},
8637         {0x9C, 0, 0, 0, 0},
8638         {0x9D, 0, 0, 0, 0},
8639         {0x9E, 0, 0, 0, 0},
8640         {0x9F, 0x6, 0x6, 0, 0},
8641         {0xA0, 0x66, 0x66, 0, 0},
8642         {0xA1, 0x66, 0x66, 0, 0},
8643         {0xA2, 0x66, 0x66, 0, 0},
8644         {0xA3, 0x66, 0x66, 0, 0},
8645         {0xA4, 0x66, 0x66, 0, 0},
8646         {0xA5, 0x66, 0x66, 0, 0},
8647         {0xA6, 0x66, 0x66, 0, 0},
8648         {0xA7, 0x66, 0x66, 0, 0},
8649         {0xA8, 0x66, 0x66, 0, 0},
8650         {0xA9, 0x66, 0x66, 0, 0},
8651         {0xAA, 0x66, 0x66, 0, 0},
8652         {0xAB, 0x66, 0x66, 0, 0},
8653         {0xAC, 0x66, 0x66, 0, 0},
8654         {0xAD, 0x66, 0x66, 0, 0},
8655         {0xAE, 0x66, 0x66, 0, 0},
8656         {0xAF, 0x66, 0x66, 0, 0},
8657         {0xB0, 0x66, 0x66, 0, 0},
8658         {0xB1, 0x66, 0x66, 0, 0},
8659         {0xB2, 0x66, 0x66, 0, 0},
8660         {0xB3, 0xa, 0xa, 0, 0},
8661         {0xB4, 0, 0, 0, 0},
8662         {0xB5, 0, 0, 0, 0},
8663         {0xB6, 0, 0, 0, 0},
8664         {0xFFFF, 0, 0, 0, 0}
8665 };
8666
8667 static struct radio_regs regs_TX_2056_A1[] = {
8668         {0x02, 0, 0, 0, 0},
8669         {0x03, 0, 0, 0, 0},
8670         {0x04, 0, 0, 0, 0},
8671         {0x05, 0, 0, 0, 0},
8672         {0x06, 0, 0, 0, 0},
8673         {0x07, 0, 0, 0, 0},
8674         {0x08, 0, 0, 0, 0},
8675         {0x09, 0, 0, 0, 0},
8676         {0x0A, 0, 0, 0, 0},
8677         {0x0B, 0, 0, 0, 0},
8678         {0x0C, 0, 0, 0, 0},
8679         {0x0D, 0, 0, 0, 0},
8680         {0x0E, 0, 0, 0, 0},
8681         {0x0F, 0, 0, 0, 0},
8682         {0x10, 0, 0, 0, 0},
8683         {0x11, 0, 0, 0, 0},
8684         {0x12, 0, 0, 0, 0},
8685         {0x13, 0, 0, 0, 0},
8686         {0x14, 0, 0, 0, 0},
8687         {0x15, 0, 0, 0, 0},
8688         {0x16, 0, 0, 0, 0},
8689         {0x17, 0, 0, 0, 0},
8690         {0x18, 0, 0, 0, 0},
8691         {0x19, 0, 0, 0, 0},
8692         {0x1A, 0, 0, 0, 0},
8693         {0x1B, 0, 0, 0, 0},
8694         {0x1C, 0, 0, 0, 0},
8695         {0x1D, 0, 0, 0, 0},
8696         {0x1E, 0, 0, 0, 0},
8697         {0x1F, 0, 0, 0, 0},
8698         {0x20, 0, 0, 0, 0},
8699         {0x21, 0x88, 0x88, 0, 0},
8700         {0x22, 0x88, 0x88, 0, 0},
8701         {0x23, 0x88, 0x88, 0, 0},
8702         {0x24, 0x88, 0x88, 0, 0},
8703         {0x25, 0xc, 0xc, 0, 0},
8704         {0x26, 0, 0, 0, 0},
8705         {0x27, 0x3, 0x3, 0, 0},
8706         {0x28, 0, 0, 0, 0},
8707         {0x29, 0x3, 0x3, 0, 0},
8708         {0x2A, 0x37, 0x37, 0, 0},
8709         {0x2B, 0x3, 0x3, 0, 0},
8710         {0x2C, 0, 0, 0, 0},
8711         {0x2D, 0, 0, 0, 0},
8712         {0x2E, 0x1, 0x1, 0, 0},
8713         {0x2F, 0x1, 0x1, 0, 0},
8714         {0x30, 0, 0, 0, 0},
8715         {0x31, 0, 0, 0, 0},
8716         {0x32, 0, 0, 0, 0},
8717         {0x33, 0x11, 0x11, 0, 0},
8718         {0x34, 0x11, 0x11, 0, 0},
8719         {0x35, 0, 0, 0, 0},
8720         {0x36, 0, 0, 0, 0},
8721         {0x37, 0x3, 0x3, 0, 0},
8722         {0x38, 0xf, 0xf, 0, 0},
8723         {0x39, 0, 0, 0, 0},
8724         {0x3A, 0x2d, 0x2d, 0, 0},
8725         {0x3B, 0, 0, 0, 0},
8726         {0x3C, 0x6e, 0x6e, 0, 0},
8727         {0x3D, 0xf0, 0xf0, 1, 1},
8728         {0x3E, 0, 0, 0, 0},
8729         {0x3F, 0, 0, 0, 0},
8730         {0x40, 0, 0, 0, 0},
8731         {0x41, 0x3, 0x3, 0, 0},
8732         {0x42, 0x3, 0x3, 0, 0},
8733         {0x43, 0, 0, 0, 0},
8734         {0x44, 0x1e, 0x1e, 0, 0},
8735         {0x45, 0, 0, 0, 0},
8736         {0x46, 0x6e, 0x6e, 0, 0},
8737         {0x47, 0xf0, 0xf0, 1, 1},
8738         {0x48, 0, 0, 0, 0},
8739         {0x49, 0x2, 0x2, 0, 0},
8740         {0x4A, 0xff, 0xff, 1, 1},
8741         {0x4B, 0xc, 0xc, 0, 0},
8742         {0x4C, 0, 0, 0, 0},
8743         {0x4D, 0x38, 0x38, 0, 0},
8744         {0x4E, 0x70, 0x70, 1, 1},
8745         {0x4F, 0x2, 0x2, 0, 0},
8746         {0x50, 0x88, 0x88, 0, 0},
8747         {0x51, 0xc, 0xc, 0, 0},
8748         {0x52, 0, 0, 0, 0},
8749         {0x53, 0x8, 0x8, 0, 0},
8750         {0x54, 0x70, 0x70, 1, 1},
8751         {0x55, 0x2, 0x2, 0, 0},
8752         {0x56, 0xff, 0xff, 1, 1},
8753         {0x57, 0, 0, 0, 0},
8754         {0x58, 0x83, 0x83, 0, 0},
8755         {0x59, 0x77, 0x77, 1, 1},
8756         {0x5A, 0, 0, 0, 0},
8757         {0x5B, 0x2, 0x2, 0, 0},
8758         {0x5C, 0x88, 0x88, 0, 0},
8759         {0x5D, 0, 0, 0, 0},
8760         {0x5E, 0x8, 0x8, 0, 0},
8761         {0x5F, 0x77, 0x77, 1, 1},
8762         {0x60, 0x1, 0x1, 0, 0},
8763         {0x61, 0, 0, 0, 0},
8764         {0x62, 0x7, 0x7, 0, 0},
8765         {0x63, 0, 0, 0, 0},
8766         {0x64, 0x7, 0x7, 0, 0},
8767         {0x65, 0, 0, 0, 0},
8768         {0x66, 0, 0, 0, 0},
8769         {0x67, 0x72, 0x72, 1, 1},
8770         {0x68, 0, 0, 0, 0},
8771         {0x69, 0xa, 0xa, 0, 0},
8772         {0x6A, 0, 0, 0, 0},
8773         {0x6B, 0, 0, 0, 0},
8774         {0x6C, 0, 0, 0, 0},
8775         {0x6D, 0, 0, 0, 0},
8776         {0x6E, 0, 0, 0, 0},
8777         {0x6F, 0, 0, 0, 0},
8778         {0x70, 0, 0, 0, 0},
8779         {0x71, 0x2, 0x2, 0, 0},
8780         {0x72, 0, 0, 0, 0},
8781         {0x73, 0, 0, 0, 0},
8782         {0x74, 0xe, 0xe, 0, 0},
8783         {0x75, 0xe, 0xe, 0, 0},
8784         {0x76, 0xe, 0xe, 0, 0},
8785         {0x77, 0x13, 0x13, 0, 0},
8786         {0x78, 0x13, 0x13, 0, 0},
8787         {0x79, 0x1b, 0x1b, 0, 0},
8788         {0x7A, 0x1b, 0x1b, 0, 0},
8789         {0x7B, 0x55, 0x55, 0, 0},
8790         {0x7C, 0x5b, 0x5b, 0, 0},
8791         {0x7D, 0, 0, 0, 0},
8792         {0x7E, 0, 0, 0, 0},
8793         {0x7F, 0, 0, 0, 0},
8794         {0x80, 0, 0, 0, 0},
8795         {0x81, 0, 0, 0, 0},
8796         {0x82, 0, 0, 0, 0},
8797         {0x83, 0, 0, 0, 0},
8798         {0x84, 0, 0, 0, 0},
8799         {0x85, 0, 0, 0, 0},
8800         {0x86, 0, 0, 0, 0},
8801         {0x87, 0, 0, 0, 0},
8802         {0x88, 0, 0, 0, 0},
8803         {0x89, 0, 0, 0, 0},
8804         {0x8A, 0, 0, 0, 0},
8805         {0x8B, 0, 0, 0, 0},
8806         {0x8C, 0, 0, 0, 0},
8807         {0x8D, 0, 0, 0, 0},
8808         {0x8E, 0, 0, 0, 0},
8809         {0x8F, 0, 0, 0, 0},
8810         {0x90, 0, 0, 0, 0},
8811         {0x91, 0, 0, 0, 0},
8812         {0x92, 0, 0, 0, 0},
8813         {0xFFFF, 0, 0, 0, 0}
8814 };
8815
8816 static struct radio_regs regs_RX_2056_A1[] = {
8817         {0x02, 0, 0, 0, 0},
8818         {0x03, 0, 0, 0, 0},
8819         {0x04, 0, 0, 0, 0},
8820         {0x05, 0, 0, 0, 0},
8821         {0x06, 0, 0, 0, 0},
8822         {0x07, 0, 0, 0, 0},
8823         {0x08, 0, 0, 0, 0},
8824         {0x09, 0, 0, 0, 0},
8825         {0x0A, 0, 0, 0, 0},
8826         {0x0B, 0, 0, 0, 0},
8827         {0x0C, 0, 0, 0, 0},
8828         {0x0D, 0, 0, 0, 0},
8829         {0x0E, 0, 0, 0, 0},
8830         {0x0F, 0, 0, 0, 0},
8831         {0x10, 0, 0, 0, 0},
8832         {0x11, 0, 0, 0, 0},
8833         {0x12, 0, 0, 0, 0},
8834         {0x13, 0, 0, 0, 0},
8835         {0x14, 0, 0, 0, 0},
8836         {0x15, 0, 0, 0, 0},
8837         {0x16, 0, 0, 0, 0},
8838         {0x17, 0, 0, 0, 0},
8839         {0x18, 0, 0, 0, 0},
8840         {0x19, 0, 0, 0, 0},
8841         {0x1A, 0, 0, 0, 0},
8842         {0x1B, 0, 0, 0, 0},
8843         {0x1C, 0, 0, 0, 0},
8844         {0x1D, 0, 0, 0, 0},
8845         {0x1E, 0, 0, 0, 0},
8846         {0x1F, 0, 0, 0, 0},
8847         {0x20, 0x3, 0x3, 0, 0},
8848         {0x21, 0, 0, 0, 0},
8849         {0x22, 0, 0, 0, 0},
8850         {0x23, 0x90, 0x90, 0, 0},
8851         {0x24, 0x55, 0x55, 0, 0},
8852         {0x25, 0x15, 0x15, 0, 0},
8853         {0x26, 0x5, 0x5, 0, 0},
8854         {0x27, 0x15, 0x15, 0, 0},
8855         {0x28, 0x5, 0x5, 0, 0},
8856         {0x29, 0x20, 0x20, 0, 0},
8857         {0x2A, 0x11, 0x11, 0, 0},
8858         {0x2B, 0x90, 0x90, 0, 0},
8859         {0x2C, 0, 0, 0, 0},
8860         {0x2D, 0x88, 0x88, 0, 0},
8861         {0x2E, 0x32, 0x32, 0, 0},
8862         {0x2F, 0x77, 0x77, 0, 0},
8863         {0x30, 0x17, 0x17, 1, 1},
8864         {0x31, 0xff, 0xff, 1, 1},
8865         {0x32, 0x20, 0x20, 0, 0},
8866         {0x33, 0, 0, 0, 0},
8867         {0x34, 0x88, 0x88, 0, 0},
8868         {0x35, 0x32, 0x32, 0, 0},
8869         {0x36, 0x77, 0x77, 0, 0},
8870         {0x37, 0x17, 0x17, 1, 1},
8871         {0x38, 0xf0, 0xf0, 1, 1},
8872         {0x39, 0x20, 0x20, 0, 0},
8873         {0x3A, 0x8, 0x8, 0, 0},
8874         {0x3B, 0x55, 0x55, 1, 1},
8875         {0x3C, 0, 0, 0, 0},
8876         {0x3D, 0x44, 0x44, 1, 1},
8877         {0x3E, 0, 0, 0, 0},
8878         {0x3F, 0x44, 0x44, 0, 0},
8879         {0x40, 0xf, 0xf, 1, 1},
8880         {0x41, 0x6, 0x6, 0, 0},
8881         {0x42, 0x4, 0x4, 0, 0},
8882         {0x43, 0x50, 0x50, 1, 1},
8883         {0x44, 0x8, 0x8, 0, 0},
8884         {0x45, 0x55, 0x55, 1, 1},
8885         {0x46, 0, 0, 0, 0},
8886         {0x47, 0x11, 0x11, 0, 0},
8887         {0x48, 0, 0, 0, 0},
8888         {0x49, 0x44, 0x44, 0, 0},
8889         {0x4A, 0x7, 0x7, 0, 0},
8890         {0x4B, 0x6, 0x6, 0, 0},
8891         {0x4C, 0x4, 0x4, 0, 0},
8892         {0x4D, 0, 0, 0, 0},
8893         {0x4E, 0, 0, 0, 0},
8894         {0x4F, 0x26, 0x26, 1, 1},
8895         {0x50, 0x26, 0x26, 1, 1},
8896         {0x51, 0xf, 0xf, 1, 1},
8897         {0x52, 0xf, 0xf, 1, 1},
8898         {0x53, 0x44, 0x44, 0, 0},
8899         {0x54, 0, 0, 0, 0},
8900         {0x55, 0, 0, 0, 0},
8901         {0x56, 0x8, 0x8, 0, 0},
8902         {0x57, 0x8, 0x8, 0, 0},
8903         {0x58, 0x7, 0x7, 0, 0},
8904         {0x59, 0x22, 0x22, 0, 0},
8905         {0x5A, 0x22, 0x22, 0, 0},
8906         {0x5B, 0x2, 0x2, 0, 0},
8907         {0x5C, 0x2f, 0x2f, 1, 1},
8908         {0x5D, 0x7, 0x7, 0, 0},
8909         {0x5E, 0x55, 0x55, 0, 0},
8910         {0x5F, 0x23, 0x23, 0, 0},
8911         {0x60, 0x41, 0x41, 0, 0},
8912         {0x61, 0x1, 0x1, 0, 0},
8913         {0x62, 0xa, 0xa, 0, 0},
8914         {0x63, 0, 0, 0, 0},
8915         {0x64, 0, 0, 0, 0},
8916         {0x65, 0, 0, 0, 0},
8917         {0x66, 0, 0, 0, 0},
8918         {0x67, 0, 0, 0, 0},
8919         {0x68, 0, 0, 0, 0},
8920         {0x69, 0, 0, 0, 0},
8921         {0x6A, 0, 0, 0, 0},
8922         {0x6B, 0xc, 0xc, 0, 0},
8923         {0x6C, 0, 0, 0, 0},
8924         {0x6D, 0, 0, 0, 0},
8925         {0x6E, 0, 0, 0, 0},
8926         {0x6F, 0, 0, 0, 0},
8927         {0x70, 0, 0, 0, 0},
8928         {0x71, 0, 0, 0, 0},
8929         {0x72, 0x22, 0x22, 0, 0},
8930         {0x73, 0x22, 0x22, 0, 0},
8931         {0x74, 0, 0, 1, 1},
8932         {0x75, 0xa, 0xa, 0, 0},
8933         {0x76, 0x1, 0x1, 0, 0},
8934         {0x77, 0x22, 0x22, 0, 0},
8935         {0x78, 0x30, 0x30, 0, 0},
8936         {0x79, 0, 0, 0, 0},
8937         {0x7A, 0, 0, 0, 0},
8938         {0x7B, 0, 0, 0, 0},
8939         {0x7C, 0, 0, 0, 0},
8940         {0x7D, 0, 0, 0, 0},
8941         {0x7E, 0, 0, 0, 0},
8942         {0x7F, 0, 0, 0, 0},
8943         {0x80, 0, 0, 0, 0},
8944         {0x81, 0, 0, 0, 0},
8945         {0x82, 0, 0, 0, 0},
8946         {0x83, 0, 0, 0, 0},
8947         {0x84, 0, 0, 0, 0},
8948         {0x85, 0, 0, 0, 0},
8949         {0x86, 0, 0, 0, 0},
8950         {0x87, 0, 0, 0, 0},
8951         {0x88, 0, 0, 0, 0},
8952         {0x89, 0, 0, 0, 0},
8953         {0x8A, 0, 0, 0, 0},
8954         {0x8B, 0, 0, 0, 0},
8955         {0x8C, 0, 0, 0, 0},
8956         {0x8D, 0, 0, 0, 0},
8957         {0x8E, 0, 0, 0, 0},
8958         {0x8F, 0, 0, 0, 0},
8959         {0x90, 0, 0, 0, 0},
8960         {0x91, 0, 0, 0, 0},
8961         {0x92, 0, 0, 0, 0},
8962         {0x93, 0, 0, 0, 0},
8963         {0x94, 0, 0, 0, 0},
8964         {0xFFFF, 0, 0, 0, 0}
8965 };
8966
8967 static struct radio_regs regs_SYN_2056_rev5[] = {
8968         {0x02, 0, 0, 0, 0},
8969         {0x03, 0, 0, 0, 0},
8970         {0x04, 0, 0, 0, 0},
8971         {0x05, 0, 0, 0, 0},
8972         {0x06, 0, 0, 0, 0},
8973         {0x07, 0, 0, 0, 0},
8974         {0x08, 0, 0, 0, 0},
8975         {0x09, 0x1, 0x1, 0, 0},
8976         {0x0A, 0, 0, 0, 0},
8977         {0x0B, 0, 0, 0, 0},
8978         {0x0C, 0, 0, 0, 0},
8979         {0x0D, 0, 0, 0, 0},
8980         {0x0E, 0, 0, 0, 0},
8981         {0x0F, 0, 0, 0, 0},
8982         {0x10, 0, 0, 0, 0},
8983         {0x11, 0, 0, 0, 0},
8984         {0x12, 0, 0, 0, 0},
8985         {0x13, 0, 0, 0, 0},
8986         {0x14, 0, 0, 0, 0},
8987         {0x15, 0, 0, 0, 0},
8988         {0x16, 0, 0, 0, 0},
8989         {0x17, 0, 0, 0, 0},
8990         {0x18, 0, 0, 0, 0},
8991         {0x19, 0, 0, 0, 0},
8992         {0x1A, 0, 0, 0, 0},
8993         {0x1B, 0, 0, 0, 0},
8994         {0x1C, 0, 0, 0, 0},
8995         {0x1D, 0, 0, 0, 0},
8996         {0x1E, 0, 0, 0, 0},
8997         {0x1F, 0, 0, 0, 0},
8998         {0x20, 0, 0, 0, 0},
8999         {0x21, 0, 0, 0, 0},
9000         {0x22, 0x60, 0x60, 0, 0},
9001         {0x23, 0x6, 0x6, 0, 0},
9002         {0x24, 0xc, 0xc, 0, 0},
9003         {0x25, 0, 0, 0, 0},
9004         {0x26, 0, 0, 0, 0},
9005         {0x27, 0, 0, 0, 0},
9006         {0x28, 0x1, 0x1, 0, 0},
9007         {0x29, 0, 0, 0, 0},
9008         {0x2A, 0, 0, 0, 0},
9009         {0x2B, 0, 0, 0, 0},
9010         {0x2C, 0, 0, 0, 0},
9011         {0x2D, 0, 0, 0, 0},
9012         {0x2E, 0, 0, 0, 0},
9013         {0x2F, 0x1f, 0x1f, 0, 0},
9014         {0x30, 0x15, 0x15, 0, 0},
9015         {0x31, 0xf, 0xf, 0, 0},
9016         {0x32, 0, 0, 0, 0},
9017         {0x33, 0, 0, 0, 0},
9018         {0x34, 0, 0, 0, 0},
9019         {0x35, 0, 0, 0, 0},
9020         {0x36, 0, 0, 0, 0},
9021         {0x37, 0, 0, 0, 0},
9022         {0x38, 0, 0, 0, 0},
9023         {0x39, 0, 0, 0, 0},
9024         {0x3A, 0, 0, 0, 0},
9025         {0x3B, 0, 0, 0, 0},
9026         {0x3C, 0x13, 0x13, 0, 0},
9027         {0x3D, 0xf, 0xf, 0, 0},
9028         {0x3E, 0x18, 0x18, 0, 0},
9029         {0x3F, 0, 0, 0, 0},
9030         {0x40, 0, 0, 0, 0},
9031         {0x41, 0x20, 0x20, 0, 0},
9032         {0x42, 0x20, 0x20, 0, 0},
9033         {0x43, 0, 0, 0, 0},
9034         {0x44, 0x77, 0x77, 0, 0},
9035         {0x45, 0x7, 0x7, 0, 0},
9036         {0x46, 0x1, 0x1, 0, 0},
9037         {0x47, 0x4, 0x4, 0, 0},
9038         {0x48, 0xf, 0xf, 0, 0},
9039         {0x49, 0x30, 0x30, 0, 0},
9040         {0x4A, 0x32, 0x32, 0, 0},
9041         {0x4B, 0xd, 0xd, 0, 0},
9042         {0x4C, 0xd, 0xd, 0, 0},
9043         {0x4D, 0x4, 0x4, 0, 0},
9044         {0x4E, 0x6, 0x6, 0, 0},
9045         {0x4F, 0x1, 0x1, 0, 0},
9046         {0x50, 0x1c, 0x1c, 0, 0},
9047         {0x51, 0x2, 0x2, 0, 0},
9048         {0x52, 0x2, 0x2, 0, 0},
9049         {0x53, 0xf7, 0xf7, 1, 1},
9050         {0x54, 0xb4, 0xb4, 0, 0},
9051         {0x55, 0xd2, 0xd2, 0, 0},
9052         {0x56, 0, 0, 0, 0},
9053         {0x57, 0, 0, 0, 0},
9054         {0x58, 0x4, 0x4, 0, 0},
9055         {0x59, 0x96, 0x96, 0, 0},
9056         {0x5A, 0x3e, 0x3e, 0, 0},
9057         {0x5B, 0x3e, 0x3e, 0, 0},
9058         {0x5C, 0x13, 0x13, 0, 0},
9059         {0x5D, 0x2, 0x2, 0, 0},
9060         {0x5E, 0, 0, 0, 0},
9061         {0x5F, 0x7, 0x7, 0, 0},
9062         {0x60, 0x7, 0x7, 1, 1},
9063         {0x61, 0x8, 0x8, 0, 0},
9064         {0x62, 0x3, 0x3, 0, 0},
9065         {0x63, 0, 0, 0, 0},
9066         {0x64, 0, 0, 0, 0},
9067         {0x65, 0, 0, 0, 0},
9068         {0x66, 0, 0, 0, 0},
9069         {0x67, 0, 0, 0, 0},
9070         {0x68, 0x40, 0x40, 0, 0},
9071         {0x69, 0, 0, 0, 0},
9072         {0x6A, 0, 0, 0, 0},
9073         {0x6B, 0, 0, 0, 0},
9074         {0x6C, 0, 0, 0, 0},
9075         {0x6D, 0x1, 0x1, 0, 0},
9076         {0x6E, 0, 0, 0, 0},
9077         {0x6F, 0, 0, 0, 0},
9078         {0x70, 0x60, 0x60, 0, 0},
9079         {0x71, 0x66, 0x66, 0, 0},
9080         {0x72, 0xc, 0xc, 0, 0},
9081         {0x73, 0x66, 0x66, 0, 0},
9082         {0x74, 0x8f, 0x8f, 1, 1},
9083         {0x75, 0, 0, 0, 0},
9084         {0x76, 0xcc, 0xcc, 0, 0},
9085         {0x77, 0x1, 0x1, 0, 0},
9086         {0x78, 0x66, 0x66, 0, 0},
9087         {0x79, 0x66, 0x66, 0, 0},
9088         {0x7A, 0, 0, 0, 0},
9089         {0x7B, 0, 0, 0, 0},
9090         {0x7C, 0, 0, 0, 0},
9091         {0x7D, 0, 0, 0, 0},
9092         {0x7E, 0, 0, 0, 0},
9093         {0x7F, 0, 0, 0, 0},
9094         {0x80, 0, 0, 0, 0},
9095         {0x81, 0, 0, 0, 0},
9096         {0x82, 0, 0, 0, 0},
9097         {0x83, 0, 0, 0, 0},
9098         {0x84, 0, 0, 0, 0},
9099         {0x85, 0xff, 0xff, 0, 0},
9100         {0x86, 0, 0, 0, 0},
9101         {0x87, 0, 0, 0, 0},
9102         {0x88, 0, 0, 0, 0},
9103         {0x89, 0, 0, 0, 0},
9104         {0x8A, 0, 0, 0, 0},
9105         {0x8B, 0, 0, 0, 0},
9106         {0x8C, 0, 0, 0, 0},
9107         {0x8D, 0, 0, 0, 0},
9108         {0x8E, 0, 0, 0, 0},
9109         {0x8F, 0, 0, 0, 0},
9110         {0x90, 0, 0, 0, 0},
9111         {0x91, 0, 0, 0, 0},
9112         {0x92, 0, 0, 0, 0},
9113         {0x93, 0, 0, 0, 0},
9114         {0x94, 0, 0, 0, 0},
9115         {0x95, 0, 0, 0, 0},
9116         {0x96, 0, 0, 0, 0},
9117         {0x97, 0, 0, 0, 0},
9118         {0x98, 0, 0, 0, 0},
9119         {0x99, 0, 0, 0, 0},
9120         {0x9A, 0, 0, 0, 0},
9121         {0x9B, 0, 0, 0, 0},
9122         {0x9C, 0, 0, 0, 0},
9123         {0x9D, 0, 0, 0, 0},
9124         {0x9E, 0, 0, 0, 0},
9125         {0x9F, 0x6, 0x6, 0, 0},
9126         {0xA0, 0x66, 0x66, 0, 0},
9127         {0xA1, 0x66, 0x66, 0, 0},
9128         {0xA2, 0x66, 0x66, 0, 0},
9129         {0xA3, 0x66, 0x66, 0, 0},
9130         {0xA4, 0x66, 0x66, 0, 0},
9131         {0xA5, 0x66, 0x66, 0, 0},
9132         {0xA6, 0x66, 0x66, 0, 0},
9133         {0xA7, 0x66, 0x66, 0, 0},
9134         {0xA8, 0x66, 0x66, 0, 0},
9135         {0xA9, 0x66, 0x66, 0, 0},
9136         {0xAA, 0x66, 0x66, 0, 0},
9137         {0xAB, 0x66, 0x66, 0, 0},
9138         {0xAC, 0x66, 0x66, 0, 0},
9139         {0xAD, 0x66, 0x66, 0, 0},
9140         {0xAE, 0x66, 0x66, 0, 0},
9141         {0xAF, 0x66, 0x66, 0, 0},
9142         {0xB0, 0x66, 0x66, 0, 0},
9143         {0xB1, 0x66, 0x66, 0, 0},
9144         {0xB2, 0x66, 0x66, 0, 0},
9145         {0xB3, 0xa, 0xa, 0, 0},
9146         {0xB4, 0, 0, 0, 0},
9147         {0xB5, 0, 0, 0, 0},
9148         {0xB6, 0, 0, 0, 0},
9149         {0xFFFF, 0, 0, 0, 0}
9150 };
9151
9152 static struct radio_regs regs_TX_2056_rev5[] = {
9153         {0x02, 0, 0, 0, 0},
9154         {0x03, 0, 0, 0, 0},
9155         {0x04, 0, 0, 0, 0},
9156         {0x05, 0, 0, 0, 0},
9157         {0x06, 0, 0, 0, 0},
9158         {0x07, 0, 0, 0, 0},
9159         {0x08, 0, 0, 0, 0},
9160         {0x09, 0, 0, 0, 0},
9161         {0x0A, 0, 0, 0, 0},
9162         {0x0B, 0, 0, 0, 0},
9163         {0x0C, 0, 0, 0, 0},
9164         {0x0D, 0, 0, 0, 0},
9165         {0x0E, 0, 0, 0, 0},
9166         {0x0F, 0, 0, 0, 0},
9167         {0x10, 0, 0, 0, 0},
9168         {0x11, 0, 0, 0, 0},
9169         {0x12, 0, 0, 0, 0},
9170         {0x13, 0, 0, 0, 0},
9171         {0x14, 0, 0, 0, 0},
9172         {0x15, 0, 0, 0, 0},
9173         {0x16, 0, 0, 0, 0},
9174         {0x17, 0, 0, 0, 0},
9175         {0x18, 0, 0, 0, 0},
9176         {0x19, 0, 0, 0, 0},
9177         {0x1A, 0, 0, 0, 0},
9178         {0x1B, 0, 0, 0, 0},
9179         {0x1C, 0, 0, 0, 0},
9180         {0x1D, 0, 0, 0, 0},
9181         {0x1E, 0, 0, 0, 0},
9182         {0x1F, 0, 0, 0, 0},
9183         {0x20, 0, 0, 0, 0},
9184         {0x21, 0x88, 0x88, 0, 0},
9185         {0x22, 0x88, 0x88, 0, 0},
9186         {0x23, 0x88, 0x88, 0, 0},
9187         {0x24, 0x88, 0x88, 0, 0},
9188         {0x25, 0xc, 0xc, 0, 0},
9189         {0x26, 0, 0, 0, 0},
9190         {0x27, 0x3, 0x3, 0, 0},
9191         {0x28, 0, 0, 0, 0},
9192         {0x29, 0x3, 0x3, 0, 0},
9193         {0x2A, 0x37, 0x37, 0, 0},
9194         {0x2B, 0x3, 0x3, 0, 0},
9195         {0x2C, 0, 0, 0, 0},
9196         {0x2D, 0, 0, 0, 0},
9197         {0x2E, 0x1, 0x1, 0, 0},
9198         {0x2F, 0x1, 0x1, 0, 0},
9199         {0x30, 0, 0, 0, 0},
9200         {0x31, 0, 0, 0, 0},
9201         {0x32, 0, 0, 0, 0},
9202         {0x33, 0x11, 0x11, 0, 0},
9203         {0x34, 0x11, 0x11, 0, 0},
9204         {0x35, 0, 0, 0, 0},
9205         {0x36, 0, 0, 0, 0},
9206         {0x37, 0x3, 0x3, 0, 0},
9207         {0x38, 0xf, 0xf, 0, 0},
9208         {0x39, 0, 0, 0, 0},
9209         {0x3A, 0x2d, 0x2d, 0, 0},
9210         {0x3B, 0, 0, 0, 0},
9211         {0x3C, 0x6e, 0x6e, 0, 0},
9212         {0x3D, 0xf0, 0xf0, 1, 1},
9213         {0x3E, 0, 0, 0, 0},
9214         {0x3F, 0, 0, 0, 0},
9215         {0x40, 0, 0, 0, 0},
9216         {0x41, 0x3, 0x3, 0, 0},
9217         {0x42, 0x3, 0x3, 0, 0},
9218         {0x43, 0, 0, 0, 0},
9219         {0x44, 0x1e, 0x1e, 0, 0},
9220         {0x45, 0, 0, 0, 0},
9221         {0x46, 0x6e, 0x6e, 0, 0},
9222         {0x47, 0xf0, 0xf0, 1, 1},
9223         {0x48, 0, 0, 0, 0},
9224         {0x49, 0x2, 0x2, 0, 0},
9225         {0x4A, 0xff, 0xff, 1, 1},
9226         {0x4B, 0xc, 0xc, 0, 0},
9227         {0x4C, 0, 0, 0, 0},
9228         {0x4D, 0x38, 0x38, 0, 0},
9229         {0x4E, 0x70, 0x70, 1, 1},
9230         {0x4F, 0x2, 0x2, 0, 0},
9231         {0x50, 0x88, 0x88, 0, 0},
9232         {0x51, 0xc, 0xc, 0, 0},
9233         {0x52, 0, 0, 0, 0},
9234         {0x53, 0x8, 0x8, 0, 0},
9235         {0x54, 0x70, 0x70, 1, 1},
9236         {0x55, 0x2, 0x2, 0, 0},
9237         {0x56, 0xff, 0xff, 1, 1},
9238         {0x57, 0, 0, 0, 0},
9239         {0x58, 0x83, 0x83, 0, 0},
9240         {0x59, 0x77, 0x77, 1, 1},
9241         {0x5A, 0, 0, 0, 0},
9242         {0x5B, 0x2, 0x2, 0, 0},
9243         {0x5C, 0x88, 0x88, 0, 0},
9244         {0x5D, 0, 0, 0, 0},
9245         {0x5E, 0x8, 0x8, 0, 0},
9246         {0x5F, 0x77, 0x77, 1, 1},
9247         {0x60, 0x1, 0x1, 0, 0},
9248         {0x61, 0, 0, 0, 0},
9249         {0x62, 0x7, 0x7, 0, 0},
9250         {0x63, 0, 0, 0, 0},
9251         {0x64, 0x7, 0x7, 0, 0},
9252         {0x65, 0, 0, 0, 0},
9253         {0x66, 0, 0, 0, 0},
9254         {0x67, 0, 0, 1, 1},
9255         {0x68, 0, 0, 0, 0},
9256         {0x69, 0xa, 0xa, 0, 0},
9257         {0x6A, 0, 0, 0, 0},
9258         {0x6B, 0, 0, 0, 0},
9259         {0x6C, 0, 0, 0, 0},
9260         {0x6D, 0, 0, 0, 0},
9261         {0x6E, 0, 0, 0, 0},
9262         {0x6F, 0, 0, 0, 0},
9263         {0x70, 0, 0, 0, 0},
9264         {0x71, 0x2, 0x2, 0, 0},
9265         {0x72, 0, 0, 0, 0},
9266         {0x73, 0, 0, 0, 0},
9267         {0x74, 0xe, 0xe, 0, 0},
9268         {0x75, 0xe, 0xe, 0, 0},
9269         {0x76, 0xe, 0xe, 0, 0},
9270         {0x77, 0x13, 0x13, 0, 0},
9271         {0x78, 0x13, 0x13, 0, 0},
9272         {0x79, 0x1b, 0x1b, 0, 0},
9273         {0x7A, 0x1b, 0x1b, 0, 0},
9274         {0x7B, 0x55, 0x55, 0, 0},
9275         {0x7C, 0x5b, 0x5b, 0, 0},
9276         {0x7D, 0, 0, 0, 0},
9277         {0x7E, 0, 0, 0, 0},
9278         {0x7F, 0, 0, 0, 0},
9279         {0x80, 0, 0, 0, 0},
9280         {0x81, 0, 0, 0, 0},
9281         {0x82, 0, 0, 0, 0},
9282         {0x83, 0, 0, 0, 0},
9283         {0x84, 0, 0, 0, 0},
9284         {0x85, 0, 0, 0, 0},
9285         {0x86, 0, 0, 0, 0},
9286         {0x87, 0, 0, 0, 0},
9287         {0x88, 0, 0, 0, 0},
9288         {0x89, 0, 0, 0, 0},
9289         {0x8A, 0, 0, 0, 0},
9290         {0x8B, 0, 0, 0, 0},
9291         {0x8C, 0, 0, 0, 0},
9292         {0x8D, 0, 0, 0, 0},
9293         {0x8E, 0, 0, 0, 0},
9294         {0x8F, 0, 0, 0, 0},
9295         {0x90, 0, 0, 0, 0},
9296         {0x91, 0, 0, 0, 0},
9297         {0x92, 0, 0, 0, 0},
9298         {0x93, 0x70, 0x70, 0, 0},
9299         {0x94, 0x70, 0x70, 0, 0},
9300         {0x95, 0x71, 0x71, 1, 1},
9301         {0x96, 0x71, 0x71, 1, 1},
9302         {0x97, 0x72, 0x72, 1, 1},
9303         {0x98, 0x73, 0x73, 1, 1},
9304         {0x99, 0x74, 0x74, 1, 1},
9305         {0x9A, 0x75, 0x75, 1, 1},
9306         {0xFFFF, 0, 0, 0, 0}
9307 };
9308
9309 static struct radio_regs regs_RX_2056_rev5[] = {
9310         {0x02, 0, 0, 0, 0},
9311         {0x03, 0, 0, 0, 0},
9312         {0x04, 0, 0, 0, 0},
9313         {0x05, 0, 0, 0, 0},
9314         {0x06, 0, 0, 0, 0},
9315         {0x07, 0, 0, 0, 0},
9316         {0x08, 0, 0, 0, 0},
9317         {0x09, 0, 0, 0, 0},
9318         {0x0A, 0, 0, 0, 0},
9319         {0x0B, 0, 0, 0, 0},
9320         {0x0C, 0, 0, 0, 0},
9321         {0x0D, 0, 0, 0, 0},
9322         {0x0E, 0, 0, 0, 0},
9323         {0x0F, 0, 0, 0, 0},
9324         {0x10, 0, 0, 0, 0},
9325         {0x11, 0, 0, 0, 0},
9326         {0x12, 0, 0, 0, 0},
9327         {0x13, 0, 0, 0, 0},
9328         {0x14, 0, 0, 0, 0},
9329         {0x15, 0, 0, 0, 0},
9330         {0x16, 0, 0, 0, 0},
9331         {0x17, 0, 0, 0, 0},
9332         {0x18, 0, 0, 0, 0},
9333         {0x19, 0, 0, 0, 0},
9334         {0x1A, 0, 0, 0, 0},
9335         {0x1B, 0, 0, 0, 0},
9336         {0x1C, 0, 0, 0, 0},
9337         {0x1D, 0, 0, 0, 0},
9338         {0x1E, 0, 0, 0, 0},
9339         {0x1F, 0, 0, 0, 0},
9340         {0x20, 0x3, 0x3, 0, 0},
9341         {0x21, 0, 0, 0, 0},
9342         {0x22, 0, 0, 0, 0},
9343         {0x23, 0x90, 0x90, 0, 0},
9344         {0x24, 0x55, 0x55, 0, 0},
9345         {0x25, 0x15, 0x15, 0, 0},
9346         {0x26, 0x5, 0x5, 0, 0},
9347         {0x27, 0x15, 0x15, 0, 0},
9348         {0x28, 0x5, 0x5, 0, 0},
9349         {0x29, 0x20, 0x20, 0, 0},
9350         {0x2A, 0x11, 0x11, 0, 0},
9351         {0x2B, 0x90, 0x90, 0, 0},
9352         {0x2C, 0, 0, 0, 0},
9353         {0x2D, 0x88, 0x88, 0, 0},
9354         {0x2E, 0x32, 0x32, 0, 0},
9355         {0x2F, 0x77, 0x77, 0, 0},
9356         {0x30, 0x17, 0x17, 1, 1},
9357         {0x31, 0xff, 0xff, 1, 1},
9358         {0x32, 0x20, 0x20, 0, 0},
9359         {0x33, 0, 0, 0, 0},
9360         {0x34, 0x88, 0x88, 0, 0},
9361         {0x35, 0x32, 0x32, 0, 0},
9362         {0x36, 0x77, 0x77, 0, 0},
9363         {0x37, 0x17, 0x17, 1, 1},
9364         {0x38, 0xf0, 0xf0, 1, 1},
9365         {0x39, 0x20, 0x20, 0, 0},
9366         {0x3A, 0x8, 0x8, 0, 0},
9367         {0x3B, 0x55, 0x55, 1, 1},
9368         {0x3C, 0, 0, 0, 0},
9369         {0x3D, 0x88, 0x88, 1, 1},
9370         {0x3E, 0, 0, 0, 0},
9371         {0x3F, 0, 0, 1, 1},
9372         {0x40, 0x7, 0x7, 1, 1},
9373         {0x41, 0x6, 0x6, 0, 0},
9374         {0x42, 0x4, 0x4, 0, 0},
9375         {0x43, 0, 0, 0, 0},
9376         {0x44, 0x8, 0x8, 0, 0},
9377         {0x45, 0x55, 0x55, 1, 1},
9378         {0x46, 0, 0, 0, 0},
9379         {0x47, 0x11, 0x11, 0, 0},
9380         {0x48, 0, 0, 0, 0},
9381         {0x49, 0, 0, 1, 1},
9382         {0x4A, 0x7, 0x7, 0, 0},
9383         {0x4B, 0x6, 0x6, 0, 0},
9384         {0x4C, 0x4, 0x4, 0, 0},
9385         {0x4D, 0, 0, 0, 0},
9386         {0x4E, 0, 0, 0, 0},
9387         {0x4F, 0x26, 0x26, 1, 1},
9388         {0x50, 0x26, 0x26, 1, 1},
9389         {0x51, 0xf, 0xf, 1, 1},
9390         {0x52, 0xf, 0xf, 1, 1},
9391         {0x53, 0x44, 0x44, 0, 0},
9392         {0x54, 0, 0, 0, 0},
9393         {0x55, 0, 0, 0, 0},
9394         {0x56, 0x8, 0x8, 0, 0},
9395         {0x57, 0x8, 0x8, 0, 0},
9396         {0x58, 0x7, 0x7, 0, 0},
9397         {0x59, 0x22, 0x22, 0, 0},
9398         {0x5A, 0x22, 0x22, 0, 0},
9399         {0x5B, 0x2, 0x2, 0, 0},
9400         {0x5C, 0x4, 0x4, 1, 1},
9401         {0x5D, 0x7, 0x7, 0, 0},
9402         {0x5E, 0x55, 0x55, 0, 0},
9403         {0x5F, 0x23, 0x23, 0, 0},
9404         {0x60, 0x41, 0x41, 0, 0},
9405         {0x61, 0x1, 0x1, 0, 0},
9406         {0x62, 0xa, 0xa, 0, 0},
9407         {0x63, 0, 0, 0, 0},
9408         {0x64, 0, 0, 0, 0},
9409         {0x65, 0, 0, 0, 0},
9410         {0x66, 0, 0, 0, 0},
9411         {0x67, 0, 0, 0, 0},
9412         {0x68, 0, 0, 0, 0},
9413         {0x69, 0, 0, 0, 0},
9414         {0x6A, 0, 0, 0, 0},
9415         {0x6B, 0xc, 0xc, 0, 0},
9416         {0x6C, 0, 0, 0, 0},
9417         {0x6D, 0, 0, 0, 0},
9418         {0x6E, 0, 0, 0, 0},
9419         {0x6F, 0, 0, 0, 0},
9420         {0x70, 0, 0, 0, 0},
9421         {0x71, 0, 0, 0, 0},
9422         {0x72, 0x22, 0x22, 0, 0},
9423         {0x73, 0x22, 0x22, 0, 0},
9424         {0x74, 0, 0, 1, 1},
9425         {0x75, 0xa, 0xa, 0, 0},
9426         {0x76, 0x1, 0x1, 0, 0},
9427         {0x77, 0x22, 0x22, 0, 0},
9428         {0x78, 0x30, 0x30, 0, 0},
9429         {0x79, 0, 0, 0, 0},
9430         {0x7A, 0, 0, 0, 0},
9431         {0x7B, 0, 0, 0, 0},
9432         {0x7C, 0, 0, 0, 0},
9433         {0x7D, 0, 0, 0, 0},
9434         {0x7E, 0, 0, 0, 0},
9435         {0x7F, 0, 0, 0, 0},
9436         {0x80, 0, 0, 0, 0},
9437         {0x81, 0, 0, 0, 0},
9438         {0x82, 0, 0, 0, 0},
9439         {0x83, 0, 0, 0, 0},
9440         {0x84, 0, 0, 0, 0},
9441         {0x85, 0, 0, 0, 0},
9442         {0x86, 0, 0, 0, 0},
9443         {0x87, 0, 0, 0, 0},
9444         {0x88, 0, 0, 0, 0},
9445         {0x89, 0, 0, 0, 0},
9446         {0x8A, 0, 0, 0, 0},
9447         {0x8B, 0, 0, 0, 0},
9448         {0x8C, 0, 0, 0, 0},
9449         {0x8D, 0, 0, 0, 0},
9450         {0x8E, 0, 0, 0, 0},
9451         {0x8F, 0, 0, 0, 0},
9452         {0x90, 0, 0, 0, 0},
9453         {0x91, 0, 0, 0, 0},
9454         {0x92, 0, 0, 0, 0},
9455         {0x93, 0, 0, 0, 0},
9456         {0x94, 0, 0, 0, 0},
9457         {0xFFFF, 0, 0, 0, 0}
9458 };
9459
9460 static struct radio_regs regs_SYN_2056_rev6[] = {
9461         {0x02, 0, 0, 0, 0},
9462         {0x03, 0, 0, 0, 0},
9463         {0x04, 0, 0, 0, 0},
9464         {0x05, 0, 0, 0, 0},
9465         {0x06, 0, 0, 0, 0},
9466         {0x07, 0, 0, 0, 0},
9467         {0x08, 0, 0, 0, 0},
9468         {0x09, 0x1, 0x1, 0, 0},
9469         {0x0A, 0, 0, 0, 0},
9470         {0x0B, 0, 0, 0, 0},
9471         {0x0C, 0, 0, 0, 0},
9472         {0x0D, 0, 0, 0, 0},
9473         {0x0E, 0, 0, 0, 0},
9474         {0x0F, 0, 0, 0, 0},
9475         {0x10, 0, 0, 0, 0},
9476         {0x11, 0, 0, 0, 0},
9477         {0x12, 0, 0, 0, 0},
9478         {0x13, 0, 0, 0, 0},
9479         {0x14, 0, 0, 0, 0},
9480         {0x15, 0, 0, 0, 0},
9481         {0x16, 0, 0, 0, 0},
9482         {0x17, 0, 0, 0, 0},
9483         {0x18, 0, 0, 0, 0},
9484         {0x19, 0, 0, 0, 0},
9485         {0x1A, 0, 0, 0, 0},
9486         {0x1B, 0, 0, 0, 0},
9487         {0x1C, 0, 0, 0, 0},
9488         {0x1D, 0, 0, 0, 0},
9489         {0x1E, 0, 0, 0, 0},
9490         {0x1F, 0, 0, 0, 0},
9491         {0x20, 0, 0, 0, 0},
9492         {0x21, 0, 0, 0, 0},
9493         {0x22, 0x60, 0x60, 0, 0},
9494         {0x23, 0x6, 0x6, 0, 0},
9495         {0x24, 0xc, 0xc, 0, 0},
9496         {0x25, 0, 0, 0, 0},
9497         {0x26, 0, 0, 0, 0},
9498         {0x27, 0, 0, 0, 0},
9499         {0x28, 0x1, 0x1, 0, 0},
9500         {0x29, 0, 0, 0, 0},
9501         {0x2A, 0, 0, 0, 0},
9502         {0x2B, 0, 0, 0, 0},
9503         {0x2C, 0, 0, 0, 0},
9504         {0x2D, 0, 0, 0, 0},
9505         {0x2E, 0, 0, 0, 0},
9506         {0x2F, 0x1f, 0x1f, 0, 0},
9507         {0x30, 0x15, 0x15, 0, 0},
9508         {0x31, 0xf, 0xf, 0, 0},
9509         {0x32, 0, 0, 0, 0},
9510         {0x33, 0, 0, 0, 0},
9511         {0x34, 0, 0, 0, 0},
9512         {0x35, 0, 0, 0, 0},
9513         {0x36, 0, 0, 0, 0},
9514         {0x37, 0, 0, 0, 0},
9515         {0x38, 0, 0, 0, 0},
9516         {0x39, 0, 0, 0, 0},
9517         {0x3A, 0, 0, 0, 0},
9518         {0x3B, 0, 0, 0, 0},
9519         {0x3C, 0x13, 0x13, 0, 0},
9520         {0x3D, 0xf, 0xf, 0, 0},
9521         {0x3E, 0x18, 0x18, 0, 0},
9522         {0x3F, 0, 0, 0, 0},
9523         {0x40, 0, 0, 0, 0},
9524         {0x41, 0x20, 0x20, 0, 0},
9525         {0x42, 0x20, 0x20, 0, 0},
9526         {0x43, 0, 0, 0, 0},
9527         {0x44, 0x77, 0x77, 0, 0},
9528         {0x45, 0x7, 0x7, 0, 0},
9529         {0x46, 0x1, 0x1, 0, 0},
9530         {0x47, 0x4, 0x4, 0, 0},
9531         {0x48, 0xf, 0xf, 0, 0},
9532         {0x49, 0x30, 0x30, 0, 0},
9533         {0x4A, 0x32, 0x32, 0, 0},
9534         {0x4B, 0xd, 0xd, 0, 0},
9535         {0x4C, 0xd, 0xd, 0, 0},
9536         {0x4D, 0x4, 0x4, 0, 0},
9537         {0x4E, 0x6, 0x6, 0, 0},
9538         {0x4F, 0x1, 0x1, 0, 0},
9539         {0x50, 0x1c, 0x1c, 0, 0},
9540         {0x51, 0x2, 0x2, 0, 0},
9541         {0x52, 0x2, 0x2, 0, 0},
9542         {0x53, 0xf7, 0xf7, 1, 1},
9543         {0x54, 0xb4, 0xb4, 0, 0},
9544         {0x55, 0xd2, 0xd2, 0, 0},
9545         {0x56, 0, 0, 0, 0},
9546         {0x57, 0, 0, 0, 0},
9547         {0x58, 0x4, 0x4, 0, 0},
9548         {0x59, 0x96, 0x96, 0, 0},
9549         {0x5A, 0x3e, 0x3e, 0, 0},
9550         {0x5B, 0x3e, 0x3e, 0, 0},
9551         {0x5C, 0x13, 0x13, 0, 0},
9552         {0x5D, 0x2, 0x2, 0, 0},
9553         {0x5E, 0, 0, 0, 0},
9554         {0x5F, 0x7, 0x7, 0, 0},
9555         {0x60, 0x7, 0x7, 1, 1},
9556         {0x61, 0x8, 0x8, 0, 0},
9557         {0x62, 0x3, 0x3, 0, 0},
9558         {0x63, 0, 0, 0, 0},
9559         {0x64, 0, 0, 0, 0},
9560         {0x65, 0, 0, 0, 0},
9561         {0x66, 0, 0, 0, 0},
9562         {0x67, 0, 0, 0, 0},
9563         {0x68, 0x40, 0x40, 0, 0},
9564         {0x69, 0, 0, 0, 0},
9565         {0x6A, 0, 0, 0, 0},
9566         {0x6B, 0, 0, 0, 0},
9567         {0x6C, 0, 0, 0, 0},
9568         {0x6D, 0x1, 0x1, 0, 0},
9569         {0x6E, 0, 0, 0, 0},
9570         {0x6F, 0, 0, 0, 0},
9571         {0x70, 0x60, 0x60, 0, 0},
9572         {0x71, 0x66, 0x66, 0, 0},
9573         {0x72, 0xc, 0xc, 0, 0},
9574         {0x73, 0x66, 0x66, 0, 0},
9575         {0x74, 0x8f, 0x8f, 1, 1},
9576         {0x75, 0, 0, 0, 0},
9577         {0x76, 0xcc, 0xcc, 0, 0},
9578         {0x77, 0x1, 0x1, 0, 0},
9579         {0x78, 0x66, 0x66, 0, 0},
9580         {0x79, 0x66, 0x66, 0, 0},
9581         {0x7A, 0, 0, 0, 0},
9582         {0x7B, 0, 0, 0, 0},
9583         {0x7C, 0, 0, 0, 0},
9584         {0x7D, 0, 0, 0, 0},
9585         {0x7E, 0, 0, 0, 0},
9586         {0x7F, 0, 0, 0, 0},
9587         {0x80, 0, 0, 0, 0},
9588         {0x81, 0, 0, 0, 0},
9589         {0x82, 0, 0, 0, 0},
9590         {0x83, 0, 0, 0, 0},
9591         {0x84, 0, 0, 0, 0},
9592         {0x85, 0xff, 0xff, 0, 0},
9593         {0x86, 0, 0, 0, 0},
9594         {0x87, 0, 0, 0, 0},
9595         {0x88, 0, 0, 0, 0},
9596         {0x89, 0, 0, 0, 0},
9597         {0x8A, 0, 0, 0, 0},
9598         {0x8B, 0, 0, 0, 0},
9599         {0x8C, 0, 0, 0, 0},
9600         {0x8D, 0, 0, 0, 0},
9601         {0x8E, 0, 0, 0, 0},
9602         {0x8F, 0, 0, 0, 0},
9603         {0x90, 0, 0, 0, 0},
9604         {0x91, 0, 0, 0, 0},
9605         {0x92, 0, 0, 0, 0},
9606         {0x93, 0, 0, 0, 0},
9607         {0x94, 0, 0, 0, 0},
9608         {0x95, 0, 0, 0, 0},
9609         {0x96, 0, 0, 0, 0},
9610         {0x97, 0, 0, 0, 0},
9611         {0x98, 0, 0, 0, 0},
9612         {0x99, 0, 0, 0, 0},
9613         {0x9A, 0, 0, 0, 0},
9614         {0x9B, 0, 0, 0, 0},
9615         {0x9C, 0, 0, 0, 0},
9616         {0x9D, 0, 0, 0, 0},
9617         {0x9E, 0, 0, 0, 0},
9618         {0x9F, 0x6, 0x6, 0, 0},
9619         {0xA0, 0x66, 0x66, 0, 0},
9620         {0xA1, 0x66, 0x66, 0, 0},
9621         {0xA2, 0x66, 0x66, 0, 0},
9622         {0xA3, 0x66, 0x66, 0, 0},
9623         {0xA4, 0x66, 0x66, 0, 0},
9624         {0xA5, 0x66, 0x66, 0, 0},
9625         {0xA6, 0x66, 0x66, 0, 0},
9626         {0xA7, 0x66, 0x66, 0, 0},
9627         {0xA8, 0x66, 0x66, 0, 0},
9628         {0xA9, 0x66, 0x66, 0, 0},
9629         {0xAA, 0x66, 0x66, 0, 0},
9630         {0xAB, 0x66, 0x66, 0, 0},
9631         {0xAC, 0x66, 0x66, 0, 0},
9632         {0xAD, 0x66, 0x66, 0, 0},
9633         {0xAE, 0x66, 0x66, 0, 0},
9634         {0xAF, 0x66, 0x66, 0, 0},
9635         {0xB0, 0x66, 0x66, 0, 0},
9636         {0xB1, 0x66, 0x66, 0, 0},
9637         {0xB2, 0x66, 0x66, 0, 0},
9638         {0xB3, 0xa, 0xa, 0, 0},
9639         {0xB4, 0, 0, 0, 0},
9640         {0xB5, 0, 0, 0, 0},
9641         {0xB6, 0, 0, 0, 0},
9642         {0xFFFF, 0, 0, 0, 0}
9643 };
9644
9645 static struct radio_regs regs_TX_2056_rev6[] = {
9646         {0x02, 0, 0, 0, 0},
9647         {0x03, 0, 0, 0, 0},
9648         {0x04, 0, 0, 0, 0},
9649         {0x05, 0, 0, 0, 0},
9650         {0x06, 0, 0, 0, 0},
9651         {0x07, 0, 0, 0, 0},
9652         {0x08, 0, 0, 0, 0},
9653         {0x09, 0, 0, 0, 0},
9654         {0x0A, 0, 0, 0, 0},
9655         {0x0B, 0, 0, 0, 0},
9656         {0x0C, 0, 0, 0, 0},
9657         {0x0D, 0, 0, 0, 0},
9658         {0x0E, 0, 0, 0, 0},
9659         {0x0F, 0, 0, 0, 0},
9660         {0x10, 0, 0, 0, 0},
9661         {0x11, 0, 0, 0, 0},
9662         {0x12, 0, 0, 0, 0},
9663         {0x13, 0, 0, 0, 0},
9664         {0x14, 0, 0, 0, 0},
9665         {0x15, 0, 0, 0, 0},
9666         {0x16, 0, 0, 0, 0},
9667         {0x17, 0, 0, 0, 0},
9668         {0x18, 0, 0, 0, 0},
9669         {0x19, 0, 0, 0, 0},
9670         {0x1A, 0, 0, 0, 0},
9671         {0x1B, 0, 0, 0, 0},
9672         {0x1C, 0, 0, 0, 0},
9673         {0x1D, 0, 0, 0, 0},
9674         {0x1E, 0, 0, 0, 0},
9675         {0x1F, 0, 0, 0, 0},
9676         {0x20, 0, 0, 0, 0},
9677         {0x21, 0x88, 0x88, 0, 0},
9678         {0x22, 0x88, 0x88, 0, 0},
9679         {0x23, 0x88, 0x88, 0, 0},
9680         {0x24, 0x88, 0x88, 0, 0},
9681         {0x25, 0xc, 0xc, 0, 0},
9682         {0x26, 0, 0, 0, 0},
9683         {0x27, 0x3, 0x3, 0, 0},
9684         {0x28, 0, 0, 0, 0},
9685         {0x29, 0x3, 0x3, 0, 0},
9686         {0x2A, 0x37, 0x37, 0, 0},
9687         {0x2B, 0x3, 0x3, 0, 0},
9688         {0x2C, 0, 0, 0, 0},
9689         {0x2D, 0, 0, 0, 0},
9690         {0x2E, 0x1, 0x1, 0, 0},
9691         {0x2F, 0x1, 0x1, 0, 0},
9692         {0x30, 0, 0, 0, 0},
9693         {0x31, 0, 0, 0, 0},
9694         {0x32, 0, 0, 0, 0},
9695         {0x33, 0x11, 0x11, 0, 0},
9696         {0x34, 0xee, 0xee, 1, 1},
9697         {0x35, 0, 0, 0, 0},
9698         {0x36, 0, 0, 0, 0},
9699         {0x37, 0x3, 0x3, 0, 0},
9700         {0x38, 0x50, 0x50, 1, 1},
9701         {0x39, 0, 0, 0, 0},
9702         {0x3A, 0x50, 0x50, 1, 1},
9703         {0x3B, 0, 0, 0, 0},
9704         {0x3C, 0x6e, 0x6e, 0, 0},
9705         {0x3D, 0xf0, 0xf0, 1, 1},
9706         {0x3E, 0, 0, 0, 0},
9707         {0x3F, 0, 0, 0, 0},
9708         {0x40, 0, 0, 0, 0},
9709         {0x41, 0x3, 0x3, 0, 0},
9710         {0x42, 0x3, 0x3, 0, 0},
9711         {0x43, 0, 0, 0, 0},
9712         {0x44, 0x1e, 0x1e, 0, 0},
9713         {0x45, 0, 0, 0, 0},
9714         {0x46, 0x6e, 0x6e, 0, 0},
9715         {0x47, 0xf0, 0xf0, 1, 1},
9716         {0x48, 0, 0, 0, 0},
9717         {0x49, 0x2, 0x2, 0, 0},
9718         {0x4A, 0xff, 0xff, 1, 1},
9719         {0x4B, 0xc, 0xc, 0, 0},
9720         {0x4C, 0, 0, 0, 0},
9721         {0x4D, 0x38, 0x38, 0, 0},
9722         {0x4E, 0x70, 0x70, 1, 1},
9723         {0x4F, 0x2, 0x2, 0, 0},
9724         {0x50, 0x88, 0x88, 0, 0},
9725         {0x51, 0xc, 0xc, 0, 0},
9726         {0x52, 0, 0, 0, 0},
9727         {0x53, 0x8, 0x8, 0, 0},
9728         {0x54, 0x70, 0x70, 1, 1},
9729         {0x55, 0x2, 0x2, 0, 0},
9730         {0x56, 0xff, 0xff, 1, 1},
9731         {0x57, 0, 0, 0, 0},
9732         {0x58, 0x83, 0x83, 0, 0},
9733         {0x59, 0x77, 0x77, 1, 1},
9734         {0x5A, 0, 0, 0, 0},
9735         {0x5B, 0x2, 0x2, 0, 0},
9736         {0x5C, 0x88, 0x88, 0, 0},
9737         {0x5D, 0, 0, 0, 0},
9738         {0x5E, 0x8, 0x8, 0, 0},
9739         {0x5F, 0x77, 0x77, 1, 1},
9740         {0x60, 0x1, 0x1, 0, 0},
9741         {0x61, 0, 0, 0, 0},
9742         {0x62, 0x7, 0x7, 0, 0},
9743         {0x63, 0, 0, 0, 0},
9744         {0x64, 0x7, 0x7, 0, 0},
9745         {0x65, 0, 0, 0, 0},
9746         {0x66, 0, 0, 0, 0},
9747         {0x67, 0, 0, 1, 1},
9748         {0x68, 0, 0, 0, 0},
9749         {0x69, 0xa, 0xa, 0, 0},
9750         {0x6A, 0, 0, 0, 0},
9751         {0x6B, 0, 0, 0, 0},
9752         {0x6C, 0, 0, 0, 0},
9753         {0x6D, 0, 0, 0, 0},
9754         {0x6E, 0, 0, 0, 0},
9755         {0x6F, 0, 0, 0, 0},
9756         {0x70, 0, 0, 0, 0},
9757         {0x71, 0x2, 0x2, 0, 0},
9758         {0x72, 0, 0, 0, 0},
9759         {0x73, 0, 0, 0, 0},
9760         {0x74, 0xe, 0xe, 0, 0},
9761         {0x75, 0xe, 0xe, 0, 0},
9762         {0x76, 0xe, 0xe, 0, 0},
9763         {0x77, 0x13, 0x13, 0, 0},
9764         {0x78, 0x13, 0x13, 0, 0},
9765         {0x79, 0x1b, 0x1b, 0, 0},
9766         {0x7A, 0x1b, 0x1b, 0, 0},
9767         {0x7B, 0x55, 0x55, 0, 0},
9768         {0x7C, 0x5b, 0x5b, 0, 0},
9769         {0x7D, 0x30, 0x30, 1, 1},
9770         {0x7E, 0, 0, 0, 0},
9771         {0x7F, 0, 0, 0, 0},
9772         {0x80, 0, 0, 0, 0},
9773         {0x81, 0, 0, 0, 0},
9774         {0x82, 0, 0, 0, 0},
9775         {0x83, 0, 0, 0, 0},
9776         {0x84, 0, 0, 0, 0},
9777         {0x85, 0, 0, 0, 0},
9778         {0x86, 0, 0, 0, 0},
9779         {0x87, 0, 0, 0, 0},
9780         {0x88, 0, 0, 0, 0},
9781         {0x89, 0, 0, 0, 0},
9782         {0x8A, 0, 0, 0, 0},
9783         {0x8B, 0, 0, 0, 0},
9784         {0x8C, 0, 0, 0, 0},
9785         {0x8D, 0, 0, 0, 0},
9786         {0x8E, 0, 0, 0, 0},
9787         {0x8F, 0, 0, 0, 0},
9788         {0x90, 0, 0, 0, 0},
9789         {0x91, 0, 0, 0, 0},
9790         {0x92, 0, 0, 0, 0},
9791         {0x93, 0x70, 0x70, 0, 0},
9792         {0x94, 0x70, 0x70, 0, 0},
9793         {0x95, 0x70, 0x70, 0, 0},
9794         {0x96, 0x70, 0x70, 0, 0},
9795         {0x97, 0x70, 0x70, 0, 0},
9796         {0x98, 0x70, 0x70, 0, 0},
9797         {0x99, 0x70, 0x70, 0, 0},
9798         {0x9A, 0x70, 0x70, 0, 0},
9799         {0xFFFF, 0, 0, 0, 0}
9800 };
9801
9802 static struct radio_regs regs_RX_2056_rev6[] = {
9803         {0x02, 0, 0, 0, 0},
9804         {0x03, 0, 0, 0, 0},
9805         {0x04, 0, 0, 0, 0},
9806         {0x05, 0, 0, 0, 0},
9807         {0x06, 0, 0, 0, 0},
9808         {0x07, 0, 0, 0, 0},
9809         {0x08, 0, 0, 0, 0},
9810         {0x09, 0, 0, 0, 0},
9811         {0x0A, 0, 0, 0, 0},
9812         {0x0B, 0, 0, 0, 0},
9813         {0x0C, 0, 0, 0, 0},
9814         {0x0D, 0, 0, 0, 0},
9815         {0x0E, 0, 0, 0, 0},
9816         {0x0F, 0, 0, 0, 0},
9817         {0x10, 0, 0, 0, 0},
9818         {0x11, 0, 0, 0, 0},
9819         {0x12, 0, 0, 0, 0},
9820         {0x13, 0, 0, 0, 0},
9821         {0x14, 0, 0, 0, 0},
9822         {0x15, 0, 0, 0, 0},
9823         {0x16, 0, 0, 0, 0},
9824         {0x17, 0, 0, 0, 0},
9825         {0x18, 0, 0, 0, 0},
9826         {0x19, 0, 0, 0, 0},
9827         {0x1A, 0, 0, 0, 0},
9828         {0x1B, 0, 0, 0, 0},
9829         {0x1C, 0, 0, 0, 0},
9830         {0x1D, 0, 0, 0, 0},
9831         {0x1E, 0, 0, 0, 0},
9832         {0x1F, 0, 0, 0, 0},
9833         {0x20, 0x3, 0x3, 0, 0},
9834         {0x21, 0, 0, 0, 0},
9835         {0x22, 0, 0, 0, 0},
9836         {0x23, 0x90, 0x90, 0, 0},
9837         {0x24, 0x55, 0x55, 0, 0},
9838         {0x25, 0x15, 0x15, 0, 0},
9839         {0x26, 0x5, 0x5, 0, 0},
9840         {0x27, 0x15, 0x15, 0, 0},
9841         {0x28, 0x5, 0x5, 0, 0},
9842         {0x29, 0x20, 0x20, 0, 0},
9843         {0x2A, 0x11, 0x11, 0, 0},
9844         {0x2B, 0x90, 0x90, 0, 0},
9845         {0x2C, 0, 0, 0, 0},
9846         {0x2D, 0x88, 0x88, 0, 0},
9847         {0x2E, 0x32, 0x32, 0, 0},
9848         {0x2F, 0x77, 0x77, 0, 0},
9849         {0x30, 0x17, 0x17, 1, 1},
9850         {0x31, 0xff, 0xff, 1, 1},
9851         {0x32, 0x20, 0x20, 0, 0},
9852         {0x33, 0, 0, 0, 0},
9853         {0x34, 0x88, 0x88, 0, 0},
9854         {0x35, 0x32, 0x32, 0, 0},
9855         {0x36, 0x77, 0x77, 0, 0},
9856         {0x37, 0x17, 0x17, 1, 1},
9857         {0x38, 0xf0, 0xf0, 1, 1},
9858         {0x39, 0x20, 0x20, 0, 0},
9859         {0x3A, 0x8, 0x8, 0, 0},
9860         {0x3B, 0x55, 0x55, 1, 1},
9861         {0x3C, 0, 0, 0, 0},
9862         {0x3D, 0x88, 0x88, 1, 1},
9863         {0x3E, 0, 0, 0, 0},
9864         {0x3F, 0x44, 0x44, 0, 0},
9865         {0x40, 0x7, 0x7, 1, 1},
9866         {0x41, 0x6, 0x6, 0, 0},
9867         {0x42, 0x4, 0x4, 0, 0},
9868         {0x43, 0, 0, 0, 0},
9869         {0x44, 0x8, 0x8, 0, 0},
9870         {0x45, 0x55, 0x55, 1, 1},
9871         {0x46, 0, 0, 0, 0},
9872         {0x47, 0x11, 0x11, 0, 0},
9873         {0x48, 0, 0, 0, 0},
9874         {0x49, 0x44, 0x44, 0, 0},
9875         {0x4A, 0x7, 0x7, 0, 0},
9876         {0x4B, 0x6, 0x6, 0, 0},
9877         {0x4C, 0x4, 0x4, 0, 0},
9878         {0x4D, 0, 0, 0, 0},
9879         {0x4E, 0, 0, 0, 0},
9880         {0x4F, 0x26, 0x26, 1, 1},
9881         {0x50, 0x26, 0x26, 1, 1},
9882         {0x51, 0xf, 0xf, 1, 1},
9883         {0x52, 0xf, 0xf, 1, 1},
9884         {0x53, 0x44, 0x44, 0, 0},
9885         {0x54, 0, 0, 0, 0},
9886         {0x55, 0, 0, 0, 0},
9887         {0x56, 0x8, 0x8, 0, 0},
9888         {0x57, 0x8, 0x8, 0, 0},
9889         {0x58, 0x7, 0x7, 0, 0},
9890         {0x59, 0x22, 0x22, 0, 0},
9891         {0x5A, 0x22, 0x22, 0, 0},
9892         {0x5B, 0x2, 0x2, 0, 0},
9893         {0x5C, 0x4, 0x4, 1, 1},
9894         {0x5D, 0x7, 0x7, 0, 0},
9895         {0x5E, 0x55, 0x55, 0, 0},
9896         {0x5F, 0x23, 0x23, 0, 0},
9897         {0x60, 0x41, 0x41, 0, 0},
9898         {0x61, 0x1, 0x1, 0, 0},
9899         {0x62, 0xa, 0xa, 0, 0},
9900         {0x63, 0, 0, 0, 0},
9901         {0x64, 0, 0, 0, 0},
9902         {0x65, 0, 0, 0, 0},
9903         {0x66, 0, 0, 0, 0},
9904         {0x67, 0, 0, 0, 0},
9905         {0x68, 0, 0, 0, 0},
9906         {0x69, 0, 0, 0, 0},
9907         {0x6A, 0, 0, 0, 0},
9908         {0x6B, 0xc, 0xc, 0, 0},
9909         {0x6C, 0, 0, 0, 0},
9910         {0x6D, 0, 0, 0, 0},
9911         {0x6E, 0, 0, 0, 0},
9912         {0x6F, 0, 0, 0, 0},
9913         {0x70, 0, 0, 0, 0},
9914         {0x71, 0, 0, 0, 0},
9915         {0x72, 0x22, 0x22, 0, 0},
9916         {0x73, 0x22, 0x22, 0, 0},
9917         {0x74, 0, 0, 1, 1},
9918         {0x75, 0xa, 0xa, 0, 0},
9919         {0x76, 0x1, 0x1, 0, 0},
9920         {0x77, 0x22, 0x22, 0, 0},
9921         {0x78, 0x30, 0x30, 0, 0},
9922         {0x79, 0, 0, 0, 0},
9923         {0x7A, 0, 0, 0, 0},
9924         {0x7B, 0, 0, 0, 0},
9925         {0x7C, 0, 0, 0, 0},
9926         {0x7D, 0x5, 0x5, 1, 1},
9927         {0x7E, 0, 0, 0, 0},
9928         {0x7F, 0, 0, 0, 0},
9929         {0x80, 0, 0, 0, 0},
9930         {0x81, 0, 0, 0, 0},
9931         {0x82, 0, 0, 0, 0},
9932         {0x83, 0, 0, 0, 0},
9933         {0x84, 0, 0, 0, 0},
9934         {0x85, 0, 0, 0, 0},
9935         {0x86, 0, 0, 0, 0},
9936         {0x87, 0, 0, 0, 0},
9937         {0x88, 0, 0, 0, 0},
9938         {0x89, 0, 0, 0, 0},
9939         {0x8A, 0, 0, 0, 0},
9940         {0x8B, 0, 0, 0, 0},
9941         {0x8C, 0, 0, 0, 0},
9942         {0x8D, 0, 0, 0, 0},
9943         {0x8E, 0, 0, 0, 0},
9944         {0x8F, 0, 0, 0, 0},
9945         {0x90, 0, 0, 0, 0},
9946         {0x91, 0, 0, 0, 0},
9947         {0x92, 0, 0, 0, 0},
9948         {0x93, 0, 0, 0, 0},
9949         {0x94, 0, 0, 0, 0},
9950         {0xFFFF, 0, 0, 0, 0}
9951 };
9952
9953 static struct radio_regs regs_SYN_2056_rev7[] = {
9954         {0x02, 0, 0, 0, 0},
9955         {0x03, 0, 0, 0, 0},
9956         {0x04, 0, 0, 0, 0},
9957         {0x05, 0, 0, 0, 0},
9958         {0x06, 0, 0, 0, 0},
9959         {0x07, 0, 0, 0, 0},
9960         {0x08, 0, 0, 0, 0},
9961         {0x09, 0x1, 0x1, 0, 0},
9962         {0x0A, 0, 0, 0, 0},
9963         {0x0B, 0, 0, 0, 0},
9964         {0x0C, 0, 0, 0, 0},
9965         {0x0D, 0, 0, 0, 0},
9966         {0x0E, 0, 0, 0, 0},
9967         {0x0F, 0, 0, 0, 0},
9968         {0x10, 0, 0, 0, 0},
9969         {0x11, 0, 0, 0, 0},
9970         {0x12, 0, 0, 0, 0},
9971         {0x13, 0, 0, 0, 0},
9972         {0x14, 0, 0, 0, 0},
9973         {0x15, 0, 0, 0, 0},
9974         {0x16, 0, 0, 0, 0},
9975         {0x17, 0, 0, 0, 0},
9976         {0x18, 0, 0, 0, 0},
9977         {0x19, 0, 0, 0, 0},
9978         {0x1A, 0, 0, 0, 0},
9979         {0x1B, 0, 0, 0, 0},
9980         {0x1C, 0, 0, 0, 0},
9981         {0x1D, 0, 0, 0, 0},
9982         {0x1E, 0, 0, 0, 0},
9983         {0x1F, 0, 0, 0, 0},
9984         {0x20, 0, 0, 0, 0},
9985         {0x21, 0, 0, 0, 0},
9986         {0x22, 0x60, 0x60, 0, 0},
9987         {0x23, 0x6, 0x6, 0, 0},
9988         {0x24, 0xc, 0xc, 0, 0},
9989         {0x25, 0, 0, 0, 0},
9990         {0x26, 0, 0, 0, 0},
9991         {0x27, 0, 0, 0, 0},
9992         {0x28, 0x1, 0x1, 0, 0},
9993         {0x29, 0, 0, 0, 0},
9994         {0x2A, 0, 0, 0, 0},
9995         {0x2B, 0, 0, 0, 0},
9996         {0x2C, 0, 0, 0, 0},
9997         {0x2D, 0, 0, 0, 0},
9998         {0x2E, 0, 0, 0, 0},
9999         {0x2F, 0x1f, 0x1f, 0, 0},
10000         {0x30, 0x15, 0x15, 0, 0},
10001         {0x31, 0xf, 0xf, 0, 0},
10002         {0x32, 0, 0, 0, 0},
10003         {0x33, 0, 0, 0, 0},
10004         {0x34, 0, 0, 0, 0},
10005         {0x35, 0, 0, 0, 0},
10006         {0x36, 0, 0, 0, 0},
10007         {0x37, 0, 0, 0, 0},
10008         {0x38, 0, 0, 0, 0},
10009         {0x39, 0, 0, 0, 0},
10010         {0x3A, 0, 0, 0, 0},
10011         {0x3B, 0, 0, 0, 0},
10012         {0x3C, 0x13, 0x13, 0, 0},
10013         {0x3D, 0xf, 0xf, 0, 0},
10014         {0x3E, 0x18, 0x18, 0, 0},
10015         {0x3F, 0, 0, 0, 0},
10016         {0x40, 0, 0, 0, 0},
10017         {0x41, 0x20, 0x20, 0, 0},
10018         {0x42, 0x20, 0x20, 0, 0},
10019         {0x43, 0, 0, 0, 0},
10020         {0x44, 0x77, 0x77, 0, 0},
10021         {0x45, 0x7, 0x7, 0, 0},
10022         {0x46, 0x1, 0x1, 0, 0},
10023         {0x47, 0x4, 0x4, 0, 0},
10024         {0x48, 0xf, 0xf, 0, 0},
10025         {0x49, 0x30, 0x30, 0, 0},
10026         {0x4A, 0x32, 0x32, 0, 0},
10027         {0x4B, 0xd, 0xd, 0, 0},
10028         {0x4C, 0xd, 0xd, 0, 0},
10029         {0x4D, 0x4, 0x4, 0, 0},
10030         {0x4E, 0x6, 0x6, 0, 0},
10031         {0x4F, 0x1, 0x1, 0, 0},
10032         {0x50, 0x1c, 0x1c, 0, 0},
10033         {0x51, 0x2, 0x2, 0, 0},
10034         {0x52, 0x2, 0x2, 0, 0},
10035         {0x53, 0xf7, 0xf7, 1, 1},
10036         {0x54, 0xb4, 0xb4, 0, 0},
10037         {0x55, 0xd2, 0xd2, 0, 0},
10038         {0x56, 0, 0, 0, 0},
10039         {0x57, 0, 0, 0, 0},
10040         {0x58, 0x4, 0x4, 0, 0},
10041         {0x59, 0x96, 0x96, 0, 0},
10042         {0x5A, 0x3e, 0x3e, 0, 0},
10043         {0x5B, 0x3e, 0x3e, 0, 0},
10044         {0x5C, 0x13, 0x13, 0, 0},
10045         {0x5D, 0x2, 0x2, 0, 0},
10046         {0x5E, 0, 0, 0, 0},
10047         {0x5F, 0x7, 0x7, 0, 0},
10048         {0x60, 0x7, 0x7, 1, 1},
10049         {0x61, 0x8, 0x8, 0, 0},
10050         {0x62, 0x3, 0x3, 0, 0},
10051         {0x63, 0, 0, 0, 0},
10052         {0x64, 0, 0, 0, 0},
10053         {0x65, 0, 0, 0, 0},
10054         {0x66, 0, 0, 0, 0},
10055         {0x67, 0, 0, 0, 0},
10056         {0x68, 0x40, 0x40, 0, 0},
10057         {0x69, 0, 0, 0, 0},
10058         {0x6A, 0, 0, 0, 0},
10059         {0x6B, 0, 0, 0, 0},
10060         {0x6C, 0, 0, 0, 0},
10061         {0x6D, 0x1, 0x1, 0, 0},
10062         {0x6E, 0, 0, 0, 0},
10063         {0x6F, 0, 0, 0, 0},
10064         {0x70, 0x60, 0x60, 0, 0},
10065         {0x71, 0x66, 0x66, 0, 0},
10066         {0x72, 0xc, 0xc, 0, 0},
10067         {0x73, 0x66, 0x66, 0, 0},
10068         {0x74, 0x8f, 0x8f, 1, 1},
10069         {0x75, 0, 0, 0, 0},
10070         {0x76, 0xcc, 0xcc, 0, 0},
10071         {0x77, 0x1, 0x1, 0, 0},
10072         {0x78, 0x66, 0x66, 0, 0},
10073         {0x79, 0x66, 0x66, 0, 0},
10074         {0x7A, 0, 0, 0, 0},
10075         {0x7B, 0, 0, 0, 0},
10076         {0x7C, 0, 0, 0, 0},
10077         {0x7D, 0, 0, 0, 0},
10078         {0x7E, 0, 0, 0, 0},
10079         {0x7F, 0, 0, 0, 0},
10080         {0x80, 0, 0, 0, 0},
10081         {0x81, 0, 0, 0, 0},
10082         {0x82, 0, 0, 0, 0},
10083         {0x83, 0, 0, 0, 0},
10084         {0x84, 0, 0, 0, 0},
10085         {0x85, 0xff, 0xff, 0, 0},
10086         {0x86, 0, 0, 0, 0},
10087         {0x87, 0, 0, 0, 0},
10088         {0x88, 0, 0, 0, 0},
10089         {0x89, 0, 0, 0, 0},
10090         {0x8A, 0, 0, 0, 0},
10091         {0x8B, 0, 0, 0, 0},
10092         {0x8C, 0, 0, 0, 0},
10093         {0x8D, 0, 0, 0, 0},
10094         {0x8E, 0, 0, 0, 0},
10095         {0x8F, 0, 0, 0, 0},
10096         {0x90, 0, 0, 0, 0},
10097         {0x91, 0, 0, 0, 0},
10098         {0x92, 0, 0, 0, 0},
10099         {0x93, 0, 0, 0, 0},
10100         {0x94, 0, 0, 0, 0},
10101         {0x95, 0, 0, 0, 0},
10102         {0x96, 0, 0, 0, 0},
10103         {0x97, 0, 0, 0, 0},
10104         {0x98, 0, 0, 0, 0},
10105         {0x99, 0, 0, 0, 0},
10106         {0x9A, 0, 0, 0, 0},
10107         {0x9B, 0, 0, 0, 0},
10108         {0x9C, 0, 0, 0, 0},
10109         {0x9D, 0, 0, 0, 0},
10110         {0x9E, 0, 0, 0, 0},
10111         {0x9F, 0x6, 0x6, 0, 0},
10112         {0xA0, 0x66, 0x66, 0, 0},
10113         {0xA1, 0x66, 0x66, 0, 0},
10114         {0xA2, 0x66, 0x66, 0, 0},
10115         {0xA3, 0x66, 0x66, 0, 0},
10116         {0xA4, 0x66, 0x66, 0, 0},
10117         {0xA5, 0x66, 0x66, 0, 0},
10118         {0xA6, 0x66, 0x66, 0, 0},
10119         {0xA7, 0x66, 0x66, 0, 0},
10120         {0xA8, 0x66, 0x66, 0, 0},
10121         {0xA9, 0x66, 0x66, 0, 0},
10122         {0xAA, 0x66, 0x66, 0, 0},
10123         {0xAB, 0x66, 0x66, 0, 0},
10124         {0xAC, 0x66, 0x66, 0, 0},
10125         {0xAD, 0x66, 0x66, 0, 0},
10126         {0xAE, 0x66, 0x66, 0, 0},
10127         {0xAF, 0x66, 0x66, 0, 0},
10128         {0xB0, 0x66, 0x66, 0, 0},
10129         {0xB1, 0x66, 0x66, 0, 0},
10130         {0xB2, 0x66, 0x66, 0, 0},
10131         {0xB3, 0xa, 0xa, 0, 0},
10132         {0xB4, 0, 0, 0, 0},
10133         {0xB5, 0, 0, 0, 0},
10134         {0xB6, 0, 0, 0, 0},
10135         {0xFFFF, 0, 0, 0, 0},
10136 };
10137
10138 static struct radio_regs regs_TX_2056_rev7[] = {
10139         {0x02, 0, 0, 0, 0},
10140         {0x03, 0, 0, 0, 0},
10141         {0x04, 0, 0, 0, 0},
10142         {0x05, 0, 0, 0, 0},
10143         {0x06, 0, 0, 0, 0},
10144         {0x07, 0, 0, 0, 0},
10145         {0x08, 0, 0, 0, 0},
10146         {0x09, 0, 0, 0, 0},
10147         {0x0A, 0, 0, 0, 0},
10148         {0x0B, 0, 0, 0, 0},
10149         {0x0C, 0, 0, 0, 0},
10150         {0x0D, 0, 0, 0, 0},
10151         {0x0E, 0, 0, 0, 0},
10152         {0x0F, 0, 0, 0, 0},
10153         {0x10, 0, 0, 0, 0},
10154         {0x11, 0, 0, 0, 0},
10155         {0x12, 0, 0, 0, 0},
10156         {0x13, 0, 0, 0, 0},
10157         {0x14, 0, 0, 0, 0},
10158         {0x15, 0, 0, 0, 0},
10159         {0x16, 0, 0, 0, 0},
10160         {0x17, 0, 0, 0, 0},
10161         {0x18, 0, 0, 0, 0},
10162         {0x19, 0, 0, 0, 0},
10163         {0x1A, 0, 0, 0, 0},
10164         {0x1B, 0, 0, 0, 0},
10165         {0x1C, 0, 0, 0, 0},
10166         {0x1D, 0, 0, 0, 0},
10167         {0x1E, 0, 0, 0, 0},
10168         {0x1F, 0, 0, 0, 0},
10169         {0x20, 0, 0, 0, 0},
10170         {0x21, 0x88, 0x88, 0, 0},
10171         {0x22, 0x88, 0x88, 0, 0},
10172         {0x23, 0x88, 0x88, 0, 0},
10173         {0x24, 0x88, 0x88, 0, 0},
10174         {0x25, 0xc, 0xc, 0, 0},
10175         {0x26, 0, 0, 0, 0},
10176         {0x27, 0x3, 0x3, 0, 0},
10177         {0x28, 0, 0, 0, 0},
10178         {0x29, 0x3, 0x3, 0, 0},
10179         {0x2A, 0x37, 0x37, 0, 0},
10180         {0x2B, 0x3, 0x3, 0, 0},
10181         {0x2C, 0, 0, 0, 0},
10182         {0x2D, 0, 0, 0, 0},
10183         {0x2E, 0x1, 0x1, 0, 0},
10184         {0x2F, 0x1, 0x1, 0, 0},
10185         {0x30, 0, 0, 0, 0},
10186         {0x31, 0, 0, 0, 0},
10187         {0x32, 0, 0, 0, 0},
10188         {0x33, 0x11, 0x11, 0, 0},
10189         {0x34, 0xee, 0xee, 1, 1},
10190         {0x35, 0, 0, 0, 0},
10191         {0x36, 0, 0, 0, 0},
10192         {0x37, 0x3, 0x3, 0, 0},
10193         {0x38, 0x50, 0x50, 1, 1},
10194         {0x39, 0, 0, 0, 0},
10195         {0x3A, 0x50, 0x50, 1, 1},
10196         {0x3B, 0, 0, 0, 0},
10197         {0x3C, 0x6e, 0x6e, 0, 0},
10198         {0x3D, 0xf0, 0xf0, 1, 1},
10199         {0x3E, 0, 0, 0, 0},
10200         {0x3F, 0, 0, 0, 0},
10201         {0x40, 0, 0, 0, 0},
10202         {0x41, 0x3, 0x3, 0, 0},
10203         {0x42, 0x3, 0x3, 0, 0},
10204         {0x43, 0, 0, 0, 0},
10205         {0x44, 0x1e, 0x1e, 0, 0},
10206         {0x45, 0, 0, 0, 0},
10207         {0x46, 0x6e, 0x6e, 0, 0},
10208         {0x47, 0xf0, 0xf0, 1, 1},
10209         {0x48, 0, 0, 0, 0},
10210         {0x49, 0x2, 0x2, 0, 0},
10211         {0x4A, 0xff, 0xff, 1, 1},
10212         {0x4B, 0xc, 0xc, 0, 0},
10213         {0x4C, 0, 0, 0, 0},
10214         {0x4D, 0x38, 0x38, 0, 0},
10215         {0x4E, 0x70, 0x70, 1, 1},
10216         {0x4F, 0x2, 0x2, 0, 0},
10217         {0x50, 0x88, 0x88, 0, 0},
10218         {0x51, 0xc, 0xc, 0, 0},
10219         {0x52, 0, 0, 0, 0},
10220         {0x53, 0x8, 0x8, 0, 0},
10221         {0x54, 0x70, 0x70, 1, 1},
10222         {0x55, 0x2, 0x2, 0, 0},
10223         {0x56, 0xff, 0xff, 1, 1},
10224         {0x57, 0, 0, 0, 0},
10225         {0x58, 0x83, 0x83, 0, 0},
10226         {0x59, 0x77, 0x77, 1, 1},
10227         {0x5A, 0, 0, 0, 0},
10228         {0x5B, 0x2, 0x2, 0, 0},
10229         {0x5C, 0x88, 0x88, 0, 0},
10230         {0x5D, 0, 0, 0, 0},
10231         {0x5E, 0x8, 0x8, 0, 0},
10232         {0x5F, 0x77, 0x77, 1, 1},
10233         {0x60, 0x1, 0x1, 0, 0},
10234         {0x61, 0, 0, 0, 0},
10235         {0x62, 0x7, 0x7, 0, 0},
10236         {0x63, 0, 0, 0, 0},
10237         {0x64, 0x7, 0x7, 0, 0},
10238         {0x65, 0, 0, 0, 0},
10239         {0x66, 0, 0, 0, 0},
10240         {0x67, 0, 0, 1, 1},
10241         {0x68, 0, 0, 0, 0},
10242         {0x69, 0xa, 0xa, 0, 0},
10243         {0x6A, 0, 0, 0, 0},
10244         {0x6B, 0, 0, 0, 0},
10245         {0x6C, 0, 0, 0, 0},
10246         {0x6D, 0, 0, 0, 0},
10247         {0x6E, 0, 0, 0, 0},
10248         {0x6F, 0, 0, 0, 0},
10249         {0x70, 0, 0, 0, 0},
10250         {0x71, 0x2, 0x2, 0, 0},
10251         {0x72, 0, 0, 0, 0},
10252         {0x73, 0, 0, 0, 0},
10253         {0x74, 0xe, 0xe, 0, 0},
10254         {0x75, 0xe, 0xe, 0, 0},
10255         {0x76, 0xe, 0xe, 0, 0},
10256         {0x77, 0x13, 0x13, 0, 0},
10257         {0x78, 0x13, 0x13, 0, 0},
10258         {0x79, 0x1b, 0x1b, 0, 0},
10259         {0x7A, 0x1b, 0x1b, 0, 0},
10260         {0x7B, 0x55, 0x55, 0, 0},
10261         {0x7C, 0x5b, 0x5b, 0, 0},
10262         {0x7D, 0x30, 0x30, 1, 1},
10263         {0x7E, 0, 0, 0, 0},
10264         {0x7F, 0, 0, 0, 0},
10265         {0x80, 0, 0, 0, 0},
10266         {0x81, 0, 0, 0, 0},
10267         {0x82, 0, 0, 0, 0},
10268         {0x83, 0, 0, 0, 0},
10269         {0x84, 0, 0, 0, 0},
10270         {0x85, 0, 0, 0, 0},
10271         {0x86, 0, 0, 0, 0},
10272         {0x87, 0, 0, 0, 0},
10273         {0x88, 0, 0, 0, 0},
10274         {0x89, 0, 0, 0, 0},
10275         {0x8A, 0, 0, 0, 0},
10276         {0x8B, 0, 0, 0, 0},
10277         {0x8C, 0, 0, 0, 0},
10278         {0x8D, 0, 0, 0, 0},
10279         {0x8E, 0, 0, 0, 0},
10280         {0x8F, 0, 0, 0, 0},
10281         {0x90, 0, 0, 0, 0},
10282         {0x91, 0, 0, 0, 0},
10283         {0x92, 0, 0, 0, 0},
10284         {0x93, 0x70, 0x70, 0, 0},
10285         {0x94, 0x70, 0x70, 0, 0},
10286         {0x95, 0x71, 0x71, 1, 1},
10287         {0x96, 0x71, 0x71, 1, 1},
10288         {0x97, 0x72, 0x72, 1, 1},
10289         {0x98, 0x73, 0x73, 1, 1},
10290         {0x99, 0x74, 0x74, 1, 1},
10291         {0x9A, 0x75, 0x75, 1, 1},
10292         {0xFFFF, 0, 0, 0, 0},
10293 };
10294
10295 static struct radio_regs regs_RX_2056_rev7[] = {
10296         {0x02, 0, 0, 0, 0},
10297         {0x03, 0, 0, 0, 0},
10298         {0x04, 0, 0, 0, 0},
10299         {0x05, 0, 0, 0, 0},
10300         {0x06, 0, 0, 0, 0},
10301         {0x07, 0, 0, 0, 0},
10302         {0x08, 0, 0, 0, 0},
10303         {0x09, 0, 0, 0, 0},
10304         {0x0A, 0, 0, 0, 0},
10305         {0x0B, 0, 0, 0, 0},
10306         {0x0C, 0, 0, 0, 0},
10307         {0x0D, 0, 0, 0, 0},
10308         {0x0E, 0, 0, 0, 0},
10309         {0x0F, 0, 0, 0, 0},
10310         {0x10, 0, 0, 0, 0},
10311         {0x11, 0, 0, 0, 0},
10312         {0x12, 0, 0, 0, 0},
10313         {0x13, 0, 0, 0, 0},
10314         {0x14, 0, 0, 0, 0},
10315         {0x15, 0, 0, 0, 0},
10316         {0x16, 0, 0, 0, 0},
10317         {0x17, 0, 0, 0, 0},
10318         {0x18, 0, 0, 0, 0},
10319         {0x19, 0, 0, 0, 0},
10320         {0x1A, 0, 0, 0, 0},
10321         {0x1B, 0, 0, 0, 0},
10322         {0x1C, 0, 0, 0, 0},
10323         {0x1D, 0, 0, 0, 0},
10324         {0x1E, 0, 0, 0, 0},
10325         {0x1F, 0, 0, 0, 0},
10326         {0x20, 0x3, 0x3, 0, 0},
10327         {0x21, 0, 0, 0, 0},
10328         {0x22, 0, 0, 0, 0},
10329         {0x23, 0x90, 0x90, 0, 0},
10330         {0x24, 0x55, 0x55, 0, 0},
10331         {0x25, 0x15, 0x15, 0, 0},
10332         {0x26, 0x5, 0x5, 0, 0},
10333         {0x27, 0x15, 0x15, 0, 0},
10334         {0x28, 0x5, 0x5, 0, 0},
10335         {0x29, 0x20, 0x20, 0, 0},
10336         {0x2A, 0x11, 0x11, 0, 0},
10337         {0x2B, 0x90, 0x90, 0, 0},
10338         {0x2C, 0, 0, 0, 0},
10339         {0x2D, 0x88, 0x88, 0, 0},
10340         {0x2E, 0x32, 0x32, 0, 0},
10341         {0x2F, 0x77, 0x77, 0, 0},
10342         {0x30, 0x17, 0x17, 1, 1},
10343         {0x31, 0xff, 0xff, 1, 1},
10344         {0x32, 0x20, 0x20, 0, 0},
10345         {0x33, 0, 0, 0, 0},
10346         {0x34, 0x88, 0x88, 0, 0},
10347         {0x35, 0x32, 0x32, 0, 0},
10348         {0x36, 0x77, 0x77, 0, 0},
10349         {0x37, 0x17, 0x17, 1, 1},
10350         {0x38, 0xf0, 0xf0, 1, 1},
10351         {0x39, 0x20, 0x20, 0, 0},
10352         {0x3A, 0x8, 0x8, 0, 0},
10353         {0x3B, 0x55, 0x55, 1, 1},
10354         {0x3C, 0, 0, 0, 0},
10355         {0x3D, 0x88, 0x88, 1, 1},
10356         {0x3E, 0, 0, 0, 0},
10357         {0x3F, 0, 0, 1, 1},
10358         {0x40, 0x7, 0x7, 1, 1},
10359         {0x41, 0x6, 0x6, 0, 0},
10360         {0x42, 0x4, 0x4, 0, 0},
10361         {0x43, 0, 0, 0, 0},
10362         {0x44, 0x8, 0x8, 0, 0},
10363         {0x45, 0x55, 0x55, 1, 1},
10364         {0x46, 0, 0, 0, 0},
10365         {0x47, 0x11, 0x11, 0, 0},
10366         {0x48, 0, 0, 0, 0},
10367         {0x49, 0, 0, 1, 1},
10368         {0x4A, 0x7, 0x7, 0, 0},
10369         {0x4B, 0x6, 0x6, 0, 0},
10370         {0x4C, 0x4, 0x4, 0, 0},
10371         {0x4D, 0, 0, 0, 0},
10372         {0x4E, 0, 0, 0, 0},
10373         {0x4F, 0x26, 0x26, 1, 1},
10374         {0x50, 0x26, 0x26, 1, 1},
10375         {0x51, 0xf, 0xf, 1, 1},
10376         {0x52, 0xf, 0xf, 1, 1},
10377         {0x53, 0x44, 0x44, 0, 0},
10378         {0x54, 0, 0, 0, 0},
10379         {0x55, 0, 0, 0, 0},
10380         {0x56, 0x8, 0x8, 0, 0},
10381         {0x57, 0x8, 0x8, 0, 0},
10382         {0x58, 0x7, 0x7, 0, 0},
10383         {0x59, 0x22, 0x22, 0, 0},
10384         {0x5A, 0x22, 0x22, 0, 0},
10385         {0x5B, 0x2, 0x2, 0, 0},
10386         {0x5C, 0x4, 0x4, 1, 1},
10387         {0x5D, 0x7, 0x7, 0, 0},
10388         {0x5E, 0x55, 0x55, 0, 0},
10389         {0x5F, 0x23, 0x23, 0, 0},
10390         {0x60, 0x41, 0x41, 0, 0},
10391         {0x61, 0x1, 0x1, 0, 0},
10392         {0x62, 0xa, 0xa, 0, 0},
10393         {0x63, 0, 0, 0, 0},
10394         {0x64, 0, 0, 0, 0},
10395         {0x65, 0, 0, 0, 0},
10396         {0x66, 0, 0, 0, 0},
10397         {0x67, 0, 0, 0, 0},
10398         {0x68, 0, 0, 0, 0},
10399         {0x69, 0, 0, 0, 0},
10400         {0x6A, 0, 0, 0, 0},
10401         {0x6B, 0xc, 0xc, 0, 0},
10402         {0x6C, 0, 0, 0, 0},
10403         {0x6D, 0, 0, 0, 0},
10404         {0x6E, 0, 0, 0, 0},
10405         {0x6F, 0, 0, 0, 0},
10406         {0x70, 0, 0, 0, 0},
10407         {0x71, 0, 0, 0, 0},
10408         {0x72, 0x22, 0x22, 0, 0},
10409         {0x73, 0x22, 0x22, 0, 0},
10410         {0x74, 0, 0, 1, 1},
10411         {0x75, 0xa, 0xa, 0, 0},
10412         {0x76, 0x1, 0x1, 0, 0},
10413         {0x77, 0x22, 0x22, 0, 0},
10414         {0x78, 0x30, 0x30, 0, 0},
10415         {0x79, 0, 0, 0, 0},
10416         {0x7A, 0, 0, 0, 0},
10417         {0x7B, 0, 0, 0, 0},
10418         {0x7C, 0, 0, 0, 0},
10419         {0x7D, 0, 0, 0, 0},
10420         {0x7E, 0, 0, 0, 0},
10421         {0x7F, 0, 0, 0, 0},
10422         {0x80, 0, 0, 0, 0},
10423         {0x81, 0, 0, 0, 0},
10424         {0x82, 0, 0, 0, 0},
10425         {0x83, 0, 0, 0, 0},
10426         {0x84, 0, 0, 0, 0},
10427         {0x85, 0, 0, 0, 0},
10428         {0x86, 0, 0, 0, 0},
10429         {0x87, 0, 0, 0, 0},
10430         {0x88, 0, 0, 0, 0},
10431         {0x89, 0, 0, 0, 0},
10432         {0x8A, 0, 0, 0, 0},
10433         {0x8B, 0, 0, 0, 0},
10434         {0x8C, 0, 0, 0, 0},
10435         {0x8D, 0, 0, 0, 0},
10436         {0x8E, 0, 0, 0, 0},
10437         {0x8F, 0, 0, 0, 0},
10438         {0x90, 0, 0, 0, 0},
10439         {0x91, 0, 0, 0, 0},
10440         {0x92, 0, 0, 0, 0},
10441         {0x93, 0, 0, 0, 0},
10442         {0x94, 0, 0, 0, 0},
10443         {0xFFFF, 0, 0, 0, 0},
10444 };
10445
10446 static struct radio_regs regs_SYN_2056_rev8[] = {
10447         {0x02, 0, 0, 0, 0},
10448         {0x03, 0, 0, 0, 0},
10449         {0x04, 0, 0, 0, 0},
10450         {0x05, 0, 0, 0, 0},
10451         {0x06, 0, 0, 0, 0},
10452         {0x07, 0, 0, 0, 0},
10453         {0x08, 0, 0, 0, 0},
10454         {0x09, 0x1, 0x1, 0, 0},
10455         {0x0A, 0, 0, 0, 0},
10456         {0x0B, 0, 0, 0, 0},
10457         {0x0C, 0, 0, 0, 0},
10458         {0x0D, 0, 0, 0, 0},
10459         {0x0E, 0, 0, 0, 0},
10460         {0x0F, 0, 0, 0, 0},
10461         {0x10, 0, 0, 0, 0},
10462         {0x11, 0, 0, 0, 0},
10463         {0x12, 0, 0, 0, 0},
10464         {0x13, 0, 0, 0, 0},
10465         {0x14, 0, 0, 0, 0},
10466         {0x15, 0, 0, 0, 0},
10467         {0x16, 0, 0, 0, 0},
10468         {0x17, 0, 0, 0, 0},
10469         {0x18, 0, 0, 0, 0},
10470         {0x19, 0, 0, 0, 0},
10471         {0x1A, 0, 0, 0, 0},
10472         {0x1B, 0, 0, 0, 0},
10473         {0x1C, 0, 0, 0, 0},
10474         {0x1D, 0, 0, 0, 0},
10475         {0x1E, 0, 0, 0, 0},
10476         {0x1F, 0, 0, 0, 0},
10477         {0x20, 0, 0, 0, 0},
10478         {0x21, 0, 0, 0, 0},
10479         {0x22, 0x60, 0x60, 0, 0},
10480         {0x23, 0x6, 0x6, 0, 0},
10481         {0x24, 0xc, 0xc, 0, 0},
10482         {0x25, 0, 0, 0, 0},
10483         {0x26, 0, 0, 0, 0},
10484         {0x27, 0, 0, 0, 0},
10485         {0x28, 0x1, 0x1, 0, 0},
10486         {0x29, 0, 0, 0, 0},
10487         {0x2A, 0, 0, 0, 0},
10488         {0x2B, 0, 0, 0, 0},
10489         {0x2C, 0, 0, 0, 0},
10490         {0x2D, 0, 0, 0, 0},
10491         {0x2E, 0, 0, 0, 0},
10492         {0x2F, 0x1f, 0x1f, 0, 0},
10493         {0x30, 0x15, 0x15, 0, 0},
10494         {0x31, 0xf, 0xf, 0, 0},
10495         {0x32, 0, 0, 0, 0},
10496         {0x33, 0, 0, 0, 0},
10497         {0x34, 0, 0, 0, 0},
10498         {0x35, 0, 0, 0, 0},
10499         {0x36, 0, 0, 0, 0},
10500         {0x37, 0, 0, 0, 0},
10501         {0x38, 0, 0, 0, 0},
10502         {0x39, 0, 0, 0, 0},
10503         {0x3A, 0, 0, 0, 0},
10504         {0x3B, 0, 0, 0, 0},
10505         {0x3C, 0x13, 0x13, 0, 0},
10506         {0x3D, 0xf, 0xf, 0, 0},
10507         {0x3E, 0x18, 0x18, 0, 0},
10508         {0x3F, 0, 0, 0, 0},
10509         {0x40, 0, 0, 0, 0},
10510         {0x41, 0x20, 0x20, 0, 0},
10511         {0x42, 0x20, 0x20, 0, 0},
10512         {0x43, 0, 0, 0, 0},
10513         {0x44, 0x77, 0x77, 0, 0},
10514         {0x45, 0x7, 0x7, 0, 0},
10515         {0x46, 0x1, 0x1, 0, 0},
10516         {0x47, 0x4, 0x4, 0, 0},
10517         {0x48, 0xf, 0xf, 0, 0},
10518         {0x49, 0x30, 0x30, 0, 0},
10519         {0x4A, 0x32, 0x32, 0, 0},
10520         {0x4B, 0xd, 0xd, 0, 0},
10521         {0x4C, 0xd, 0xd, 0, 0},
10522         {0x4D, 0x4, 0x4, 0, 0},
10523         {0x4E, 0x6, 0x6, 0, 0},
10524         {0x4F, 0x1, 0x1, 0, 0},
10525         {0x50, 0x1c, 0x1c, 0, 0},
10526         {0x51, 0x2, 0x2, 0, 0},
10527         {0x52, 0x2, 0x2, 0, 0},
10528         {0x53, 0xf7, 0xf7, 1, 1},
10529         {0x54, 0xb4, 0xb4, 0, 0},
10530         {0x55, 0xd2, 0xd2, 0, 0},
10531         {0x56, 0, 0, 0, 0},
10532         {0x57, 0, 0, 0, 0},
10533         {0x58, 0x4, 0x4, 0, 0},
10534         {0x59, 0x96, 0x96, 0, 0},
10535         {0x5A, 0x3e, 0x3e, 0, 0},
10536         {0x5B, 0x3e, 0x3e, 0, 0},
10537         {0x5C, 0x13, 0x13, 0, 0},
10538         {0x5D, 0x2, 0x2, 0, 0},
10539         {0x5E, 0, 0, 0, 0},
10540         {0x5F, 0x7, 0x7, 0, 0},
10541         {0x60, 0x7, 0x7, 1, 1},
10542         {0x61, 0x8, 0x8, 0, 0},
10543         {0x62, 0x3, 0x3, 0, 0},
10544         {0x63, 0, 0, 0, 0},
10545         {0x64, 0, 0, 0, 0},
10546         {0x65, 0, 0, 0, 0},
10547         {0x66, 0, 0, 0, 0},
10548         {0x67, 0, 0, 0, 0},
10549         {0x68, 0x40, 0x40, 0, 0},
10550         {0x69, 0, 0, 0, 0},
10551         {0x6A, 0, 0, 0, 0},
10552         {0x6B, 0, 0, 0, 0},
10553         {0x6C, 0, 0, 0, 0},
10554         {0x6D, 0x1, 0x1, 0, 0},
10555         {0x6E, 0, 0, 0, 0},
10556         {0x6F, 0, 0, 0, 0},
10557         {0x70, 0x60, 0x60, 0, 0},
10558         {0x71, 0x66, 0x66, 0, 0},
10559         {0x72, 0xc, 0xc, 0, 0},
10560         {0x73, 0x66, 0x66, 0, 0},
10561         {0x74, 0x8f, 0x8f, 1, 1},
10562         {0x75, 0, 0, 0, 0},
10563         {0x76, 0xcc, 0xcc, 0, 0},
10564         {0x77, 0x1, 0x1, 0, 0},
10565         {0x78, 0x66, 0x66, 0, 0},
10566         {0x79, 0x66, 0x66, 0, 0},
10567         {0x7A, 0, 0, 0, 0},
10568         {0x7B, 0, 0, 0, 0},
10569         {0x7C, 0, 0, 0, 0},
10570         {0x7D, 0, 0, 0, 0},
10571         {0x7E, 0, 0, 0, 0},
10572         {0x7F, 0, 0, 0, 0},
10573         {0x80, 0, 0, 0, 0},
10574         {0x81, 0, 0, 0, 0},
10575         {0x82, 0, 0, 0, 0},
10576         {0x83, 0, 0, 0, 0},
10577         {0x84, 0, 0, 0, 0},
10578         {0x85, 0xff, 0xff, 0, 0},
10579         {0x86, 0, 0, 0, 0},
10580         {0x87, 0, 0, 0, 0},
10581         {0x88, 0, 0, 0, 0},
10582         {0x89, 0, 0, 0, 0},
10583         {0x8A, 0, 0, 0, 0},
10584         {0x8B, 0, 0, 0, 0},
10585         {0x8C, 0, 0, 0, 0},
10586         {0x8D, 0, 0, 0, 0},
10587         {0x8E, 0, 0, 0, 0},
10588         {0x8F, 0, 0, 0, 0},
10589         {0x90, 0, 0, 0, 0},
10590         {0x91, 0, 0, 0, 0},
10591         {0x92, 0, 0, 0, 0},
10592         {0x93, 0, 0, 0, 0},
10593         {0x94, 0, 0, 0, 0},
10594         {0x95, 0, 0, 0, 0},
10595         {0x96, 0, 0, 0, 0},
10596         {0x97, 0, 0, 0, 0},
10597         {0x98, 0, 0, 0, 0},
10598         {0x99, 0, 0, 0, 0},
10599         {0x9A, 0, 0, 0, 0},
10600         {0x9B, 0, 0, 0, 0},
10601         {0x9C, 0, 0, 0, 0},
10602         {0x9D, 0, 0, 0, 0},
10603         {0x9E, 0, 0, 0, 0},
10604         {0x9F, 0x6, 0x6, 0, 0},
10605         {0xA0, 0x66, 0x66, 0, 0},
10606         {0xA1, 0x66, 0x66, 0, 0},
10607         {0xA2, 0x66, 0x66, 0, 0},
10608         {0xA3, 0x66, 0x66, 0, 0},
10609         {0xA4, 0x66, 0x66, 0, 0},
10610         {0xA5, 0x66, 0x66, 0, 0},
10611         {0xA6, 0x66, 0x66, 0, 0},
10612         {0xA7, 0x66, 0x66, 0, 0},
10613         {0xA8, 0x66, 0x66, 0, 0},
10614         {0xA9, 0x66, 0x66, 0, 0},
10615         {0xAA, 0x66, 0x66, 0, 0},
10616         {0xAB, 0x66, 0x66, 0, 0},
10617         {0xAC, 0x66, 0x66, 0, 0},
10618         {0xAD, 0x66, 0x66, 0, 0},
10619         {0xAE, 0x66, 0x66, 0, 0},
10620         {0xAF, 0x66, 0x66, 0, 0},
10621         {0xB0, 0x66, 0x66, 0, 0},
10622         {0xB1, 0x66, 0x66, 0, 0},
10623         {0xB2, 0x66, 0x66, 0, 0},
10624         {0xB3, 0xa, 0xa, 0, 0},
10625         {0xB4, 0, 0, 0, 0},
10626         {0xB5, 0, 0, 0, 0},
10627         {0xB6, 0, 0, 0, 0},
10628         {0xFFFF, 0, 0, 0, 0},
10629 };
10630
10631 static struct radio_regs regs_TX_2056_rev8[] = {
10632         {0x02, 0, 0, 0, 0},
10633         {0x03, 0, 0, 0, 0},
10634         {0x04, 0, 0, 0, 0},
10635         {0x05, 0, 0, 0, 0},
10636         {0x06, 0, 0, 0, 0},
10637         {0x07, 0, 0, 0, 0},
10638         {0x08, 0, 0, 0, 0},
10639         {0x09, 0, 0, 0, 0},
10640         {0x0A, 0, 0, 0, 0},
10641         {0x0B, 0, 0, 0, 0},
10642         {0x0C, 0, 0, 0, 0},
10643         {0x0D, 0, 0, 0, 0},
10644         {0x0E, 0, 0, 0, 0},
10645         {0x0F, 0, 0, 0, 0},
10646         {0x10, 0, 0, 0, 0},
10647         {0x11, 0, 0, 0, 0},
10648         {0x12, 0, 0, 0, 0},
10649         {0x13, 0, 0, 0, 0},
10650         {0x14, 0, 0, 0, 0},
10651         {0x15, 0, 0, 0, 0},
10652         {0x16, 0, 0, 0, 0},
10653         {0x17, 0, 0, 0, 0},
10654         {0x18, 0, 0, 0, 0},
10655         {0x19, 0, 0, 0, 0},
10656         {0x1A, 0, 0, 0, 0},
10657         {0x1B, 0, 0, 0, 0},
10658         {0x1C, 0, 0, 0, 0},
10659         {0x1D, 0, 0, 0, 0},
10660         {0x1E, 0, 0, 0, 0},
10661         {0x1F, 0, 0, 0, 0},
10662         {0x20, 0, 0, 0, 0},
10663         {0x21, 0x88, 0x88, 0, 0},
10664         {0x22, 0x88, 0x88, 0, 0},
10665         {0x23, 0x88, 0x88, 0, 0},
10666         {0x24, 0x88, 0x88, 0, 0},
10667         {0x25, 0xc, 0xc, 0, 0},
10668         {0x26, 0, 0, 0, 0},
10669         {0x27, 0x3, 0x3, 0, 0},
10670         {0x28, 0, 0, 0, 0},
10671         {0x29, 0x3, 0x3, 0, 0},
10672         {0x2A, 0x37, 0x37, 0, 0},
10673         {0x2B, 0x3, 0x3, 0, 0},
10674         {0x2C, 0, 0, 0, 0},
10675         {0x2D, 0, 0, 0, 0},
10676         {0x2E, 0x1, 0x1, 0, 0},
10677         {0x2F, 0x1, 0x1, 0, 0},
10678         {0x30, 0, 0, 0, 0},
10679         {0x31, 0, 0, 0, 0},
10680         {0x32, 0, 0, 0, 0},
10681         {0x33, 0x11, 0x11, 0, 0},
10682         {0x34, 0xee, 0xee, 1, 1},
10683         {0x35, 0, 0, 0, 0},
10684         {0x36, 0, 0, 0, 0},
10685         {0x37, 0x3, 0x3, 0, 0},
10686         {0x38, 0x50, 0x50, 1, 1},
10687         {0x39, 0, 0, 0, 0},
10688         {0x3A, 0x50, 0x50, 1, 1},
10689         {0x3B, 0, 0, 0, 0},
10690         {0x3C, 0x6e, 0x6e, 0, 0},
10691         {0x3D, 0xf0, 0xf0, 1, 1},
10692         {0x3E, 0, 0, 0, 0},
10693         {0x3F, 0, 0, 0, 0},
10694         {0x40, 0, 0, 0, 0},
10695         {0x41, 0x3, 0x3, 0, 0},
10696         {0x42, 0x3, 0x3, 0, 0},
10697         {0x43, 0, 0, 0, 0},
10698         {0x44, 0x1e, 0x1e, 0, 0},
10699         {0x45, 0, 0, 0, 0},
10700         {0x46, 0x6e, 0x6e, 0, 0},
10701         {0x47, 0xf0, 0xf0, 1, 1},
10702         {0x48, 0, 0, 0, 0},
10703         {0x49, 0x2, 0x2, 0, 0},
10704         {0x4A, 0xff, 0xff, 1, 1},
10705         {0x4B, 0xc, 0xc, 0, 0},
10706         {0x4C, 0, 0, 0, 0},
10707         {0x4D, 0x38, 0x38, 0, 0},
10708         {0x4E, 0x70, 0x70, 1, 1},
10709         {0x4F, 0x2, 0x2, 0, 0},
10710         {0x50, 0x88, 0x88, 0, 0},
10711         {0x51, 0xc, 0xc, 0, 0},
10712         {0x52, 0, 0, 0, 0},
10713         {0x53, 0x8, 0x8, 0, 0},
10714         {0x54, 0x70, 0x70, 1, 1},
10715         {0x55, 0x2, 0x2, 0, 0},
10716         {0x56, 0xff, 0xff, 1, 1},
10717         {0x57, 0, 0, 0, 0},
10718         {0x58, 0x83, 0x83, 0, 0},
10719         {0x59, 0x77, 0x77, 1, 1},
10720         {0x5A, 0, 0, 0, 0},
10721         {0x5B, 0x2, 0x2, 0, 0},
10722         {0x5C, 0x88, 0x88, 0, 0},
10723         {0x5D, 0, 0, 0, 0},
10724         {0x5E, 0x8, 0x8, 0, 0},
10725         {0x5F, 0x77, 0x77, 1, 1},
10726         {0x60, 0x1, 0x1, 0, 0},
10727         {0x61, 0, 0, 0, 0},
10728         {0x62, 0x7, 0x7, 0, 0},
10729         {0x63, 0, 0, 0, 0},
10730         {0x64, 0x7, 0x7, 0, 0},
10731         {0x65, 0, 0, 0, 0},
10732         {0x66, 0, 0, 0, 0},
10733         {0x67, 0, 0, 1, 1},
10734         {0x68, 0, 0, 0, 0},
10735         {0x69, 0xa, 0xa, 0, 0},
10736         {0x6A, 0, 0, 0, 0},
10737         {0x6B, 0, 0, 0, 0},
10738         {0x6C, 0, 0, 0, 0},
10739         {0x6D, 0, 0, 0, 0},
10740         {0x6E, 0, 0, 0, 0},
10741         {0x6F, 0, 0, 0, 0},
10742         {0x70, 0, 0, 0, 0},
10743         {0x71, 0x2, 0x2, 0, 0},
10744         {0x72, 0, 0, 0, 0},
10745         {0x73, 0, 0, 0, 0},
10746         {0x74, 0xe, 0xe, 0, 0},
10747         {0x75, 0xe, 0xe, 0, 0},
10748         {0x76, 0xe, 0xe, 0, 0},
10749         {0x77, 0x13, 0x13, 0, 0},
10750         {0x78, 0x13, 0x13, 0, 0},
10751         {0x79, 0x1b, 0x1b, 0, 0},
10752         {0x7A, 0x1b, 0x1b, 0, 0},
10753         {0x7B, 0x55, 0x55, 0, 0},
10754         {0x7C, 0x5b, 0x5b, 0, 0},
10755         {0x7D, 0x30, 0x30, 1, 1},
10756         {0x7E, 0, 0, 0, 0},
10757         {0x7F, 0, 0, 0, 0},
10758         {0x80, 0, 0, 0, 0},
10759         {0x81, 0, 0, 0, 0},
10760         {0x82, 0, 0, 0, 0},
10761         {0x83, 0, 0, 0, 0},
10762         {0x84, 0, 0, 0, 0},
10763         {0x85, 0, 0, 0, 0},
10764         {0x86, 0, 0, 0, 0},
10765         {0x87, 0, 0, 0, 0},
10766         {0x88, 0, 0, 0, 0},
10767         {0x89, 0, 0, 0, 0},
10768         {0x8A, 0, 0, 0, 0},
10769         {0x8B, 0, 0, 0, 0},
10770         {0x8C, 0, 0, 0, 0},
10771         {0x8D, 0, 0, 0, 0},
10772         {0x8E, 0, 0, 0, 0},
10773         {0x8F, 0, 0, 0, 0},
10774         {0x90, 0, 0, 0, 0},
10775         {0x91, 0, 0, 0, 0},
10776         {0x92, 0, 0, 0, 0},
10777         {0x93, 0x70, 0x70, 0, 0},
10778         {0x94, 0x70, 0x70, 0, 0},
10779         {0x95, 0x70, 0x70, 0, 0},
10780         {0x96, 0x70, 0x70, 0, 0},
10781         {0x97, 0x70, 0x70, 0, 0},
10782         {0x98, 0x70, 0x70, 0, 0},
10783         {0x99, 0x70, 0x70, 0, 0},
10784         {0x9A, 0x70, 0x70, 0, 0},
10785         {0xFFFF, 0, 0, 0, 0},
10786 };
10787
10788 static struct radio_regs regs_RX_2056_rev8[] = {
10789         {0x02, 0, 0, 0, 0},
10790         {0x03, 0, 0, 0, 0},
10791         {0x04, 0, 0, 0, 0},
10792         {0x05, 0, 0, 0, 0},
10793         {0x06, 0, 0, 0, 0},
10794         {0x07, 0, 0, 0, 0},
10795         {0x08, 0, 0, 0, 0},
10796         {0x09, 0, 0, 0, 0},
10797         {0x0A, 0, 0, 0, 0},
10798         {0x0B, 0, 0, 0, 0},
10799         {0x0C, 0, 0, 0, 0},
10800         {0x0D, 0, 0, 0, 0},
10801         {0x0E, 0, 0, 0, 0},
10802         {0x0F, 0, 0, 0, 0},
10803         {0x10, 0, 0, 0, 0},
10804         {0x11, 0, 0, 0, 0},
10805         {0x12, 0, 0, 0, 0},
10806         {0x13, 0, 0, 0, 0},
10807         {0x14, 0, 0, 0, 0},
10808         {0x15, 0, 0, 0, 0},
10809         {0x16, 0, 0, 0, 0},
10810         {0x17, 0, 0, 0, 0},
10811         {0x18, 0, 0, 0, 0},
10812         {0x19, 0, 0, 0, 0},
10813         {0x1A, 0, 0, 0, 0},
10814         {0x1B, 0, 0, 0, 0},
10815         {0x1C, 0, 0, 0, 0},
10816         {0x1D, 0, 0, 0, 0},
10817         {0x1E, 0, 0, 0, 0},
10818         {0x1F, 0, 0, 0, 0},
10819         {0x20, 0x3, 0x3, 0, 0},
10820         {0x21, 0, 0, 0, 0},
10821         {0x22, 0, 0, 0, 0},
10822         {0x23, 0x90, 0x90, 0, 0},
10823         {0x24, 0x55, 0x55, 0, 0},
10824         {0x25, 0x15, 0x15, 0, 0},
10825         {0x26, 0x5, 0x5, 0, 0},
10826         {0x27, 0x15, 0x15, 0, 0},
10827         {0x28, 0x5, 0x5, 0, 0},
10828         {0x29, 0x20, 0x20, 0, 0},
10829         {0x2A, 0x11, 0x11, 0, 0},
10830         {0x2B, 0x90, 0x90, 0, 0},
10831         {0x2C, 0, 0, 0, 0},
10832         {0x2D, 0x88, 0x88, 0, 0},
10833         {0x2E, 0x32, 0x32, 0, 0},
10834         {0x2F, 0x77, 0x77, 0, 0},
10835         {0x30, 0x17, 0x17, 1, 1},
10836         {0x31, 0xff, 0xff, 1, 1},
10837         {0x32, 0x20, 0x20, 0, 0},
10838         {0x33, 0, 0, 0, 0},
10839         {0x34, 0x88, 0x88, 0, 0},
10840         {0x35, 0x32, 0x32, 0, 0},
10841         {0x36, 0x77, 0x77, 0, 0},
10842         {0x37, 0x17, 0x17, 1, 1},
10843         {0x38, 0xf0, 0xf0, 1, 1},
10844         {0x39, 0x20, 0x20, 0, 0},
10845         {0x3A, 0x8, 0x8, 0, 0},
10846         {0x3B, 0x55, 0x55, 1, 1},
10847         {0x3C, 0, 0, 0, 0},
10848         {0x3D, 0x88, 0x88, 1, 1},
10849         {0x3E, 0, 0, 0, 0},
10850         {0x3F, 0x44, 0x44, 0, 0},
10851         {0x40, 0x7, 0x7, 1, 1},
10852         {0x41, 0x6, 0x6, 0, 0},
10853         {0x42, 0x4, 0x4, 0, 0},
10854         {0x43, 0, 0, 0, 0},
10855         {0x44, 0x8, 0x8, 0, 0},
10856         {0x45, 0x55, 0x55, 1, 1},
10857         {0x46, 0, 0, 0, 0},
10858         {0x47, 0x11, 0x11, 0, 0},
10859         {0x48, 0, 0, 0, 0},
10860         {0x49, 0x44, 0x44, 0, 0},
10861         {0x4A, 0x7, 0x7, 0, 0},
10862         {0x4B, 0x6, 0x6, 0, 0},
10863         {0x4C, 0x4, 0x4, 0, 0},
10864         {0x4D, 0, 0, 0, 0},
10865         {0x4E, 0, 0, 0, 0},
10866         {0x4F, 0x26, 0x26, 1, 1},
10867         {0x50, 0x26, 0x26, 1, 1},
10868         {0x51, 0xf, 0xf, 1, 1},
10869         {0x52, 0xf, 0xf, 1, 1},
10870         {0x53, 0x44, 0x44, 0, 0},
10871         {0x54, 0, 0, 0, 0},
10872         {0x55, 0, 0, 0, 0},
10873         {0x56, 0x8, 0x8, 0, 0},
10874         {0x57, 0x8, 0x8, 0, 0},
10875         {0x58, 0x7, 0x7, 0, 0},
10876         {0x59, 0x22, 0x22, 0, 0},
10877         {0x5A, 0x22, 0x22, 0, 0},
10878         {0x5B, 0x2, 0x2, 0, 0},
10879         {0x5C, 0x4, 0x4, 1, 1},
10880         {0x5D, 0x7, 0x7, 0, 0},
10881         {0x5E, 0x55, 0x55, 0, 0},
10882         {0x5F, 0x23, 0x23, 0, 0},
10883         {0x60, 0x41, 0x41, 0, 0},
10884         {0x61, 0x1, 0x1, 0, 0},
10885         {0x62, 0xa, 0xa, 0, 0},
10886         {0x63, 0, 0, 0, 0},
10887         {0x64, 0, 0, 0, 0},
10888         {0x65, 0, 0, 0, 0},
10889         {0x66, 0, 0, 0, 0},
10890         {0x67, 0, 0, 0, 0},
10891         {0x68, 0, 0, 0, 0},
10892         {0x69, 0, 0, 0, 0},
10893         {0x6A, 0, 0, 0, 0},
10894         {0x6B, 0xc, 0xc, 0, 0},
10895         {0x6C, 0, 0, 0, 0},
10896         {0x6D, 0, 0, 0, 0},
10897         {0x6E, 0, 0, 0, 0},
10898         {0x6F, 0, 0, 0, 0},
10899         {0x70, 0, 0, 0, 0},
10900         {0x71, 0, 0, 0, 0},
10901         {0x72, 0x22, 0x22, 0, 0},
10902         {0x73, 0x22, 0x22, 0, 0},
10903         {0x74, 0, 0, 1, 1},
10904         {0x75, 0xa, 0xa, 0, 0},
10905         {0x76, 0x1, 0x1, 0, 0},
10906         {0x77, 0x22, 0x22, 0, 0},
10907         {0x78, 0x30, 0x30, 0, 0},
10908         {0x79, 0, 0, 0, 0},
10909         {0x7A, 0, 0, 0, 0},
10910         {0x7B, 0, 0, 0, 0},
10911         {0x7C, 0, 0, 0, 0},
10912         {0x7D, 0x5, 0x5, 1, 1},
10913         {0x7E, 0, 0, 0, 0},
10914         {0x7F, 0, 0, 0, 0},
10915         {0x80, 0, 0, 0, 0},
10916         {0x81, 0, 0, 0, 0},
10917         {0x82, 0, 0, 0, 0},
10918         {0x83, 0, 0, 0, 0},
10919         {0x84, 0, 0, 0, 0},
10920         {0x85, 0, 0, 0, 0},
10921         {0x86, 0, 0, 0, 0},
10922         {0x87, 0, 0, 0, 0},
10923         {0x88, 0, 0, 0, 0},
10924         {0x89, 0, 0, 0, 0},
10925         {0x8A, 0, 0, 0, 0},
10926         {0x8B, 0, 0, 0, 0},
10927         {0x8C, 0, 0, 0, 0},
10928         {0x8D, 0, 0, 0, 0},
10929         {0x8E, 0, 0, 0, 0},
10930         {0x8F, 0, 0, 0, 0},
10931         {0x90, 0, 0, 0, 0},
10932         {0x91, 0, 0, 0, 0},
10933         {0x92, 0, 0, 0, 0},
10934         {0x93, 0, 0, 0, 0},
10935         {0x94, 0, 0, 0, 0},
10936         {0xFFFF, 0, 0, 0, 0},
10937 };
10938
10939 static const struct radio_regs regs_SYN_2056_rev11[] = {
10940         {0x02, 0, 0, 0, 0},
10941         {0x03, 0, 0, 0, 0},
10942         {0x04, 0, 0, 0, 0},
10943         {0x05, 0, 0, 0, 0},
10944         {0x06, 0, 0, 0, 0},
10945         {0x07, 0, 0, 0, 0},
10946         {0x08, 0, 0, 0, 0},
10947         {0x09, 0x1, 0x1, 0, 0},
10948         {0x0A, 0, 0, 0, 0},
10949         {0x0B, 0, 0, 0, 0},
10950         {0x0C, 0, 0, 0, 0},
10951         {0x0D, 0, 0, 0, 0},
10952         {0x0E, 0, 0, 0, 0},
10953         {0x0F, 0, 0, 0, 0},
10954         {0x10, 0, 0, 0, 0},
10955         {0x11, 0, 0, 0, 0},
10956         {0x12, 0, 0, 0, 0},
10957         {0x13, 0, 0, 0, 0},
10958         {0x14, 0, 0, 0, 0},
10959         {0x15, 0, 0, 0, 0},
10960         {0x16, 0, 0, 0, 0},
10961         {0x17, 0, 0, 0, 0},
10962         {0x18, 0, 0, 0, 0},
10963         {0x19, 0, 0, 0, 0},
10964         {0x1A, 0, 0, 0, 0},
10965         {0x1B, 0, 0, 0, 0},
10966         {0x1C, 0, 0, 0, 0},
10967         {0x1D, 0, 0, 0, 0},
10968         {0x1E, 0, 0, 0, 0},
10969         {0x1F, 0, 0, 0, 0},
10970         {0x20, 0, 0, 0, 0},
10971         {0x21, 0, 0, 0, 0},
10972         {0x22, 0x60, 0x60, 0, 0},
10973         {0x23, 0x6, 0x6, 0, 0},
10974         {0x24, 0xc, 0xc, 0, 0},
10975         {0x25, 0, 0, 0, 0},
10976         {0x26, 0, 0, 0, 0},
10977         {0x27, 0, 0, 0, 0},
10978         {0x28, 0x1, 0x1, 0, 0},
10979         {0x29, 0, 0, 0, 0},
10980         {0x2A, 0, 0, 0, 0},
10981         {0x2B, 0, 0, 0, 0},
10982         {0x2C, 0, 0, 0, 0},
10983         {0x2D, 0, 0, 0, 0},
10984         {0x2E, 0, 0, 0, 0},
10985         {0x2F, 0x1f, 0x1f, 0, 0},
10986         {0x30, 0x15, 0x15, 0, 0},
10987         {0x31, 0xf, 0xf, 0, 0},
10988         {0x32, 0, 0, 0, 0},
10989         {0x33, 0, 0, 0, 0},
10990         {0x34, 0, 0, 0, 0},
10991         {0x35, 0, 0, 0, 0},
10992         {0x36, 0, 0, 0, 0},
10993         {0x37, 0, 0, 0, 0},
10994         {0x38, 0, 0, 0, 0},
10995         {0x39, 0, 0, 0, 0},
10996         {0x3A, 0, 0, 0, 0},
10997         {0x3B, 0, 0, 0, 0},
10998         {0x3C, 0x13, 0x13, 0, 0},
10999         {0x3D, 0xf, 0xf, 0, 0},
11000         {0x3E, 0x18, 0x18, 0, 0},
11001         {0x3F, 0, 0, 0, 0},
11002         {0x40, 0, 0, 0, 0},
11003         {0x41, 0x20, 0x20, 0, 0},
11004         {0x42, 0x20, 0x20, 0, 0},
11005         {0x43, 0, 0, 0, 0},
11006         {0x44, 0x77, 0x77, 0, 0},
11007         {0x45, 0x7, 0x7, 0, 0},
11008         {0x46, 0x1, 0x1, 0, 0},
11009         {0x47, 0x6, 0x6, 1, 1},
11010         {0x48, 0xf, 0xf, 0, 0},
11011         {0x49, 0x3f, 0x3f, 1, 1},
11012         {0x4A, 0x32, 0x32, 0, 0},
11013         {0x4B, 0x6, 0x6, 1, 1},
11014         {0x4C, 0x6, 0x6, 1, 1},
11015         {0x4D, 0x4, 0x4, 0, 0},
11016         {0x4E, 0x2b, 0x2b, 1, 1},
11017         {0x4F, 0x1, 0x1, 0, 0},
11018         {0x50, 0x1c, 0x1c, 0, 0},
11019         {0x51, 0x2, 0x2, 0, 0},
11020         {0x52, 0x2, 0x2, 0, 0},
11021         {0x53, 0xf7, 0xf7, 1, 1},
11022         {0x54, 0xb4, 0xb4, 0, 0},
11023         {0x55, 0xd2, 0xd2, 0, 0},
11024         {0x56, 0, 0, 0, 0},
11025         {0x57, 0, 0, 0, 0},
11026         {0x58, 0x4, 0x4, 0, 0},
11027         {0x59, 0x96, 0x96, 0, 0},
11028         {0x5A, 0x3e, 0x3e, 0, 0},
11029         {0x5B, 0x3e, 0x3e, 0, 0},
11030         {0x5C, 0x13, 0x13, 0, 0},
11031         {0x5D, 0x2, 0x2, 0, 0},
11032         {0x5E, 0, 0, 0, 0},
11033         {0x5F, 0x7, 0x7, 0, 0},
11034         {0x60, 0x7, 0x7, 1, 1},
11035         {0x61, 0x8, 0x8, 0, 0},
11036         {0x62, 0x3, 0x3, 0, 0},
11037         {0x63, 0, 0, 0, 0},
11038         {0x64, 0, 0, 0, 0},
11039         {0x65, 0, 0, 0, 0},
11040         {0x66, 0, 0, 0, 0},
11041         {0x67, 0, 0, 0, 0},
11042         {0x68, 0x40, 0x40, 0, 0},
11043         {0x69, 0, 0, 0, 0},
11044         {0x6A, 0, 0, 0, 0},
11045         {0x6B, 0, 0, 0, 0},
11046         {0x6C, 0, 0, 0, 0},
11047         {0x6D, 0x1, 0x1, 0, 0},
11048         {0x6E, 0, 0, 0, 0},
11049         {0x6F, 0, 0, 0, 0},
11050         {0x70, 0x60, 0x60, 0, 0},
11051         {0x71, 0x66, 0x66, 0, 0},
11052         {0x72, 0xc, 0xc, 0, 0},
11053         {0x73, 0x66, 0x66, 0, 0},
11054         {0x74, 0x8f, 0x8f, 1, 1},
11055         {0x75, 0, 0, 0, 0},
11056         {0x76, 0xcc, 0xcc, 0, 0},
11057         {0x77, 0x1, 0x1, 0, 0},
11058         {0x78, 0x66, 0x66, 0, 0},
11059         {0x79, 0x66, 0x66, 0, 0},
11060         {0x7A, 0, 0, 0, 0},
11061         {0x7B, 0, 0, 0, 0},
11062         {0x7C, 0, 0, 0, 0},
11063         {0x7D, 0, 0, 0, 0},
11064         {0x7E, 0, 0, 0, 0},
11065         {0x7F, 0, 0, 0, 0},
11066         {0x80, 0, 0, 0, 0},
11067         {0x81, 0, 0, 0, 0},
11068         {0x82, 0, 0, 0, 0},
11069         {0x83, 0, 0, 0, 0},
11070         {0x84, 0, 0, 0, 0},
11071         {0x85, 0xff, 0xff, 0, 0},
11072         {0x86, 0, 0, 0, 0},
11073         {0x87, 0, 0, 0, 0},
11074         {0x88, 0, 0, 0, 0},
11075         {0x89, 0, 0, 0, 0},
11076         {0x8A, 0, 0, 0, 0},
11077         {0x8B, 0, 0, 0, 0},
11078         {0x8C, 0, 0, 0, 0},
11079         {0x8D, 0, 0, 0, 0},
11080         {0x8E, 0, 0, 0, 0},
11081         {0x8F, 0, 0, 0, 0},
11082         {0x90, 0, 0, 0, 0},
11083         {0x91, 0, 0, 0, 0},
11084         {0x92, 0, 0, 0, 0},
11085         {0x93, 0, 0, 0, 0},
11086         {0x94, 0, 0, 0, 0},
11087         {0x95, 0, 0, 0, 0},
11088         {0x96, 0, 0, 0, 0},
11089         {0x97, 0, 0, 0, 0},
11090         {0x98, 0, 0, 0, 0},
11091         {0x99, 0, 0, 0, 0},
11092         {0x9A, 0, 0, 0, 0},
11093         {0x9B, 0, 0, 0, 0},
11094         {0x9C, 0, 0, 0, 0},
11095         {0x9D, 0, 0, 0, 0},
11096         {0x9E, 0, 0, 0, 0},
11097         {0x9F, 0x6, 0x6, 0, 0},
11098         {0xA0, 0x66, 0x66, 0, 0},
11099         {0xA1, 0x66, 0x66, 0, 0},
11100         {0xA2, 0x66, 0x66, 0, 0},
11101         {0xA3, 0x66, 0x66, 0, 0},
11102         {0xA4, 0x66, 0x66, 0, 0},
11103         {0xA5, 0x66, 0x66, 0, 0},
11104         {0xA6, 0x66, 0x66, 0, 0},
11105         {0xA7, 0x66, 0x66, 0, 0},
11106         {0xA8, 0x66, 0x66, 0, 0},
11107         {0xA9, 0x66, 0x66, 0, 0},
11108         {0xAA, 0x66, 0x66, 0, 0},
11109         {0xAB, 0x66, 0x66, 0, 0},
11110         {0xAC, 0x66, 0x66, 0, 0},
11111         {0xAD, 0x66, 0x66, 0, 0},
11112         {0xAE, 0x66, 0x66, 0, 0},
11113         {0xAF, 0x66, 0x66, 0, 0},
11114         {0xB0, 0x66, 0x66, 0, 0},
11115         {0xB1, 0x66, 0x66, 0, 0},
11116         {0xB2, 0x66, 0x66, 0, 0},
11117         {0xB3, 0xa, 0xa, 0, 0},
11118         {0xB4, 0, 0, 0, 0},
11119         {0xB5, 0, 0, 0, 0},
11120         {0xB6, 0, 0, 0, 0},
11121         {0xFFFF, 0, 0, 0, 0},
11122 };
11123
11124 static const struct radio_regs regs_TX_2056_rev11[] = {
11125         {0x02, 0, 0, 0, 0},
11126         {0x03, 0, 0, 0, 0},
11127         {0x04, 0, 0, 0, 0},
11128         {0x05, 0, 0, 0, 0},
11129         {0x06, 0, 0, 0, 0},
11130         {0x07, 0, 0, 0, 0},
11131         {0x08, 0, 0, 0, 0},
11132         {0x09, 0, 0, 0, 0},
11133         {0x0A, 0, 0, 0, 0},
11134         {0x0B, 0, 0, 0, 0},
11135         {0x0C, 0, 0, 0, 0},
11136         {0x0D, 0, 0, 0, 0},
11137         {0x0E, 0, 0, 0, 0},
11138         {0x0F, 0, 0, 0, 0},
11139         {0x10, 0, 0, 0, 0},
11140         {0x11, 0, 0, 0, 0},
11141         {0x12, 0, 0, 0, 0},
11142         {0x13, 0, 0, 0, 0},
11143         {0x14, 0, 0, 0, 0},
11144         {0x15, 0, 0, 0, 0},
11145         {0x16, 0, 0, 0, 0},
11146         {0x17, 0, 0, 0, 0},
11147         {0x18, 0, 0, 0, 0},
11148         {0x19, 0, 0, 0, 0},
11149         {0x1A, 0, 0, 0, 0},
11150         {0x1B, 0, 0, 0, 0},
11151         {0x1C, 0, 0, 0, 0},
11152         {0x1D, 0, 0, 0, 0},
11153         {0x1E, 0, 0, 0, 0},
11154         {0x1F, 0, 0, 0, 0},
11155         {0x20, 0, 0, 0, 0},
11156         {0x21, 0x88, 0x88, 0, 0},
11157         {0x22, 0x88, 0x88, 0, 0},
11158         {0x23, 0x88, 0x88, 0, 0},
11159         {0x24, 0x88, 0x88, 0, 0},
11160         {0x25, 0xc, 0xc, 0, 0},
11161         {0x26, 0, 0, 0, 0},
11162         {0x27, 0x3, 0x3, 0, 0},
11163         {0x28, 0, 0, 0, 0},
11164         {0x29, 0x3, 0x3, 0, 0},
11165         {0x2A, 0x37, 0x37, 0, 0},
11166         {0x2B, 0x3, 0x3, 0, 0},
11167         {0x2C, 0, 0, 0, 0},
11168         {0x2D, 0, 0, 0, 0},
11169         {0x2E, 0x1, 0x1, 0, 0},
11170         {0x2F, 0x1, 0x1, 0, 0},
11171         {0x30, 0, 0, 0, 0},
11172         {0x31, 0, 0, 0, 0},
11173         {0x32, 0, 0, 0, 0},
11174         {0x33, 0x11, 0x11, 0, 0},
11175         {0x34, 0xee, 0xee, 1, 1},
11176         {0x35, 0, 0, 0, 0},
11177         {0x36, 0, 0, 0, 0},
11178         {0x37, 0x3, 0x3, 0, 0},
11179         {0x38, 0x50, 0x50, 1, 1},
11180         {0x39, 0, 0, 0, 0},
11181         {0x3A, 0x50, 0x50, 1, 1},
11182         {0x3B, 0, 0, 0, 0},
11183         {0x3C, 0x6e, 0x6e, 0, 0},
11184         {0x3D, 0xf0, 0xf0, 1, 1},
11185         {0x3E, 0, 0, 0, 0},
11186         {0x3F, 0, 0, 0, 0},
11187         {0x40, 0, 0, 0, 0},
11188         {0x41, 0x3, 0x3, 0, 0},
11189         {0x42, 0x3, 0x3, 0, 0},
11190         {0x43, 0, 0, 0, 0},
11191         {0x44, 0x1e, 0x1e, 0, 0},
11192         {0x45, 0, 0, 0, 0},
11193         {0x46, 0x6e, 0x6e, 0, 0},
11194         {0x47, 0xf0, 0xf0, 1, 1},
11195         {0x48, 0, 0, 0, 0},
11196         {0x49, 0x2, 0x2, 0, 0},
11197         {0x4A, 0xff, 0xff, 1, 1},
11198         {0x4B, 0xc, 0xc, 0, 0},
11199         {0x4C, 0, 0, 0, 0},
11200         {0x4D, 0x38, 0x38, 0, 0},
11201         {0x4E, 0x70, 0x70, 1, 1},
11202         {0x4F, 0x2, 0x2, 0, 0},
11203         {0x50, 0x88, 0x88, 0, 0},
11204         {0x51, 0xc, 0xc, 0, 0},
11205         {0x52, 0, 0, 0, 0},
11206         {0x53, 0x8, 0x8, 0, 0},
11207         {0x54, 0x70, 0x70, 1, 1},
11208         {0x55, 0x2, 0x2, 0, 0},
11209         {0x56, 0xff, 0xff, 1, 1},
11210         {0x57, 0, 0, 0, 0},
11211         {0x58, 0x83, 0x83, 0, 0},
11212         {0x59, 0x77, 0x77, 1, 1},
11213         {0x5A, 0, 0, 0, 0},
11214         {0x5B, 0x2, 0x2, 0, 0},
11215         {0x5C, 0x88, 0x88, 0, 0},
11216         {0x5D, 0, 0, 0, 0},
11217         {0x5E, 0x8, 0x8, 0, 0},
11218         {0x5F, 0x77, 0x77, 1, 1},
11219         {0x60, 0x1, 0x1, 0, 0},
11220         {0x61, 0, 0, 0, 0},
11221         {0x62, 0x7, 0x7, 0, 0},
11222         {0x63, 0, 0, 0, 0},
11223         {0x64, 0x7, 0x7, 0, 0},
11224         {0x65, 0, 0, 0, 0},
11225         {0x66, 0, 0, 0, 0},
11226         {0x67, 0, 0, 1, 1},
11227         {0x68, 0, 0, 0, 0},
11228         {0x69, 0xa, 0xa, 0, 0},
11229         {0x6A, 0, 0, 0, 0},
11230         {0x6B, 0, 0, 0, 0},
11231         {0x6C, 0, 0, 0, 0},
11232         {0x6D, 0, 0, 0, 0},
11233         {0x6E, 0, 0, 0, 0},
11234         {0x6F, 0, 0, 0, 0},
11235         {0x70, 0, 0, 0, 0},
11236         {0x71, 0x2, 0x2, 0, 0},
11237         {0x72, 0, 0, 0, 0},
11238         {0x73, 0, 0, 0, 0},
11239         {0x74, 0xe, 0xe, 0, 0},
11240         {0x75, 0xe, 0xe, 0, 0},
11241         {0x76, 0xe, 0xe, 0, 0},
11242         {0x77, 0x13, 0x13, 0, 0},
11243         {0x78, 0x13, 0x13, 0, 0},
11244         {0x79, 0x1b, 0x1b, 0, 0},
11245         {0x7A, 0x1b, 0x1b, 0, 0},
11246         {0x7B, 0x55, 0x55, 0, 0},
11247         {0x7C, 0x5b, 0x5b, 0, 0},
11248         {0x7D, 0x30, 0x30, 1, 1},
11249         {0x7E, 0, 0, 0, 0},
11250         {0x7F, 0, 0, 0, 0},
11251         {0x80, 0, 0, 0, 0},
11252         {0x81, 0, 0, 0, 0},
11253         {0x82, 0, 0, 0, 0},
11254         {0x83, 0, 0, 0, 0},
11255         {0x84, 0, 0, 0, 0},
11256         {0x85, 0, 0, 0, 0},
11257         {0x86, 0, 0, 0, 0},
11258         {0x87, 0, 0, 0, 0},
11259         {0x88, 0, 0, 0, 0},
11260         {0x89, 0, 0, 0, 0},
11261         {0x8A, 0, 0, 0, 0},
11262         {0x8B, 0, 0, 0, 0},
11263         {0x8C, 0, 0, 0, 0},
11264         {0x8D, 0, 0, 0, 0},
11265         {0x8E, 0, 0, 0, 0},
11266         {0x8F, 0, 0, 0, 0},
11267         {0x90, 0, 0, 0, 0},
11268         {0x91, 0, 0, 0, 0},
11269         {0x92, 0, 0, 0, 0},
11270         {0x93, 0x70, 0x70, 0, 0},
11271         {0x94, 0x70, 0x70, 0, 0},
11272         {0x95, 0x70, 0x70, 0, 0},
11273         {0x96, 0x70, 0x70, 0, 0},
11274         {0x97, 0x70, 0x70, 0, 0},
11275         {0x98, 0x70, 0x70, 0, 0},
11276         {0x99, 0x70, 0x70, 0, 0},
11277         {0x9A, 0x70, 0x70, 0, 0},
11278         {0xFFFF, 0, 0, 0, 0},
11279 };
11280
11281 static const struct radio_regs regs_RX_2056_rev11[] = {
11282         {0x02, 0, 0, 0, 0},
11283         {0x03, 0, 0, 0, 0},
11284         {0x04, 0, 0, 0, 0},
11285         {0x05, 0, 0, 0, 0},
11286         {0x06, 0, 0, 0, 0},
11287         {0x07, 0, 0, 0, 0},
11288         {0x08, 0, 0, 0, 0},
11289         {0x09, 0, 0, 0, 0},
11290         {0x0A, 0, 0, 0, 0},
11291         {0x0B, 0, 0, 0, 0},
11292         {0x0C, 0, 0, 0, 0},
11293         {0x0D, 0, 0, 0, 0},
11294         {0x0E, 0, 0, 0, 0},
11295         {0x0F, 0, 0, 0, 0},
11296         {0x10, 0, 0, 0, 0},
11297         {0x11, 0, 0, 0, 0},
11298         {0x12, 0, 0, 0, 0},
11299         {0x13, 0, 0, 0, 0},
11300         {0x14, 0, 0, 0, 0},
11301         {0x15, 0, 0, 0, 0},
11302         {0x16, 0, 0, 0, 0},
11303         {0x17, 0, 0, 0, 0},
11304         {0x18, 0, 0, 0, 0},
11305         {0x19, 0, 0, 0, 0},
11306         {0x1A, 0, 0, 0, 0},
11307         {0x1B, 0, 0, 0, 0},
11308         {0x1C, 0, 0, 0, 0},
11309         {0x1D, 0, 0, 0, 0},
11310         {0x1E, 0, 0, 0, 0},
11311         {0x1F, 0, 0, 0, 0},
11312         {0x20, 0x3, 0x3, 0, 0},
11313         {0x21, 0, 0, 0, 0},
11314         {0x22, 0, 0, 0, 0},
11315         {0x23, 0x90, 0x90, 0, 0},
11316         {0x24, 0x55, 0x55, 0, 0},
11317         {0x25, 0x15, 0x15, 0, 0},
11318         {0x26, 0x5, 0x5, 0, 0},
11319         {0x27, 0x15, 0x15, 0, 0},
11320         {0x28, 0x5, 0x5, 0, 0},
11321         {0x29, 0x20, 0x20, 0, 0},
11322         {0x2A, 0x11, 0x11, 0, 0},
11323         {0x2B, 0x90, 0x90, 0, 0},
11324         {0x2C, 0, 0, 0, 0},
11325         {0x2D, 0x88, 0x88, 0, 0},
11326         {0x2E, 0x32, 0x32, 0, 0},
11327         {0x2F, 0x77, 0x77, 0, 0},
11328         {0x30, 0x17, 0x17, 1, 1},
11329         {0x31, 0xff, 0xff, 1, 1},
11330         {0x32, 0x20, 0x20, 0, 0},
11331         {0x33, 0, 0, 0, 0},
11332         {0x34, 0x88, 0x88, 0, 0},
11333         {0x35, 0x32, 0x32, 0, 0},
11334         {0x36, 0x77, 0x77, 0, 0},
11335         {0x37, 0x17, 0x17, 1, 1},
11336         {0x38, 0xf0, 0xf0, 1, 1},
11337         {0x39, 0x20, 0x20, 0, 0},
11338         {0x3A, 0x8, 0x8, 0, 0},
11339         {0x3B, 0x55, 0x55, 1, 1},
11340         {0x3C, 0, 0, 0, 0},
11341         {0x3D, 0x88, 0x88, 1, 1},
11342         {0x3E, 0, 0, 0, 0},
11343         {0x3F, 0x44, 0x44, 0, 0},
11344         {0x40, 0x7, 0x7, 1, 1},
11345         {0x41, 0x6, 0x6, 0, 0},
11346         {0x42, 0x4, 0x4, 0, 0},
11347         {0x43, 0, 0, 0, 0},
11348         {0x44, 0x8, 0x8, 0, 0},
11349         {0x45, 0x55, 0x55, 1, 1},
11350         {0x46, 0, 0, 0, 0},
11351         {0x47, 0x11, 0x11, 0, 0},
11352         {0x48, 0, 0, 0, 0},
11353         {0x49, 0x44, 0x44, 0, 0},
11354         {0x4A, 0x7, 0x7, 0, 0},
11355         {0x4B, 0x6, 0x6, 0, 0},
11356         {0x4C, 0x4, 0x4, 0, 0},
11357         {0x4D, 0, 0, 0, 0},
11358         {0x4E, 0, 0, 0, 0},
11359         {0x4F, 0x26, 0x26, 1, 1},
11360         {0x50, 0x26, 0x26, 1, 1},
11361         {0x51, 0xf, 0xf, 1, 1},
11362         {0x52, 0xf, 0xf, 1, 1},
11363         {0x53, 0x44, 0x44, 0, 0},
11364         {0x54, 0, 0, 0, 0},
11365         {0x55, 0, 0, 0, 0},
11366         {0x56, 0x8, 0x8, 0, 0},
11367         {0x57, 0x8, 0x8, 0, 0},
11368         {0x58, 0x7, 0x7, 0, 0},
11369         {0x59, 0x22, 0x22, 0, 0},
11370         {0x5A, 0x22, 0x22, 0, 0},
11371         {0x5B, 0x2, 0x2, 0, 0},
11372         {0x5C, 0x4, 0x4, 1, 1},
11373         {0x5D, 0x7, 0x7, 0, 0},
11374         {0x5E, 0x55, 0x55, 0, 0},
11375         {0x5F, 0x23, 0x23, 0, 0},
11376         {0x60, 0x41, 0x41, 0, 0},
11377         {0x61, 0x1, 0x1, 0, 0},
11378         {0x62, 0xa, 0xa, 0, 0},
11379         {0x63, 0, 0, 0, 0},
11380         {0x64, 0, 0, 0, 0},
11381         {0x65, 0, 0, 0, 0},
11382         {0x66, 0, 0, 0, 0},
11383         {0x67, 0, 0, 0, 0},
11384         {0x68, 0, 0, 0, 0},
11385         {0x69, 0, 0, 0, 0},
11386         {0x6A, 0, 0, 0, 0},
11387         {0x6B, 0xc, 0xc, 0, 0},
11388         {0x6C, 0, 0, 0, 0},
11389         {0x6D, 0, 0, 0, 0},
11390         {0x6E, 0, 0, 0, 0},
11391         {0x6F, 0, 0, 0, 0},
11392         {0x70, 0, 0, 0, 0},
11393         {0x71, 0, 0, 0, 0},
11394         {0x72, 0x22, 0x22, 0, 0},
11395         {0x73, 0x22, 0x22, 0, 0},
11396         {0x74, 0, 0, 1, 1},
11397         {0x75, 0xa, 0xa, 0, 0},
11398         {0x76, 0x1, 0x1, 0, 0},
11399         {0x77, 0x22, 0x22, 0, 0},
11400         {0x78, 0x30, 0x30, 0, 0},
11401         {0x79, 0, 0, 0, 0},
11402         {0x7A, 0, 0, 0, 0},
11403         {0x7B, 0, 0, 0, 0},
11404         {0x7C, 0, 0, 0, 0},
11405         {0x7D, 0x5, 0x5, 1, 1},
11406         {0x7E, 0, 0, 0, 0},
11407         {0x7F, 0, 0, 0, 0},
11408         {0x80, 0, 0, 0, 0},
11409         {0x81, 0, 0, 0, 0},
11410         {0x82, 0, 0, 0, 0},
11411         {0x83, 0, 0, 0, 0},
11412         {0x84, 0, 0, 0, 0},
11413         {0x85, 0, 0, 0, 0},
11414         {0x86, 0, 0, 0, 0},
11415         {0x87, 0, 0, 0, 0},
11416         {0x88, 0, 0, 0, 0},
11417         {0x89, 0, 0, 0, 0},
11418         {0x8A, 0, 0, 0, 0},
11419         {0x8B, 0, 0, 0, 0},
11420         {0x8C, 0, 0, 0, 0},
11421         {0x8D, 0, 0, 0, 0},
11422         {0x8E, 0, 0, 0, 0},
11423         {0x8F, 0, 0, 0, 0},
11424         {0x90, 0, 0, 0, 0},
11425         {0x91, 0, 0, 0, 0},
11426         {0x92, 0, 0, 0, 0},
11427         {0x93, 0, 0, 0, 0},
11428         {0x94, 0, 0, 0, 0},
11429         {0xFFFF, 0, 0, 0, 0},
11430 };
11431
11432 static struct radio_20xx_regs regs_2057_rev4[] = {
11433         {0x00, 0x84, 0},
11434         {0x01, 0, 0},
11435         {0x02, 0x60, 0},
11436         {0x03, 0x1f, 0},
11437         {0x04, 0x4, 0},
11438         {0x05, 0x2, 0},
11439         {0x06, 0x1, 0},
11440         {0x07, 0x1, 0},
11441         {0x08, 0x1, 0},
11442         {0x09, 0x69, 0},
11443         {0x0A, 0x66, 0},
11444         {0x0B, 0x6, 0},
11445         {0x0C, 0x18, 0},
11446         {0x0D, 0x3, 0},
11447         {0x0E, 0x20, 1},
11448         {0x0F, 0x20, 0},
11449         {0x10, 0, 0},
11450         {0x11, 0x7c, 0},
11451         {0x12, 0x42, 0},
11452         {0x13, 0xbd, 0},
11453         {0x14, 0x7, 0},
11454         {0x15, 0xf7, 0},
11455         {0x16, 0x8, 0},
11456         {0x17, 0x17, 0},
11457         {0x18, 0x7, 0},
11458         {0x19, 0, 0},
11459         {0x1A, 0x2, 0},
11460         {0x1B, 0x13, 0},
11461         {0x1C, 0x3e, 0},
11462         {0x1D, 0x3e, 0},
11463         {0x1E, 0x96, 0},
11464         {0x1F, 0x4, 0},
11465         {0x20, 0, 0},
11466         {0x21, 0, 0},
11467         {0x22, 0x17, 0},
11468         {0x23, 0x4, 0},
11469         {0x24, 0x1, 0},
11470         {0x25, 0x6, 0},
11471         {0x26, 0x4, 0},
11472         {0x27, 0xd, 0},
11473         {0x28, 0xd, 0},
11474         {0x29, 0x30, 0},
11475         {0x2A, 0x32, 0},
11476         {0x2B, 0x8, 0},
11477         {0x2C, 0x1c, 0},
11478         {0x2D, 0x2, 0},
11479         {0x2E, 0x4, 0},
11480         {0x2F, 0x7f, 0},
11481         {0x30, 0x27, 0},
11482         {0x31, 0, 1},
11483         {0x32, 0, 1},
11484         {0x33, 0, 1},
11485         {0x34, 0, 0},
11486         {0x35, 0x26, 1},
11487         {0x36, 0x18, 0},
11488         {0x37, 0x7, 0},
11489         {0x38, 0x66, 0},
11490         {0x39, 0x66, 0},
11491         {0x3A, 0x66, 0},
11492         {0x3B, 0x66, 0},
11493         {0x3C, 0xff, 1},
11494         {0x3D, 0xff, 1},
11495         {0x3E, 0xff, 1},
11496         {0x3F, 0xff, 1},
11497         {0x40, 0x16, 0},
11498         {0x41, 0x7, 0},
11499         {0x42, 0x19, 0},
11500         {0x43, 0x7, 0},
11501         {0x44, 0x6, 0},
11502         {0x45, 0x3, 0},
11503         {0x46, 0x1, 0},
11504         {0x47, 0x7, 0},
11505         {0x48, 0x33, 0},
11506         {0x49, 0x5, 0},
11507         {0x4A, 0x77, 0},
11508         {0x4B, 0x66, 0},
11509         {0x4C, 0x66, 0},
11510         {0x4D, 0, 0},
11511         {0x4E, 0x4, 0},
11512         {0x4F, 0xc, 0},
11513         {0x50, 0, 0},
11514         {0x51, 0x75, 0},
11515         {0x56, 0x7, 0},
11516         {0x57, 0, 0},
11517         {0x58, 0, 0},
11518         {0x59, 0xa8, 0},
11519         {0x5A, 0, 0},
11520         {0x5B, 0x1f, 0},
11521         {0x5C, 0x30, 0},
11522         {0x5D, 0x1, 0},
11523         {0x5E, 0x30, 0},
11524         {0x5F, 0x70, 0},
11525         {0x60, 0, 0},
11526         {0x61, 0, 0},
11527         {0x62, 0x33, 1},
11528         {0x63, 0x19, 0},
11529         {0x64, 0x62, 0},
11530         {0x65, 0, 0},
11531         {0x66, 0x11, 0},
11532         {0x69, 0, 0},
11533         {0x6A, 0x7e, 0},
11534         {0x6B, 0x3f, 0},
11535         {0x6C, 0x7f, 0},
11536         {0x6D, 0x78, 0},
11537         {0x6E, 0xc8, 0},
11538         {0x6F, 0x88, 0},
11539         {0x70, 0x8, 0},
11540         {0x71, 0xf, 0},
11541         {0x72, 0xbc, 0},
11542         {0x73, 0x8, 0},
11543         {0x74, 0x60, 0},
11544         {0x75, 0x1e, 0},
11545         {0x76, 0x70, 0},
11546         {0x77, 0, 0},
11547         {0x78, 0, 0},
11548         {0x79, 0, 0},
11549         {0x7A, 0x33, 0},
11550         {0x7B, 0x1e, 0},
11551         {0x7C, 0x62, 0},
11552         {0x7D, 0x11, 0},
11553         {0x80, 0x3c, 0},
11554         {0x81, 0x9c, 0},
11555         {0x82, 0xa, 0},
11556         {0x83, 0x9d, 0},
11557         {0x84, 0xa, 0},
11558         {0x85, 0, 0},
11559         {0x86, 0x40, 0},
11560         {0x87, 0x40, 0},
11561         {0x88, 0x88, 0},
11562         {0x89, 0x10, 0},
11563         {0x8A, 0xf0, 1},
11564         {0x8B, 0x10, 1},
11565         {0x8C, 0xf0, 1},
11566         {0x8D, 0, 0},
11567         {0x8E, 0, 0},
11568         {0x8F, 0x10, 0},
11569         {0x90, 0x55, 0},
11570         {0x91, 0x3f, 1},
11571         {0x92, 0x36, 1},
11572         {0x93, 0, 0},
11573         {0x94, 0, 0},
11574         {0x95, 0, 0},
11575         {0x96, 0x87, 0},
11576         {0x97, 0x11, 0},
11577         {0x98, 0, 0},
11578         {0x99, 0x33, 0},
11579         {0x9A, 0x88, 0},
11580         {0x9B, 0, 0},
11581         {0x9C, 0x87, 0},
11582         {0x9D, 0x11, 0},
11583         {0x9E, 0, 0},
11584         {0x9F, 0x33, 0},
11585         {0xA0, 0x88, 0},
11586         {0xA1, 0xe1, 0},
11587         {0xA2, 0x3f, 0},
11588         {0xA3, 0x44, 0},
11589         {0xA4, 0x8c, 1},
11590         {0xA5, 0x6d, 0},
11591         {0xA6, 0x22, 0},
11592         {0xA7, 0xbe, 0},
11593         {0xA8, 0x55, 1},
11594         {0xA9, 0xc, 0},
11595         {0xAA, 0xc, 0},
11596         {0xAB, 0xaa, 0},
11597         {0xAC, 0x2, 0},
11598         {0xAD, 0, 0},
11599         {0xAE, 0x10, 0},
11600         {0xAF, 0x1, 1},
11601         {0xB0, 0, 0},
11602         {0xB1, 0, 0},
11603         {0xB2, 0x80, 0},
11604         {0xB3, 0x60, 0},
11605         {0xB4, 0x44, 0},
11606         {0xB5, 0x55, 0},
11607         {0xB6, 0x1, 0},
11608         {0xB7, 0x55, 0},
11609         {0xB8, 0x1, 0},
11610         {0xB9, 0x5, 0},
11611         {0xBA, 0x55, 0},
11612         {0xBB, 0x55, 0},
11613         {0xC1, 0, 0},
11614         {0xC2, 0, 0},
11615         {0xC3, 0, 0},
11616         {0xC4, 0, 0},
11617         {0xC5, 0, 0},
11618         {0xC6, 0, 0},
11619         {0xC7, 0, 0},
11620         {0xC8, 0, 0},
11621         {0xC9, 0, 0},
11622         {0xCA, 0, 0},
11623         {0xCB, 0, 0},
11624         {0xCC, 0, 0},
11625         {0xCD, 0, 0},
11626         {0xCE, 0x5e, 0},
11627         {0xCF, 0xc, 0},
11628         {0xD0, 0xc, 0},
11629         {0xD1, 0xc, 0},
11630         {0xD2, 0, 0},
11631         {0xD3, 0x2b, 0},
11632         {0xD4, 0xc, 0},
11633         {0xD5, 0, 0},
11634         {0xD6, 0x75, 0},
11635         {0xDB, 0x7, 0},
11636         {0xDC, 0, 0},
11637         {0xDD, 0, 0},
11638         {0xDE, 0xa8, 0},
11639         {0xDF, 0, 0},
11640         {0xE0, 0x1f, 0},
11641         {0xE1, 0x30, 0},
11642         {0xE2, 0x1, 0},
11643         {0xE3, 0x30, 0},
11644         {0xE4, 0x70, 0},
11645         {0xE5, 0, 0},
11646         {0xE6, 0, 0},
11647         {0xE7, 0x33, 0},
11648         {0xE8, 0x19, 0},
11649         {0xE9, 0x62, 0},
11650         {0xEA, 0, 0},
11651         {0xEB, 0x11, 0},
11652         {0xEE, 0, 0},
11653         {0xEF, 0x7e, 0},
11654         {0xF0, 0x3f, 0},
11655         {0xF1, 0x7f, 0},
11656         {0xF2, 0x78, 0},
11657         {0xF3, 0xc8, 0},
11658         {0xF4, 0x88, 0},
11659         {0xF5, 0x8, 0},
11660         {0xF6, 0xf, 0},
11661         {0xF7, 0xbc, 0},
11662         {0xF8, 0x8, 0},
11663         {0xF9, 0x60, 0},
11664         {0xFA, 0x1e, 0},
11665         {0xFB, 0x70, 0},
11666         {0xFC, 0, 0},
11667         {0xFD, 0, 0},
11668         {0xFE, 0, 0},
11669         {0xFF, 0x33, 0},
11670         {0x100, 0x1e, 0},
11671         {0x101, 0x62, 0},
11672         {0x102, 0x11, 0},
11673         {0x105, 0x3c, 0},
11674         {0x106, 0x9c, 0},
11675         {0x107, 0xa, 0},
11676         {0x108, 0x9d, 0},
11677         {0x109, 0xa, 0},
11678         {0x10A, 0, 0},
11679         {0x10B, 0x40, 0},
11680         {0x10C, 0x40, 0},
11681         {0x10D, 0x88, 0},
11682         {0x10E, 0x10, 0},
11683         {0x10F, 0xf0, 1},
11684         {0x110, 0x10, 1},
11685         {0x111, 0xf0, 1},
11686         {0x112, 0, 0},
11687         {0x113, 0, 0},
11688         {0x114, 0x10, 0},
11689         {0x115, 0x55, 0},
11690         {0x116, 0x3f, 1},
11691         {0x117, 0x36, 1},
11692         {0x118, 0, 0},
11693         {0x119, 0, 0},
11694         {0x11A, 0, 0},
11695         {0x11B, 0x87, 0},
11696         {0x11C, 0x11, 0},
11697         {0x11D, 0, 0},
11698         {0x11E, 0x33, 0},
11699         {0x11F, 0x88, 0},
11700         {0x120, 0, 0},
11701         {0x121, 0x87, 0},
11702         {0x122, 0x11, 0},
11703         {0x123, 0, 0},
11704         {0x124, 0x33, 0},
11705         {0x125, 0x88, 0},
11706         {0x126, 0xe1, 0},
11707         {0x127, 0x3f, 0},
11708         {0x128, 0x44, 0},
11709         {0x129, 0x8c, 1},
11710         {0x12A, 0x6d, 0},
11711         {0x12B, 0x22, 0},
11712         {0x12C, 0xbe, 0},
11713         {0x12D, 0x55, 1},
11714         {0x12E, 0xc, 0},
11715         {0x12F, 0xc, 0},
11716         {0x130, 0xaa, 0},
11717         {0x131, 0x2, 0},
11718         {0x132, 0, 0},
11719         {0x133, 0x10, 0},
11720         {0x134, 0x1, 1},
11721         {0x135, 0, 0},
11722         {0x136, 0, 0},
11723         {0x137, 0x80, 0},
11724         {0x138, 0x60, 0},
11725         {0x139, 0x44, 0},
11726         {0x13A, 0x55, 0},
11727         {0x13B, 0x1, 0},
11728         {0x13C, 0x55, 0},
11729         {0x13D, 0x1, 0},
11730         {0x13E, 0x5, 0},
11731         {0x13F, 0x55, 0},
11732         {0x140, 0x55, 0},
11733         {0x146, 0, 0},
11734         {0x147, 0, 0},
11735         {0x148, 0, 0},
11736         {0x149, 0, 0},
11737         {0x14A, 0, 0},
11738         {0x14B, 0, 0},
11739         {0x14C, 0, 0},
11740         {0x14D, 0, 0},
11741         {0x14E, 0, 0},
11742         {0x14F, 0, 0},
11743         {0x150, 0, 0},
11744         {0x151, 0, 0},
11745         {0x152, 0, 0},
11746         {0x153, 0, 0},
11747         {0x154, 0xc, 0},
11748         {0x155, 0xc, 0},
11749         {0x156, 0xc, 0},
11750         {0x157, 0, 0},
11751         {0x158, 0x2b, 0},
11752         {0x159, 0x84, 0},
11753         {0x15A, 0x15, 0},
11754         {0x15B, 0xf, 0},
11755         {0x15C, 0, 0},
11756         {0x15D, 0, 0},
11757         {0x15E, 0, 1},
11758         {0x15F, 0, 1},
11759         {0x160, 0, 1},
11760         {0x161, 0, 1},
11761         {0x162, 0, 1},
11762         {0x163, 0, 1},
11763         {0x164, 0, 0},
11764         {0x165, 0, 0},
11765         {0x166, 0, 0},
11766         {0x167, 0, 0},
11767         {0x168, 0, 0},
11768         {0x169, 0x2, 1},
11769         {0x16A, 0, 1},
11770         {0x16B, 0, 1},
11771         {0x16C, 0, 1},
11772         {0x16D, 0, 0},
11773         {0x170, 0, 0},
11774         {0x171, 0x77, 0},
11775         {0x172, 0x77, 0},
11776         {0x173, 0x77, 0},
11777         {0x174, 0x77, 0},
11778         {0x175, 0, 0},
11779         {0x176, 0x3, 0},
11780         {0x177, 0x37, 0},
11781         {0x178, 0x3, 0},
11782         {0x179, 0, 0},
11783         {0x17A, 0x21, 0},
11784         {0x17B, 0x21, 0},
11785         {0x17C, 0, 0},
11786         {0x17D, 0xaa, 0},
11787         {0x17E, 0, 0},
11788         {0x17F, 0xaa, 0},
11789         {0x180, 0, 0},
11790         {0x190, 0, 0},
11791         {0x191, 0x77, 0},
11792         {0x192, 0x77, 0},
11793         {0x193, 0x77, 0},
11794         {0x194, 0x77, 0},
11795         {0x195, 0, 0},
11796         {0x196, 0x3, 0},
11797         {0x197, 0x37, 0},
11798         {0x198, 0x3, 0},
11799         {0x199, 0, 0},
11800         {0x19A, 0x21, 0},
11801         {0x19B, 0x21, 0},
11802         {0x19C, 0, 0},
11803         {0x19D, 0xaa, 0},
11804         {0x19E, 0, 0},
11805         {0x19F, 0xaa, 0},
11806         {0x1A0, 0, 0},
11807         {0x1A1, 0x2, 0},
11808         {0x1A2, 0xf, 0},
11809         {0x1A3, 0xf, 0},
11810         {0x1A4, 0, 1},
11811         {0x1A5, 0, 1},
11812         {0x1A6, 0, 1},
11813         {0x1A7, 0x2, 0},
11814         {0x1A8, 0xf, 0},
11815         {0x1A9, 0xf, 0},
11816         {0x1AA, 0, 1},
11817         {0x1AB, 0, 1},
11818         {0x1AC, 0, 1},
11819         {0xFFFF, 0, 0},
11820 };
11821
11822 static struct radio_20xx_regs regs_2057_rev5[] = {
11823         {0x00, 0, 1},
11824         {0x01, 0x57, 1},
11825         {0x02, 0x20, 1},
11826         {0x03, 0x1f, 0},
11827         {0x04, 0x4, 0},
11828         {0x05, 0x2, 0},
11829         {0x06, 0x1, 0},
11830         {0x07, 0x1, 0},
11831         {0x08, 0x1, 0},
11832         {0x09, 0x69, 0},
11833         {0x0A, 0x66, 0},
11834         {0x0B, 0x6, 0},
11835         {0x0C, 0x18, 0},
11836         {0x0D, 0x3, 0},
11837         {0x0E, 0x20, 0},
11838         {0x0F, 0x20, 0},
11839         {0x10, 0, 0},
11840         {0x11, 0x7c, 0},
11841         {0x12, 0x42, 0},
11842         {0x13, 0xbd, 0},
11843         {0x14, 0x7, 0},
11844         {0x15, 0x87, 0},
11845         {0x16, 0x8, 0},
11846         {0x17, 0x17, 0},
11847         {0x18, 0x7, 0},
11848         {0x19, 0, 0},
11849         {0x1A, 0x2, 0},
11850         {0x1B, 0x13, 0},
11851         {0x1C, 0x3e, 0},
11852         {0x1D, 0x3e, 0},
11853         {0x1E, 0x96, 0},
11854         {0x1F, 0x4, 0},
11855         {0x20, 0, 0},
11856         {0x21, 0, 0},
11857         {0x22, 0x17, 0},
11858         {0x23, 0x6, 1},
11859         {0x24, 0x1, 0},
11860         {0x25, 0x6, 0},
11861         {0x26, 0x4, 0},
11862         {0x27, 0xd, 0},
11863         {0x28, 0xd, 0},
11864         {0x29, 0x30, 0},
11865         {0x2A, 0x32, 0},
11866         {0x2B, 0x8, 0},
11867         {0x2C, 0x1c, 0},
11868         {0x2D, 0x2, 0},
11869         {0x2E, 0x4, 0},
11870         {0x2F, 0x7f, 0},
11871         {0x30, 0x27, 0},
11872         {0x31, 0, 1},
11873         {0x32, 0, 1},
11874         {0x33, 0, 1},
11875         {0x34, 0, 0},
11876         {0x35, 0x20, 0},
11877         {0x36, 0x18, 0},
11878         {0x37, 0x7, 0},
11879         {0x38, 0x66, 0},
11880         {0x39, 0x66, 0},
11881         {0x3C, 0xff, 0},
11882         {0x3D, 0xff, 0},
11883         {0x40, 0x16, 0},
11884         {0x41, 0x7, 0},
11885         {0x45, 0x3, 0},
11886         {0x46, 0x1, 0},
11887         {0x47, 0x7, 0},
11888         {0x4B, 0x66, 0},
11889         {0x4C, 0x66, 0},
11890         {0x4D, 0, 0},
11891         {0x4E, 0x4, 0},
11892         {0x4F, 0xc, 0},
11893         {0x50, 0, 0},
11894         {0x51, 0x70, 1},
11895         {0x56, 0x7, 0},
11896         {0x57, 0, 0},
11897         {0x58, 0, 0},
11898         {0x59, 0x88, 1},
11899         {0x5A, 0, 0},
11900         {0x5B, 0x1f, 0},
11901         {0x5C, 0x20, 1},
11902         {0x5D, 0x1, 0},
11903         {0x5E, 0x30, 0},
11904         {0x5F, 0x70, 0},
11905         {0x60, 0, 0},
11906         {0x61, 0, 0},
11907         {0x62, 0x33, 1},
11908         {0x63, 0xf, 1},
11909         {0x64, 0xf, 1},
11910         {0x65, 0, 0},
11911         {0x66, 0x11, 0},
11912         {0x80, 0x3c, 0},
11913         {0x81, 0x1, 1},
11914         {0x82, 0xa, 0},
11915         {0x85, 0, 0},
11916         {0x86, 0x40, 0},
11917         {0x87, 0x40, 0},
11918         {0x88, 0x88, 0},
11919         {0x89, 0x10, 0},
11920         {0x8A, 0xf0, 0},
11921         {0x8B, 0x10, 0},
11922         {0x8C, 0xf0, 0},
11923         {0x8F, 0x10, 0},
11924         {0x90, 0x55, 0},
11925         {0x91, 0x3f, 1},
11926         {0x92, 0x36, 1},
11927         {0x93, 0, 0},
11928         {0x94, 0, 0},
11929         {0x95, 0, 0},
11930         {0x96, 0x87, 0},
11931         {0x97, 0x11, 0},
11932         {0x98, 0, 0},
11933         {0x99, 0x33, 0},
11934         {0x9A, 0x88, 0},
11935         {0xA1, 0x20, 1},
11936         {0xA2, 0x3f, 0},
11937         {0xA3, 0x44, 0},
11938         {0xA4, 0x8c, 0},
11939         {0xA5, 0x6c, 0},
11940         {0xA6, 0x22, 0},
11941         {0xA7, 0xbe, 0},
11942         {0xA8, 0x55, 0},
11943         {0xAA, 0xc, 0},
11944         {0xAB, 0xaa, 0},
11945         {0xAC, 0x2, 0},
11946         {0xAD, 0, 0},
11947         {0xAE, 0x10, 0},
11948         {0xAF, 0x1, 0},
11949         {0xB0, 0, 0},
11950         {0xB1, 0, 0},
11951         {0xB2, 0x80, 0},
11952         {0xB3, 0x60, 0},
11953         {0xB4, 0x44, 0},
11954         {0xB5, 0x55, 0},
11955         {0xB6, 0x1, 0},
11956         {0xB7, 0x55, 0},
11957         {0xB8, 0x1, 0},
11958         {0xB9, 0x5, 0},
11959         {0xBA, 0x55, 0},
11960         {0xBB, 0x55, 0},
11961         {0xC3, 0, 0},
11962         {0xC4, 0, 0},
11963         {0xC5, 0, 0},
11964         {0xC6, 0, 0},
11965         {0xC7, 0, 0},
11966         {0xC8, 0, 0},
11967         {0xC9, 0, 0},
11968         {0xCA, 0, 0},
11969         {0xCB, 0, 0},
11970         {0xCD, 0, 0},
11971         {0xCE, 0x5e, 0},
11972         {0xCF, 0xc, 0},
11973         {0xD0, 0xc, 0},
11974         {0xD1, 0xc, 0},
11975         {0xD2, 0, 0},
11976         {0xD3, 0x2b, 0},
11977         {0xD4, 0xc, 0},
11978         {0xD5, 0, 0},
11979         {0xD6, 0x70, 1},
11980         {0xDB, 0x7, 0},
11981         {0xDC, 0, 0},
11982         {0xDD, 0, 0},
11983         {0xDE, 0x88, 1},
11984         {0xDF, 0, 0},
11985         {0xE0, 0x1f, 0},
11986         {0xE1, 0x20, 1},
11987         {0xE2, 0x1, 0},
11988         {0xE3, 0x30, 0},
11989         {0xE4, 0x70, 0},
11990         {0xE5, 0, 0},
11991         {0xE6, 0, 0},
11992         {0xE7, 0x33, 0},
11993         {0xE8, 0xf, 1},
11994         {0xE9, 0xf, 1},
11995         {0xEA, 0, 0},
11996         {0xEB, 0x11, 0},
11997         {0x105, 0x3c, 0},
11998         {0x106, 0x1, 1},
11999         {0x107, 0xa, 0},
12000         {0x10A, 0, 0},
12001         {0x10B, 0x40, 0},
12002         {0x10C, 0x40, 0},
12003         {0x10D, 0x88, 0},
12004         {0x10E, 0x10, 0},
12005         {0x10F, 0xf0, 0},
12006         {0x110, 0x10, 0},
12007         {0x111, 0xf0, 0},
12008         {0x114, 0x10, 0},
12009         {0x115, 0x55, 0},
12010         {0x116, 0x3f, 1},
12011         {0x117, 0x36, 1},
12012         {0x118, 0, 0},
12013         {0x119, 0, 0},
12014         {0x11A, 0, 0},
12015         {0x11B, 0x87, 0},
12016         {0x11C, 0x11, 0},
12017         {0x11D, 0, 0},
12018         {0x11E, 0x33, 0},
12019         {0x11F, 0x88, 0},
12020         {0x126, 0x20, 1},
12021         {0x127, 0x3f, 0},
12022         {0x128, 0x44, 0},
12023         {0x129, 0x8c, 0},
12024         {0x12A, 0x6c, 0},
12025         {0x12B, 0x22, 0},
12026         {0x12C, 0xbe, 0},
12027         {0x12D, 0x55, 0},
12028         {0x12F, 0xc, 0},
12029         {0x130, 0xaa, 0},
12030         {0x131, 0x2, 0},
12031         {0x132, 0, 0},
12032         {0x133, 0x10, 0},
12033         {0x134, 0x1, 0},
12034         {0x135, 0, 0},
12035         {0x136, 0, 0},
12036         {0x137, 0x80, 0},
12037         {0x138, 0x60, 0},
12038         {0x139, 0x44, 0},
12039         {0x13A, 0x55, 0},
12040         {0x13B, 0x1, 0},
12041         {0x13C, 0x55, 0},
12042         {0x13D, 0x1, 0},
12043         {0x13E, 0x5, 0},
12044         {0x13F, 0x55, 0},
12045         {0x140, 0x55, 0},
12046         {0x148, 0, 0},
12047         {0x149, 0, 0},
12048         {0x14A, 0, 0},
12049         {0x14B, 0, 0},
12050         {0x14C, 0, 0},
12051         {0x14D, 0, 0},
12052         {0x14E, 0, 0},
12053         {0x14F, 0, 0},
12054         {0x150, 0, 0},
12055         {0x154, 0xc, 0},
12056         {0x155, 0xc, 0},
12057         {0x156, 0xc, 0},
12058         {0x157, 0, 0},
12059         {0x158, 0x2b, 0},
12060         {0x159, 0x84, 0},
12061         {0x15A, 0x15, 0},
12062         {0x15B, 0xf, 0},
12063         {0x15C, 0, 0},
12064         {0x15D, 0, 0},
12065         {0x15E, 0, 1},
12066         {0x15F, 0, 1},
12067         {0x160, 0, 1},
12068         {0x161, 0, 1},
12069         {0x162, 0, 1},
12070         {0x163, 0, 1},
12071         {0x164, 0, 0},
12072         {0x165, 0, 0},
12073         {0x166, 0, 0},
12074         {0x167, 0, 0},
12075         {0x168, 0, 0},
12076         {0x169, 0, 0},
12077         {0x16A, 0, 1},
12078         {0x16B, 0, 1},
12079         {0x16C, 0, 1},
12080         {0x16D, 0, 0},
12081         {0x170, 0, 0},
12082         {0x171, 0x77, 0},
12083         {0x172, 0x77, 0},
12084         {0x173, 0x77, 0},
12085         {0x174, 0x77, 0},
12086         {0x175, 0, 0},
12087         {0x176, 0x3, 0},
12088         {0x177, 0x37, 0},
12089         {0x178, 0x3, 0},
12090         {0x179, 0, 0},
12091         {0x17B, 0x21, 0},
12092         {0x17C, 0, 0},
12093         {0x17D, 0xaa, 0},
12094         {0x17E, 0, 0},
12095         {0x190, 0, 0},
12096         {0x191, 0x77, 0},
12097         {0x192, 0x77, 0},
12098         {0x193, 0x77, 0},
12099         {0x194, 0x77, 0},
12100         {0x195, 0, 0},
12101         {0x196, 0x3, 0},
12102         {0x197, 0x37, 0},
12103         {0x198, 0x3, 0},
12104         {0x199, 0, 0},
12105         {0x19B, 0x21, 0},
12106         {0x19C, 0, 0},
12107         {0x19D, 0xaa, 0},
12108         {0x19E, 0, 0},
12109         {0x1A1, 0x2, 0},
12110         {0x1A2, 0xf, 0},
12111         {0x1A3, 0xf, 0},
12112         {0x1A4, 0, 1},
12113         {0x1A5, 0, 1},
12114         {0x1A6, 0, 1},
12115         {0x1A7, 0x2, 0},
12116         {0x1A8, 0xf, 0},
12117         {0x1A9, 0xf, 0},
12118         {0x1AA, 0, 1},
12119         {0x1AB, 0, 1},
12120         {0x1AC, 0, 1},
12121         {0x1AD, 0x84, 0},
12122         {0x1AE, 0x60, 0},
12123         {0x1AF, 0x47, 0},
12124         {0x1B0, 0x47, 0},
12125         {0x1B1, 0, 0},
12126         {0x1B2, 0, 0},
12127         {0x1B3, 0, 0},
12128         {0x1B4, 0, 0},
12129         {0x1B5, 0, 0},
12130         {0x1B6, 0, 0},
12131         {0x1B7, 0xc, 1},
12132         {0x1B8, 0, 0},
12133         {0x1B9, 0, 0},
12134         {0x1BA, 0, 0},
12135         {0x1BB, 0, 0},
12136         {0x1BC, 0, 0},
12137         {0x1BD, 0, 0},
12138         {0x1BE, 0, 0},
12139         {0x1BF, 0, 0},
12140         {0x1C0, 0, 0},
12141         {0x1C1, 0x1, 1},
12142         {0x1C2, 0x80, 1},
12143         {0x1C3, 0, 0},
12144         {0x1C4, 0, 0},
12145         {0x1C5, 0, 0},
12146         {0x1C6, 0, 0},
12147         {0x1C7, 0, 0},
12148         {0x1C8, 0, 0},
12149         {0x1C9, 0, 0},
12150         {0x1CA, 0, 0},
12151         {0xFFFF, 0, 0}
12152 };
12153
12154 static struct radio_20xx_regs regs_2057_rev5v1[] = {
12155         {0x00, 0x15, 1},
12156         {0x01, 0x57, 1},
12157         {0x02, 0x20, 1},
12158         {0x03, 0x1f, 0},
12159         {0x04, 0x4, 0},
12160         {0x05, 0x2, 0},
12161         {0x06, 0x1, 0},
12162         {0x07, 0x1, 0},
12163         {0x08, 0x1, 0},
12164         {0x09, 0x69, 0},
12165         {0x0A, 0x66, 0},
12166         {0x0B, 0x6, 0},
12167         {0x0C, 0x18, 0},
12168         {0x0D, 0x3, 0},
12169         {0x0E, 0x20, 0},
12170         {0x0F, 0x20, 0},
12171         {0x10, 0, 0},
12172         {0x11, 0x7c, 0},
12173         {0x12, 0x42, 0},
12174         {0x13, 0xbd, 0},
12175         {0x14, 0x7, 0},
12176         {0x15, 0x87, 0},
12177         {0x16, 0x8, 0},
12178         {0x17, 0x17, 0},
12179         {0x18, 0x7, 0},
12180         {0x19, 0, 0},
12181         {0x1A, 0x2, 0},
12182         {0x1B, 0x13, 0},
12183         {0x1C, 0x3e, 0},
12184         {0x1D, 0x3e, 0},
12185         {0x1E, 0x96, 0},
12186         {0x1F, 0x4, 0},
12187         {0x20, 0, 0},
12188         {0x21, 0, 0},
12189         {0x22, 0x17, 0},
12190         {0x23, 0x6, 1},
12191         {0x24, 0x1, 0},
12192         {0x25, 0x6, 0},
12193         {0x26, 0x4, 0},
12194         {0x27, 0xd, 0},
12195         {0x28, 0xd, 0},
12196         {0x29, 0x30, 0},
12197         {0x2A, 0x32, 0},
12198         {0x2B, 0x8, 0},
12199         {0x2C, 0x1c, 0},
12200         {0x2D, 0x2, 0},
12201         {0x2E, 0x4, 0},
12202         {0x2F, 0x7f, 0},
12203         {0x30, 0x27, 0},
12204         {0x31, 0, 1},
12205         {0x32, 0, 1},
12206         {0x33, 0, 1},
12207         {0x34, 0, 0},
12208         {0x35, 0x20, 0},
12209         {0x36, 0x18, 0},
12210         {0x37, 0x7, 0},
12211         {0x38, 0x66, 0},
12212         {0x39, 0x66, 0},
12213         {0x3C, 0xff, 0},
12214         {0x3D, 0xff, 0},
12215         {0x40, 0x16, 0},
12216         {0x41, 0x7, 0},
12217         {0x45, 0x3, 0},
12218         {0x46, 0x1, 0},
12219         {0x47, 0x7, 0},
12220         {0x4B, 0x66, 0},
12221         {0x4C, 0x66, 0},
12222         {0x4D, 0, 0},
12223         {0x4E, 0x4, 0},
12224         {0x4F, 0xc, 0},
12225         {0x50, 0, 0},
12226         {0x51, 0x70, 1},
12227         {0x56, 0x7, 0},
12228         {0x57, 0, 0},
12229         {0x58, 0, 0},
12230         {0x59, 0x88, 1},
12231         {0x5A, 0, 0},
12232         {0x5B, 0x1f, 0},
12233         {0x5C, 0x20, 1},
12234         {0x5D, 0x1, 0},
12235         {0x5E, 0x30, 0},
12236         {0x5F, 0x70, 0},
12237         {0x60, 0, 0},
12238         {0x61, 0, 0},
12239         {0x62, 0x33, 1},
12240         {0x63, 0xf, 1},
12241         {0x64, 0xf, 1},
12242         {0x65, 0, 0},
12243         {0x66, 0x11, 0},
12244         {0x80, 0x3c, 0},
12245         {0x81, 0x1, 1},
12246         {0x82, 0xa, 0},
12247         {0x85, 0, 0},
12248         {0x86, 0x40, 0},
12249         {0x87, 0x40, 0},
12250         {0x88, 0x88, 0},
12251         {0x89, 0x10, 0},
12252         {0x8A, 0xf0, 0},
12253         {0x8B, 0x10, 0},
12254         {0x8C, 0xf0, 0},
12255         {0x8F, 0x10, 0},
12256         {0x90, 0x55, 0},
12257         {0x91, 0x3f, 1},
12258         {0x92, 0x36, 1},
12259         {0x93, 0, 0},
12260         {0x94, 0, 0},
12261         {0x95, 0, 0},
12262         {0x96, 0x87, 0},
12263         {0x97, 0x11, 0},
12264         {0x98, 0, 0},
12265         {0x99, 0x33, 0},
12266         {0x9A, 0x88, 0},
12267         {0xA1, 0x20, 1},
12268         {0xA2, 0x3f, 0},
12269         {0xA3, 0x44, 0},
12270         {0xA4, 0x8c, 0},
12271         {0xA5, 0x6c, 0},
12272         {0xA6, 0x22, 0},
12273         {0xA7, 0xbe, 0},
12274         {0xA8, 0x55, 0},
12275         {0xAA, 0xc, 0},
12276         {0xAB, 0xaa, 0},
12277         {0xAC, 0x2, 0},
12278         {0xAD, 0, 0},
12279         {0xAE, 0x10, 0},
12280         {0xAF, 0x1, 0},
12281         {0xB0, 0, 0},
12282         {0xB1, 0, 0},
12283         {0xB2, 0x80, 0},
12284         {0xB3, 0x60, 0},
12285         {0xB4, 0x44, 0},
12286         {0xB5, 0x55, 0},
12287         {0xB6, 0x1, 0},
12288         {0xB7, 0x55, 0},
12289         {0xB8, 0x1, 0},
12290         {0xB9, 0x5, 0},
12291         {0xBA, 0x55, 0},
12292         {0xBB, 0x55, 0},
12293         {0xC3, 0, 0},
12294         {0xC4, 0, 0},
12295         {0xC5, 0, 0},
12296         {0xC6, 0, 0},
12297         {0xC7, 0, 0},
12298         {0xC8, 0, 0},
12299         {0xC9, 0x1, 1},
12300         {0xCA, 0, 0},
12301         {0xCB, 0, 0},
12302         {0xCD, 0, 0},
12303         {0xCE, 0x5e, 0},
12304         {0xCF, 0xc, 0},
12305         {0xD0, 0xc, 0},
12306         {0xD1, 0xc, 0},
12307         {0xD2, 0, 0},
12308         {0xD3, 0x2b, 0},
12309         {0xD4, 0xc, 0},
12310         {0xD5, 0, 0},
12311         {0xD6, 0x70, 1},
12312         {0xDB, 0x7, 0},
12313         {0xDC, 0, 0},
12314         {0xDD, 0, 0},
12315         {0xDE, 0x88, 1},
12316         {0xDF, 0, 0},
12317         {0xE0, 0x1f, 0},
12318         {0xE1, 0x20, 1},
12319         {0xE2, 0x1, 0},
12320         {0xE3, 0x30, 0},
12321         {0xE4, 0x70, 0},
12322         {0xE5, 0, 0},
12323         {0xE6, 0, 0},
12324         {0xE7, 0x33, 0},
12325         {0xE8, 0xf, 1},
12326         {0xE9, 0xf, 1},
12327         {0xEA, 0, 0},
12328         {0xEB, 0x11, 0},
12329         {0x105, 0x3c, 0},
12330         {0x106, 0x1, 1},
12331         {0x107, 0xa, 0},
12332         {0x10A, 0, 0},
12333         {0x10B, 0x40, 0},
12334         {0x10C, 0x40, 0},
12335         {0x10D, 0x88, 0},
12336         {0x10E, 0x10, 0},
12337         {0x10F, 0xf0, 0},
12338         {0x110, 0x10, 0},
12339         {0x111, 0xf0, 0},
12340         {0x114, 0x10, 0},
12341         {0x115, 0x55, 0},
12342         {0x116, 0x3f, 1},
12343         {0x117, 0x36, 1},
12344         {0x118, 0, 0},
12345         {0x119, 0, 0},
12346         {0x11A, 0, 0},
12347         {0x11B, 0x87, 0},
12348         {0x11C, 0x11, 0},
12349         {0x11D, 0, 0},
12350         {0x11E, 0x33, 0},
12351         {0x11F, 0x88, 0},
12352         {0x126, 0x20, 1},
12353         {0x127, 0x3f, 0},
12354         {0x128, 0x44, 0},
12355         {0x129, 0x8c, 0},
12356         {0x12A, 0x6c, 0},
12357         {0x12B, 0x22, 0},
12358         {0x12C, 0xbe, 0},
12359         {0x12D, 0x55, 0},
12360         {0x12F, 0xc, 0},
12361         {0x130, 0xaa, 0},
12362         {0x131, 0x2, 0},
12363         {0x132, 0, 0},
12364         {0x133, 0x10, 0},
12365         {0x134, 0x1, 0},
12366         {0x135, 0, 0},
12367         {0x136, 0, 0},
12368         {0x137, 0x80, 0},
12369         {0x138, 0x60, 0},
12370         {0x139, 0x44, 0},
12371         {0x13A, 0x55, 0},
12372         {0x13B, 0x1, 0},
12373         {0x13C, 0x55, 0},
12374         {0x13D, 0x1, 0},
12375         {0x13E, 0x5, 0},
12376         {0x13F, 0x55, 0},
12377         {0x140, 0x55, 0},
12378         {0x148, 0, 0},
12379         {0x149, 0, 0},
12380         {0x14A, 0, 0},
12381         {0x14B, 0, 0},
12382         {0x14C, 0, 0},
12383         {0x14D, 0, 0},
12384         {0x14E, 0x1, 1},
12385         {0x14F, 0, 0},
12386         {0x150, 0, 0},
12387         {0x154, 0xc, 0},
12388         {0x155, 0xc, 0},
12389         {0x156, 0xc, 0},
12390         {0x157, 0, 0},
12391         {0x158, 0x2b, 0},
12392         {0x159, 0x84, 0},
12393         {0x15A, 0x15, 0},
12394         {0x15B, 0xf, 0},
12395         {0x15C, 0, 0},
12396         {0x15D, 0, 0},
12397         {0x15E, 0, 1},
12398         {0x15F, 0, 1},
12399         {0x160, 0, 1},
12400         {0x161, 0, 1},
12401         {0x162, 0, 1},
12402         {0x163, 0, 1},
12403         {0x164, 0, 0},
12404         {0x165, 0, 0},
12405         {0x166, 0, 0},
12406         {0x167, 0, 0},
12407         {0x168, 0, 0},
12408         {0x169, 0, 0},
12409         {0x16A, 0, 1},
12410         {0x16B, 0, 1},
12411         {0x16C, 0, 1},
12412         {0x16D, 0, 0},
12413         {0x170, 0, 0},
12414         {0x171, 0x77, 0},
12415         {0x172, 0x77, 0},
12416         {0x173, 0x77, 0},
12417         {0x174, 0x77, 0},
12418         {0x175, 0, 0},
12419         {0x176, 0x3, 0},
12420         {0x177, 0x37, 0},
12421         {0x178, 0x3, 0},
12422         {0x179, 0, 0},
12423         {0x17B, 0x21, 0},
12424         {0x17C, 0, 0},
12425         {0x17D, 0xaa, 0},
12426         {0x17E, 0, 0},
12427         {0x190, 0, 0},
12428         {0x191, 0x77, 0},
12429         {0x192, 0x77, 0},
12430         {0x193, 0x77, 0},
12431         {0x194, 0x77, 0},
12432         {0x195, 0, 0},
12433         {0x196, 0x3, 0},
12434         {0x197, 0x37, 0},
12435         {0x198, 0x3, 0},
12436         {0x199, 0, 0},
12437         {0x19B, 0x21, 0},
12438         {0x19C, 0, 0},
12439         {0x19D, 0xaa, 0},
12440         {0x19E, 0, 0},
12441         {0x1A1, 0x2, 0},
12442         {0x1A2, 0xf, 0},
12443         {0x1A3, 0xf, 0},
12444         {0x1A4, 0, 1},
12445         {0x1A5, 0, 1},
12446         {0x1A6, 0, 1},
12447         {0x1A7, 0x2, 0},
12448         {0x1A8, 0xf, 0},
12449         {0x1A9, 0xf, 0},
12450         {0x1AA, 0, 1},
12451         {0x1AB, 0, 1},
12452         {0x1AC, 0, 1},
12453         {0x1AD, 0x84, 0},
12454         {0x1AE, 0x60, 0},
12455         {0x1AF, 0x47, 0},
12456         {0x1B0, 0x47, 0},
12457         {0x1B1, 0, 0},
12458         {0x1B2, 0, 0},
12459         {0x1B3, 0, 0},
12460         {0x1B4, 0, 0},
12461         {0x1B5, 0, 0},
12462         {0x1B6, 0, 0},
12463         {0x1B7, 0xc, 1},
12464         {0x1B8, 0, 0},
12465         {0x1B9, 0, 0},
12466         {0x1BA, 0, 0},
12467         {0x1BB, 0, 0},
12468         {0x1BC, 0, 0},
12469         {0x1BD, 0, 0},
12470         {0x1BE, 0, 0},
12471         {0x1BF, 0, 0},
12472         {0x1C0, 0, 0},
12473         {0x1C1, 0x1, 1},
12474         {0x1C2, 0x80, 1},
12475         {0x1C3, 0, 0},
12476         {0x1C4, 0, 0},
12477         {0x1C5, 0, 0},
12478         {0x1C6, 0, 0},
12479         {0x1C7, 0, 0},
12480         {0x1C8, 0, 0},
12481         {0x1C9, 0, 0},
12482         {0x1CA, 0, 0},
12483         {0xFFFF, 0, 0}
12484 };
12485
12486 static struct radio_20xx_regs regs_2057_rev7[] = {
12487         {0x00, 0, 1},
12488         {0x01, 0x57, 1},
12489         {0x02, 0x20, 1},
12490         {0x03, 0x1f, 0},
12491         {0x04, 0x4, 0},
12492         {0x05, 0x2, 0},
12493         {0x06, 0x1, 0},
12494         {0x07, 0x1, 0},
12495         {0x08, 0x1, 0},
12496         {0x09, 0x69, 0},
12497         {0x0A, 0x66, 0},
12498         {0x0B, 0x6, 0},
12499         {0x0C, 0x18, 0},
12500         {0x0D, 0x3, 0},
12501         {0x0E, 0x20, 0},
12502         {0x0F, 0x20, 0},
12503         {0x10, 0, 0},
12504         {0x11, 0x7c, 0},
12505         {0x12, 0x42, 0},
12506         {0x13, 0xbd, 0},
12507         {0x14, 0x7, 0},
12508         {0x15, 0x87, 0},
12509         {0x16, 0x8, 0},
12510         {0x17, 0x17, 0},
12511         {0x18, 0x7, 0},
12512         {0x19, 0, 0},
12513         {0x1A, 0x2, 0},
12514         {0x1B, 0x13, 0},
12515         {0x1C, 0x3e, 0},
12516         {0x1D, 0x3e, 0},
12517         {0x1E, 0x96, 0},
12518         {0x1F, 0x4, 0},
12519         {0x20, 0, 0},
12520         {0x21, 0, 0},
12521         {0x22, 0x17, 0},
12522         {0x23, 0x6, 0},
12523         {0x24, 0x1, 0},
12524         {0x25, 0x6, 0},
12525         {0x26, 0x4, 0},
12526         {0x27, 0xd, 0},
12527         {0x28, 0xd, 0},
12528         {0x29, 0x30, 0},
12529         {0x2A, 0x32, 0},
12530         {0x2B, 0x8, 0},
12531         {0x2C, 0x1c, 0},
12532         {0x2D, 0x2, 0},
12533         {0x2E, 0x4, 0},
12534         {0x2F, 0x7f, 0},
12535         {0x30, 0x27, 0},
12536         {0x31, 0, 1},
12537         {0x32, 0, 1},
12538         {0x33, 0, 1},
12539         {0x34, 0, 0},
12540         {0x35, 0x20, 0},
12541         {0x36, 0x18, 0},
12542         {0x37, 0x7, 0},
12543         {0x38, 0x66, 0},
12544         {0x39, 0x66, 0},
12545         {0x3A, 0x66, 0},
12546         {0x3B, 0x66, 0},
12547         {0x3C, 0xff, 0},
12548         {0x3D, 0xff, 0},
12549         {0x3E, 0xff, 0},
12550         {0x3F, 0xff, 0},
12551         {0x40, 0x16, 0},
12552         {0x41, 0x7, 0},
12553         {0x42, 0x19, 0},
12554         {0x43, 0x7, 0},
12555         {0x44, 0x6, 0},
12556         {0x45, 0x3, 0},
12557         {0x46, 0x1, 0},
12558         {0x47, 0x7, 0},
12559         {0x48, 0x33, 0},
12560         {0x49, 0x5, 0},
12561         {0x4A, 0x77, 0},
12562         {0x4B, 0x66, 0},
12563         {0x4C, 0x66, 0},
12564         {0x4D, 0, 0},
12565         {0x4E, 0x4, 0},
12566         {0x4F, 0xc, 0},
12567         {0x50, 0, 0},
12568         {0x51, 0x70, 1},
12569         {0x56, 0x7, 0},
12570         {0x57, 0, 0},
12571         {0x58, 0, 0},
12572         {0x59, 0x88, 1},
12573         {0x5A, 0, 0},
12574         {0x5B, 0x1f, 0},
12575         {0x5C, 0x20, 1},
12576         {0x5D, 0x1, 0},
12577         {0x5E, 0x30, 0},
12578         {0x5F, 0x70, 0},
12579         {0x60, 0, 0},
12580         {0x61, 0, 0},
12581         {0x62, 0x33, 1},
12582         {0x63, 0xf, 1},
12583         {0x64, 0x13, 1},
12584         {0x65, 0, 0},
12585         {0x66, 0xee, 1},
12586         {0x69, 0, 0},
12587         {0x6A, 0x7e, 0},
12588         {0x6B, 0x3f, 0},
12589         {0x6C, 0x7f, 0},
12590         {0x6D, 0x78, 0},
12591         {0x6E, 0x58, 1},
12592         {0x6F, 0x88, 0},
12593         {0x70, 0x8, 0},
12594         {0x71, 0xf, 0},
12595         {0x72, 0xbc, 0},
12596         {0x73, 0x8, 0},
12597         {0x74, 0x60, 0},
12598         {0x75, 0x13, 1},
12599         {0x76, 0x70, 0},
12600         {0x77, 0, 0},
12601         {0x78, 0, 0},
12602         {0x79, 0, 0},
12603         {0x7A, 0x33, 0},
12604         {0x7B, 0x13, 1},
12605         {0x7C, 0x14, 1},
12606         {0x7D, 0xee, 1},
12607         {0x80, 0x3c, 0},
12608         {0x81, 0x1, 1},
12609         {0x82, 0xa, 0},
12610         {0x83, 0x9d, 0},
12611         {0x84, 0xa, 0},
12612         {0x85, 0, 0},
12613         {0x86, 0x40, 0},
12614         {0x87, 0x40, 0},
12615         {0x88, 0x88, 0},
12616         {0x89, 0x10, 0},
12617         {0x8A, 0xf0, 0},
12618         {0x8B, 0x10, 0},
12619         {0x8C, 0xf0, 0},
12620         {0x8D, 0, 0},
12621         {0x8E, 0, 0},
12622         {0x8F, 0x10, 0},
12623         {0x90, 0x55, 0},
12624         {0x91, 0x3f, 1},
12625         {0x92, 0x36, 1},
12626         {0x93, 0, 0},
12627         {0x94, 0, 0},
12628         {0x95, 0, 0},
12629         {0x96, 0x87, 0},
12630         {0x97, 0x11, 0},
12631         {0x98, 0, 0},
12632         {0x99, 0x33, 0},
12633         {0x9A, 0x88, 0},
12634         {0x9B, 0, 0},
12635         {0x9C, 0x87, 0},
12636         {0x9D, 0x11, 0},
12637         {0x9E, 0, 0},
12638         {0x9F, 0x33, 0},
12639         {0xA0, 0x88, 0},
12640         {0xA1, 0x20, 1},
12641         {0xA2, 0x3f, 0},
12642         {0xA3, 0x44, 0},
12643         {0xA4, 0x8c, 0},
12644         {0xA5, 0x6c, 0},
12645         {0xA6, 0x22, 0},
12646         {0xA7, 0xbe, 0},
12647         {0xA8, 0x55, 0},
12648         {0xAA, 0xc, 0},
12649         {0xAB, 0xaa, 0},
12650         {0xAC, 0x2, 0},
12651         {0xAD, 0, 0},
12652         {0xAE, 0x10, 0},
12653         {0xAF, 0x1, 0},
12654         {0xB0, 0, 0},
12655         {0xB1, 0, 0},
12656         {0xB2, 0x80, 0},
12657         {0xB3, 0x60, 0},
12658         {0xB4, 0x44, 0},
12659         {0xB5, 0x55, 0},
12660         {0xB6, 0x1, 0},
12661         {0xB7, 0x55, 0},
12662         {0xB8, 0x1, 0},
12663         {0xB9, 0x5, 0},
12664         {0xBA, 0x55, 0},
12665         {0xBB, 0x55, 0},
12666         {0xC1, 0, 0},
12667         {0xC2, 0, 0},
12668         {0xC3, 0, 0},
12669         {0xC4, 0, 0},
12670         {0xC5, 0, 0},
12671         {0xC6, 0, 0},
12672         {0xC7, 0, 0},
12673         {0xC8, 0, 0},
12674         {0xC9, 0, 0},
12675         {0xCA, 0, 0},
12676         {0xCB, 0, 0},
12677         {0xCC, 0, 0},
12678         {0xCD, 0, 0},
12679         {0xCE, 0x5e, 0},
12680         {0xCF, 0xc, 0},
12681         {0xD0, 0xc, 0},
12682         {0xD1, 0xc, 0},
12683         {0xD2, 0, 0},
12684         {0xD3, 0x2b, 0},
12685         {0xD4, 0xc, 0},
12686         {0xD5, 0, 0},
12687         {0xD6, 0x70, 1},
12688         {0xDB, 0x7, 0},
12689         {0xDC, 0, 0},
12690         {0xDD, 0, 0},
12691         {0xDE, 0x88, 1},
12692         {0xDF, 0, 0},
12693         {0xE0, 0x1f, 0},
12694         {0xE1, 0x20, 1},
12695         {0xE2, 0x1, 0},
12696         {0xE3, 0x30, 0},
12697         {0xE4, 0x70, 0},
12698         {0xE5, 0, 0},
12699         {0xE6, 0, 0},
12700         {0xE7, 0x33, 0},
12701         {0xE8, 0xf, 1},
12702         {0xE9, 0x13, 1},
12703         {0xEA, 0, 0},
12704         {0xEB, 0xee, 1},
12705         {0xEE, 0, 0},
12706         {0xEF, 0x7e, 0},
12707         {0xF0, 0x3f, 0},
12708         {0xF1, 0x7f, 0},
12709         {0xF2, 0x78, 0},
12710         {0xF3, 0x58, 1},
12711         {0xF4, 0x88, 0},
12712         {0xF5, 0x8, 0},
12713         {0xF6, 0xf, 0},
12714         {0xF7, 0xbc, 0},
12715         {0xF8, 0x8, 0},
12716         {0xF9, 0x60, 0},
12717         {0xFA, 0x13, 1},
12718         {0xFB, 0x70, 0},
12719         {0xFC, 0, 0},
12720         {0xFD, 0, 0},
12721         {0xFE, 0, 0},
12722         {0xFF, 0x33, 0},
12723         {0x100, 0x13, 1},
12724         {0x101, 0x14, 1},
12725         {0x102, 0xee, 1},
12726         {0x105, 0x3c, 0},
12727         {0x106, 0x1, 1},
12728         {0x107, 0xa, 0},
12729         {0x108, 0x9d, 0},
12730         {0x109, 0xa, 0},
12731         {0x10A, 0, 0},
12732         {0x10B, 0x40, 0},
12733         {0x10C, 0x40, 0},
12734         {0x10D, 0x88, 0},
12735         {0x10E, 0x10, 0},
12736         {0x10F, 0xf0, 0},
12737         {0x110, 0x10, 0},
12738         {0x111, 0xf0, 0},
12739         {0x112, 0, 0},
12740         {0x113, 0, 0},
12741         {0x114, 0x10, 0},
12742         {0x115, 0x55, 0},
12743         {0x116, 0x3f, 1},
12744         {0x117, 0x36, 1},
12745         {0x118, 0, 0},
12746         {0x119, 0, 0},
12747         {0x11A, 0, 0},
12748         {0x11B, 0x87, 0},
12749         {0x11C, 0x11, 0},
12750         {0x11D, 0, 0},
12751         {0x11E, 0x33, 0},
12752         {0x11F, 0x88, 0},
12753         {0x120, 0, 0},
12754         {0x121, 0x87, 0},
12755         {0x122, 0x11, 0},
12756         {0x123, 0, 0},
12757         {0x124, 0x33, 0},
12758         {0x125, 0x88, 0},
12759         {0x126, 0x20, 1},
12760         {0x127, 0x3f, 0},
12761         {0x128, 0x44, 0},
12762         {0x129, 0x8c, 0},
12763         {0x12A, 0x6c, 0},
12764         {0x12B, 0x22, 0},
12765         {0x12C, 0xbe, 0},
12766         {0x12D, 0x55, 0},
12767         {0x12F, 0xc, 0},
12768         {0x130, 0xaa, 0},
12769         {0x131, 0x2, 0},
12770         {0x132, 0, 0},
12771         {0x133, 0x10, 0},
12772         {0x134, 0x1, 0},
12773         {0x135, 0, 0},
12774         {0x136, 0, 0},
12775         {0x137, 0x80, 0},
12776         {0x138, 0x60, 0},
12777         {0x139, 0x44, 0},
12778         {0x13A, 0x55, 0},
12779         {0x13B, 0x1, 0},
12780         {0x13C, 0x55, 0},
12781         {0x13D, 0x1, 0},
12782         {0x13E, 0x5, 0},
12783         {0x13F, 0x55, 0},
12784         {0x140, 0x55, 0},
12785         {0x146, 0, 0},
12786         {0x147, 0, 0},
12787         {0x148, 0, 0},
12788         {0x149, 0, 0},
12789         {0x14A, 0, 0},
12790         {0x14B, 0, 0},
12791         {0x14C, 0, 0},
12792         {0x14D, 0, 0},
12793         {0x14E, 0, 0},
12794         {0x14F, 0, 0},
12795         {0x150, 0, 0},
12796         {0x151, 0, 0},
12797         {0x154, 0xc, 0},
12798         {0x155, 0xc, 0},
12799         {0x156, 0xc, 0},
12800         {0x157, 0, 0},
12801         {0x158, 0x2b, 0},
12802         {0x159, 0x84, 0},
12803         {0x15A, 0x15, 0},
12804         {0x15B, 0xf, 0},
12805         {0x15C, 0, 0},
12806         {0x15D, 0, 0},
12807         {0x15E, 0, 1},
12808         {0x15F, 0, 1},
12809         {0x160, 0, 1},
12810         {0x161, 0, 1},
12811         {0x162, 0, 1},
12812         {0x163, 0, 1},
12813         {0x164, 0, 0},
12814         {0x165, 0, 0},
12815         {0x166, 0, 0},
12816         {0x167, 0, 0},
12817         {0x168, 0, 0},
12818         {0x169, 0, 0},
12819         {0x16A, 0, 1},
12820         {0x16B, 0, 1},
12821         {0x16C, 0, 1},
12822         {0x16D, 0, 0},
12823         {0x170, 0, 0},
12824         {0x171, 0x77, 0},
12825         {0x172, 0x77, 0},
12826         {0x173, 0x77, 0},
12827         {0x174, 0x77, 0},
12828         {0x175, 0, 0},
12829         {0x176, 0x3, 0},
12830         {0x177, 0x37, 0},
12831         {0x178, 0x3, 0},
12832         {0x179, 0, 0},
12833         {0x17A, 0x21, 0},
12834         {0x17B, 0x21, 0},
12835         {0x17C, 0, 0},
12836         {0x17D, 0xaa, 0},
12837         {0x17E, 0, 0},
12838         {0x17F, 0xaa, 0},
12839         {0x180, 0, 0},
12840         {0x190, 0, 0},
12841         {0x191, 0x77, 0},
12842         {0x192, 0x77, 0},
12843         {0x193, 0x77, 0},
12844         {0x194, 0x77, 0},
12845         {0x195, 0, 0},
12846         {0x196, 0x3, 0},
12847         {0x197, 0x37, 0},
12848         {0x198, 0x3, 0},
12849         {0x199, 0, 0},
12850         {0x19A, 0x21, 0},
12851         {0x19B, 0x21, 0},
12852         {0x19C, 0, 0},
12853         {0x19D, 0xaa, 0},
12854         {0x19E, 0, 0},
12855         {0x19F, 0xaa, 0},
12856         {0x1A0, 0, 0},
12857         {0x1A1, 0x2, 0},
12858         {0x1A2, 0xf, 0},
12859         {0x1A3, 0xf, 0},
12860         {0x1A4, 0, 1},
12861         {0x1A5, 0, 1},
12862         {0x1A6, 0, 1},
12863         {0x1A7, 0x2, 0},
12864         {0x1A8, 0xf, 0},
12865         {0x1A9, 0xf, 0},
12866         {0x1AA, 0, 1},
12867         {0x1AB, 0, 1},
12868         {0x1AC, 0, 1},
12869         {0x1AD, 0x84, 0},
12870         {0x1AE, 0x60, 0},
12871         {0x1AF, 0x47, 0},
12872         {0x1B0, 0x47, 0},
12873         {0x1B1, 0, 0},
12874         {0x1B2, 0, 0},
12875         {0x1B3, 0, 0},
12876         {0x1B4, 0, 0},
12877         {0x1B5, 0, 0},
12878         {0x1B6, 0, 0},
12879         {0x1B7, 0x5, 1},
12880         {0x1B8, 0, 0},
12881         {0x1B9, 0, 0},
12882         {0x1BA, 0, 0},
12883         {0x1BB, 0, 0},
12884         {0x1BC, 0, 0},
12885         {0x1BD, 0, 0},
12886         {0x1BE, 0, 0},
12887         {0x1BF, 0, 0},
12888         {0x1C0, 0, 0},
12889         {0x1C1, 0, 0},
12890         {0x1C2, 0xa0, 1},
12891         {0x1C3, 0, 0},
12892         {0x1C4, 0, 0},
12893         {0x1C5, 0, 0},
12894         {0x1C6, 0, 0},
12895         {0x1C7, 0, 0},
12896         {0x1C8, 0, 0},
12897         {0x1C9, 0, 0},
12898         {0x1CA, 0, 0},
12899         {0xFFFF, 0, 0}
12900 };
12901
12902 static struct radio_20xx_regs regs_2057_rev8[] = {
12903         {0x00, 0x8, 1},
12904         {0x01, 0x57, 1},
12905         {0x02, 0x20, 1},
12906         {0x03, 0x1f, 0},
12907         {0x04, 0x4, 0},
12908         {0x05, 0x2, 0},
12909         {0x06, 0x1, 0},
12910         {0x07, 0x1, 0},
12911         {0x08, 0x1, 0},
12912         {0x09, 0x69, 0},
12913         {0x0A, 0x66, 0},
12914         {0x0B, 0x6, 0},
12915         {0x0C, 0x18, 0},
12916         {0x0D, 0x3, 0},
12917         {0x0E, 0x20, 0},
12918         {0x0F, 0x20, 0},
12919         {0x10, 0, 0},
12920         {0x11, 0x7c, 0},
12921         {0x12, 0x42, 0},
12922         {0x13, 0xbd, 0},
12923         {0x14, 0x7, 0},
12924         {0x15, 0x87, 0},
12925         {0x16, 0x8, 0},
12926         {0x17, 0x17, 0},
12927         {0x18, 0x7, 0},
12928         {0x19, 0, 0},
12929         {0x1A, 0x2, 0},
12930         {0x1B, 0x13, 0},
12931         {0x1C, 0x3e, 0},
12932         {0x1D, 0x3e, 0},
12933         {0x1E, 0x96, 0},
12934         {0x1F, 0x4, 0},
12935         {0x20, 0, 0},
12936         {0x21, 0, 0},
12937         {0x22, 0x17, 0},
12938         {0x23, 0x6, 0},
12939         {0x24, 0x1, 0},
12940         {0x25, 0x6, 0},
12941         {0x26, 0x4, 0},
12942         {0x27, 0xd, 0},
12943         {0x28, 0xd, 0},
12944         {0x29, 0x30, 0},
12945         {0x2A, 0x32, 0},
12946         {0x2B, 0x8, 0},
12947         {0x2C, 0x1c, 0},
12948         {0x2D, 0x2, 0},
12949         {0x2E, 0x4, 0},
12950         {0x2F, 0x7f, 0},
12951         {0x30, 0x27, 0},
12952         {0x31, 0, 1},
12953         {0x32, 0, 1},
12954         {0x33, 0, 1},
12955         {0x34, 0, 0},
12956         {0x35, 0x20, 0},
12957         {0x36, 0x18, 0},
12958         {0x37, 0x7, 0},
12959         {0x38, 0x66, 0},
12960         {0x39, 0x66, 0},
12961         {0x3A, 0x66, 0},
12962         {0x3B, 0x66, 0},
12963         {0x3C, 0xff, 0},
12964         {0x3D, 0xff, 0},
12965         {0x3E, 0xff, 0},
12966         {0x3F, 0xff, 0},
12967         {0x40, 0x16, 0},
12968         {0x41, 0x7, 0},
12969         {0x42, 0x19, 0},
12970         {0x43, 0x7, 0},
12971         {0x44, 0x6, 0},
12972         {0x45, 0x3, 0},
12973         {0x46, 0x1, 0},
12974         {0x47, 0x7, 0},
12975         {0x48, 0x33, 0},
12976         {0x49, 0x5, 0},
12977         {0x4A, 0x77, 0},
12978         {0x4B, 0x66, 0},
12979         {0x4C, 0x66, 0},
12980         {0x4D, 0, 0},
12981         {0x4E, 0x4, 0},
12982         {0x4F, 0xc, 0},
12983         {0x50, 0, 0},
12984         {0x51, 0x70, 1},
12985         {0x56, 0x7, 0},
12986         {0x57, 0, 0},
12987         {0x58, 0, 0},
12988         {0x59, 0x88, 1},
12989         {0x5A, 0, 0},
12990         {0x5B, 0x1f, 0},
12991         {0x5C, 0x20, 1},
12992         {0x5D, 0x1, 0},
12993         {0x5E, 0x30, 0},
12994         {0x5F, 0x70, 0},
12995         {0x60, 0, 0},
12996         {0x61, 0, 0},
12997         {0x62, 0x33, 1},
12998         {0x63, 0xf, 1},
12999         {0x64, 0xf, 1},
13000         {0x65, 0, 0},
13001         {0x66, 0x11, 0},
13002         {0x69, 0, 0},
13003         {0x6A, 0x7e, 0},
13004         {0x6B, 0x3f, 0},
13005         {0x6C, 0x7f, 0},
13006         {0x6D, 0x78, 0},
13007         {0x6E, 0x58, 1},
13008         {0x6F, 0x88, 0},
13009         {0x70, 0x8, 0},
13010         {0x71, 0xf, 0},
13011         {0x72, 0xbc, 0},
13012         {0x73, 0x8, 0},
13013         {0x74, 0x60, 0},
13014         {0x75, 0x13, 1},
13015         {0x76, 0x70, 0},
13016         {0x77, 0, 0},
13017         {0x78, 0, 0},
13018         {0x79, 0, 0},
13019         {0x7A, 0x33, 0},
13020         {0x7B, 0x13, 1},
13021         {0x7C, 0xf, 1},
13022         {0x7D, 0xee, 1},
13023         {0x80, 0x3c, 0},
13024         {0x81, 0x1, 1},
13025         {0x82, 0xa, 0},
13026         {0x83, 0x9d, 0},
13027         {0x84, 0xa, 0},
13028         {0x85, 0, 0},
13029         {0x86, 0x40, 0},
13030         {0x87, 0x40, 0},
13031         {0x88, 0x88, 0},
13032         {0x89, 0x10, 0},
13033         {0x8A, 0xf0, 0},
13034         {0x8B, 0x10, 0},
13035         {0x8C, 0xf0, 0},
13036         {0x8D, 0, 0},
13037         {0x8E, 0, 0},
13038         {0x8F, 0x10, 0},
13039         {0x90, 0x55, 0},
13040         {0x91, 0x3f, 1},
13041         {0x92, 0x36, 1},
13042         {0x93, 0, 0},
13043         {0x94, 0, 0},
13044         {0x95, 0, 0},
13045         {0x96, 0x87, 0},
13046         {0x97, 0x11, 0},
13047         {0x98, 0, 0},
13048         {0x99, 0x33, 0},
13049         {0x9A, 0x88, 0},
13050         {0x9B, 0, 0},
13051         {0x9C, 0x87, 0},
13052         {0x9D, 0x11, 0},
13053         {0x9E, 0, 0},
13054         {0x9F, 0x33, 0},
13055         {0xA0, 0x88, 0},
13056         {0xA1, 0x20, 1},
13057         {0xA2, 0x3f, 0},
13058         {0xA3, 0x44, 0},
13059         {0xA4, 0x8c, 0},
13060         {0xA5, 0x6c, 0},
13061         {0xA6, 0x22, 0},
13062         {0xA7, 0xbe, 0},
13063         {0xA8, 0x55, 0},
13064         {0xAA, 0xc, 0},
13065         {0xAB, 0xaa, 0},
13066         {0xAC, 0x2, 0},
13067         {0xAD, 0, 0},
13068         {0xAE, 0x10, 0},
13069         {0xAF, 0x1, 0},
13070         {0xB0, 0, 0},
13071         {0xB1, 0, 0},
13072         {0xB2, 0x80, 0},
13073         {0xB3, 0x60, 0},
13074         {0xB4, 0x44, 0},
13075         {0xB5, 0x55, 0},
13076         {0xB6, 0x1, 0},
13077         {0xB7, 0x55, 0},
13078         {0xB8, 0x1, 0},
13079         {0xB9, 0x5, 0},
13080         {0xBA, 0x55, 0},
13081         {0xBB, 0x55, 0},
13082         {0xC1, 0, 0},
13083         {0xC2, 0, 0},
13084         {0xC3, 0, 0},
13085         {0xC4, 0, 0},
13086         {0xC5, 0, 0},
13087         {0xC6, 0, 0},
13088         {0xC7, 0, 0},
13089         {0xC8, 0, 0},
13090         {0xC9, 0x1, 1},
13091         {0xCA, 0, 0},
13092         {0xCB, 0, 0},
13093         {0xCC, 0, 0},
13094         {0xCD, 0, 0},
13095         {0xCE, 0x5e, 0},
13096         {0xCF, 0xc, 0},
13097         {0xD0, 0xc, 0},
13098         {0xD1, 0xc, 0},
13099         {0xD2, 0, 0},
13100         {0xD3, 0x2b, 0},
13101         {0xD4, 0xc, 0},
13102         {0xD5, 0, 0},
13103         {0xD6, 0x70, 1},
13104         {0xDB, 0x7, 0},
13105         {0xDC, 0, 0},
13106         {0xDD, 0, 0},
13107         {0xDE, 0x88, 1},
13108         {0xDF, 0, 0},
13109         {0xE0, 0x1f, 0},
13110         {0xE1, 0x20, 1},
13111         {0xE2, 0x1, 0},
13112         {0xE3, 0x30, 0},
13113         {0xE4, 0x70, 0},
13114         {0xE5, 0, 0},
13115         {0xE6, 0, 0},
13116         {0xE7, 0x33, 0},
13117         {0xE8, 0xf, 1},
13118         {0xE9, 0xf, 1},
13119         {0xEA, 0, 0},
13120         {0xEB, 0x11, 0},
13121         {0xEE, 0, 0},
13122         {0xEF, 0x7e, 0},
13123         {0xF0, 0x3f, 0},
13124         {0xF1, 0x7f, 0},
13125         {0xF2, 0x78, 0},
13126         {0xF3, 0x58, 1},
13127         {0xF4, 0x88, 0},
13128         {0xF5, 0x8, 0},
13129         {0xF6, 0xf, 0},
13130         {0xF7, 0xbc, 0},
13131         {0xF8, 0x8, 0},
13132         {0xF9, 0x60, 0},
13133         {0xFA, 0x13, 1},
13134         {0xFB, 0x70, 0},
13135         {0xFC, 0, 0},
13136         {0xFD, 0, 0},
13137         {0xFE, 0, 0},
13138         {0xFF, 0x33, 0},
13139         {0x100, 0x13, 1},
13140         {0x101, 0xf, 1},
13141         {0x102, 0xee, 1},
13142         {0x105, 0x3c, 0},
13143         {0x106, 0x1, 1},
13144         {0x107, 0xa, 0},
13145         {0x108, 0x9d, 0},
13146         {0x109, 0xa, 0},
13147         {0x10A, 0, 0},
13148         {0x10B, 0x40, 0},
13149         {0x10C, 0x40, 0},
13150         {0x10D, 0x88, 0},
13151         {0x10E, 0x10, 0},
13152         {0x10F, 0xf0, 0},
13153         {0x110, 0x10, 0},
13154         {0x111, 0xf0, 0},
13155         {0x112, 0, 0},
13156         {0x113, 0, 0},
13157         {0x114, 0x10, 0},
13158         {0x115, 0x55, 0},
13159         {0x116, 0x3f, 1},
13160         {0x117, 0x36, 1},
13161         {0x118, 0, 0},
13162         {0x119, 0, 0},
13163         {0x11A, 0, 0},
13164         {0x11B, 0x87, 0},
13165         {0x11C, 0x11, 0},
13166         {0x11D, 0, 0},
13167         {0x11E, 0x33, 0},
13168         {0x11F, 0x88, 0},
13169         {0x120, 0, 0},
13170         {0x121, 0x87, 0},
13171         {0x122, 0x11, 0},
13172         {0x123, 0, 0},
13173         {0x124, 0x33, 0},
13174         {0x125, 0x88, 0},
13175         {0x126, 0x20, 1},
13176         {0x127, 0x3f, 0},
13177         {0x128, 0x44, 0},
13178         {0x129, 0x8c, 0},
13179         {0x12A, 0x6c, 0},
13180         {0x12B, 0x22, 0},
13181         {0x12C, 0xbe, 0},
13182         {0x12D, 0x55, 0},
13183         {0x12F, 0xc, 0},
13184         {0x130, 0xaa, 0},
13185         {0x131, 0x2, 0},
13186         {0x132, 0, 0},
13187         {0x133, 0x10, 0},
13188         {0x134, 0x1, 0},
13189         {0x135, 0, 0},
13190         {0x136, 0, 0},
13191         {0x137, 0x80, 0},
13192         {0x138, 0x60, 0},
13193         {0x139, 0x44, 0},
13194         {0x13A, 0x55, 0},
13195         {0x13B, 0x1, 0},
13196         {0x13C, 0x55, 0},
13197         {0x13D, 0x1, 0},
13198         {0x13E, 0x5, 0},
13199         {0x13F, 0x55, 0},
13200         {0x140, 0x55, 0},
13201         {0x146, 0, 0},
13202         {0x147, 0, 0},
13203         {0x148, 0, 0},
13204         {0x149, 0, 0},
13205         {0x14A, 0, 0},
13206         {0x14B, 0, 0},
13207         {0x14C, 0, 0},
13208         {0x14D, 0, 0},
13209         {0x14E, 0x1, 1},
13210         {0x14F, 0, 0},
13211         {0x150, 0, 0},
13212         {0x151, 0, 0},
13213         {0x154, 0xc, 0},
13214         {0x155, 0xc, 0},
13215         {0x156, 0xc, 0},
13216         {0x157, 0, 0},
13217         {0x158, 0x2b, 0},
13218         {0x159, 0x84, 0},
13219         {0x15A, 0x15, 0},
13220         {0x15B, 0xf, 0},
13221         {0x15C, 0, 0},
13222         {0x15D, 0, 0},
13223         {0x15E, 0, 1},
13224         {0x15F, 0, 1},
13225         {0x160, 0, 1},
13226         {0x161, 0, 1},
13227         {0x162, 0, 1},
13228         {0x163, 0, 1},
13229         {0x164, 0, 0},
13230         {0x165, 0, 0},
13231         {0x166, 0, 0},
13232         {0x167, 0, 0},
13233         {0x168, 0, 0},
13234         {0x169, 0, 0},
13235         {0x16A, 0, 1},
13236         {0x16B, 0, 1},
13237         {0x16C, 0, 1},
13238         {0x16D, 0, 0},
13239         {0x170, 0, 0},
13240         {0x171, 0x77, 0},
13241         {0x172, 0x77, 0},
13242         {0x173, 0x77, 0},
13243         {0x174, 0x77, 0},
13244         {0x175, 0, 0},
13245         {0x176, 0x3, 0},
13246         {0x177, 0x37, 0},
13247         {0x178, 0x3, 0},
13248         {0x179, 0, 0},
13249         {0x17A, 0x21, 0},
13250         {0x17B, 0x21, 0},
13251         {0x17C, 0, 0},
13252         {0x17D, 0xaa, 0},
13253         {0x17E, 0, 0},
13254         {0x17F, 0xaa, 0},
13255         {0x180, 0, 0},
13256         {0x190, 0, 0},
13257         {0x191, 0x77, 0},
13258         {0x192, 0x77, 0},
13259         {0x193, 0x77, 0},
13260         {0x194, 0x77, 0},
13261         {0x195, 0, 0},
13262         {0x196, 0x3, 0},
13263         {0x197, 0x37, 0},
13264         {0x198, 0x3, 0},
13265         {0x199, 0, 0},
13266         {0x19A, 0x21, 0},
13267         {0x19B, 0x21, 0},
13268         {0x19C, 0, 0},
13269         {0x19D, 0xaa, 0},
13270         {0x19E, 0, 0},
13271         {0x19F, 0xaa, 0},
13272         {0x1A0, 0, 0},
13273         {0x1A1, 0x2, 0},
13274         {0x1A2, 0xf, 0},
13275         {0x1A3, 0xf, 0},
13276         {0x1A4, 0, 1},
13277         {0x1A5, 0, 1},
13278         {0x1A6, 0, 1},
13279         {0x1A7, 0x2, 0},
13280         {0x1A8, 0xf, 0},
13281         {0x1A9, 0xf, 0},
13282         {0x1AA, 0, 1},
13283         {0x1AB, 0, 1},
13284         {0x1AC, 0, 1},
13285         {0x1AD, 0x84, 0},
13286         {0x1AE, 0x60, 0},
13287         {0x1AF, 0x47, 0},
13288         {0x1B0, 0x47, 0},
13289         {0x1B1, 0, 0},
13290         {0x1B2, 0, 0},
13291         {0x1B3, 0, 0},
13292         {0x1B4, 0, 0},
13293         {0x1B5, 0, 0},
13294         {0x1B6, 0, 0},
13295         {0x1B7, 0x5, 1},
13296         {0x1B8, 0, 0},
13297         {0x1B9, 0, 0},
13298         {0x1BA, 0, 0},
13299         {0x1BB, 0, 0},
13300         {0x1BC, 0, 0},
13301         {0x1BD, 0, 0},
13302         {0x1BE, 0, 0},
13303         {0x1BF, 0, 0},
13304         {0x1C0, 0, 0},
13305         {0x1C1, 0, 0},
13306         {0x1C2, 0xa0, 1},
13307         {0x1C3, 0, 0},
13308         {0x1C4, 0, 0},
13309         {0x1C5, 0, 0},
13310         {0x1C6, 0, 0},
13311         {0x1C7, 0, 0},
13312         {0x1C8, 0, 0},
13313         {0x1C9, 0, 0},
13314         {0x1CA, 0, 0},
13315         {0xFFFF, 0, 0}
13316 };
13317
13318 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13319
13320 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13321 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13322
13323 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13324         {
13325                 {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13326                 {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13327                 {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13328                 {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13329                 {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13330                 {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13331                 {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13332                 {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13333                 {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13334         },
13335         {
13336                 {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13337                 {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13338                 {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13339                 {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13340                 {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13341                 {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13342                 {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13343                 {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13344                 {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13345         }
13346 };
13347
13348 static const u32 nphy_tpc_txgain[] = {
13349         0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13350         0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13351         0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13352         0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13353         0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13354         0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13355         0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13356         0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13357         0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13358         0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13359         0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13360         0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13361         0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13362         0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13363         0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13364         0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13365         0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13366         0x03902942, 0x03902844, 0x03902842, 0x03902744,
13367         0x03902742, 0x03902644, 0x03902642, 0x03902544,
13368         0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13369         0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13370         0x03802842, 0x03802744, 0x03802742, 0x03802644,
13371         0x03802642, 0x03802544, 0x03802542, 0x03802444,
13372         0x03802442, 0x03802344, 0x03802342, 0x03802244,
13373         0x03802242, 0x03802144, 0x03802142, 0x03802044,
13374         0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13375         0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13376         0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13377         0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13378         0x03801842, 0x03801744, 0x03801742, 0x03801644,
13379         0x03801642, 0x03801544, 0x03801542, 0x03801444,
13380         0x03801442, 0x03801344, 0x03801342, 0x00002b00
13381 };
13382
13383 static const u16 nphy_tpc_loscale[] = {
13384         256, 256, 271, 271, 287, 256, 256, 271,
13385         271, 287, 287, 304, 304, 256, 256, 271,
13386         271, 287, 287, 304, 304, 322, 322, 341,
13387         341, 362, 362, 383, 383, 256, 256, 271,
13388         271, 287, 287, 304, 304, 322, 322, 256,
13389         256, 271, 271, 287, 287, 304, 304, 322,
13390         322, 341, 341, 362, 362, 256, 256, 271,
13391         271, 287, 287, 304, 304, 322, 322, 256,
13392         256, 271, 271, 287, 287, 304, 304, 322,
13393         322, 341, 341, 362, 362, 256, 256, 271,
13394         271, 287, 287, 304, 304, 322, 322, 341,
13395         341, 362, 362, 383, 383, 406, 406, 430,
13396         430, 455, 455, 482, 482, 511, 511, 541,
13397         541, 573, 573, 607, 607, 643, 643, 681,
13398         681, 722, 722, 764, 764, 810, 810, 858,
13399         858, 908, 908, 962, 962, 1019, 1019, 256
13400 };
13401
13402 static u32 nphy_tpc_txgain_ipa[] = {
13403         0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13404         0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13405         0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13406         0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13407         0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13408         0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13409         0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13410         0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13411         0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13412         0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13413         0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13414         0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13415         0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13416         0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13417         0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13418         0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13419         0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13420         0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13421         0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13422         0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13423         0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13424         0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13425         0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13426         0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13427         0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13428         0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13429         0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13430         0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13431         0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13432         0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13433         0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13434         0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13435 };
13436
13437 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13438         0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13439         0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13440         0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13441         0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13442         0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13443         0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13444         0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13445         0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13446         0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13447         0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13448         0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13449         0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13450         0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13451         0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13452         0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13453         0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13454         0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13455         0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13456         0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13457         0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13458         0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13459         0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13460         0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13461         0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13462         0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13463         0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13464         0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13465         0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13466         0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13467         0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13468         0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13469         0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13470 };
13471
13472 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13473         0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13474         0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13475         0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13476         0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13477         0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13478         0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13479         0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13480         0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13481         0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13482         0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13483         0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13484         0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13485         0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13486         0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13487         0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13488         0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13489         0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13490         0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13491         0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13492         0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13493         0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13494         0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13495         0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13496         0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13497         0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13498         0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13499         0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13500         0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13501         0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13502         0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13503         0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13504         0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13505 };
13506
13507 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13508         0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13509         0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13510         0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13511         0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13512         0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13513         0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13514         0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13515         0x70470028, 0x70470026, 0x70470024, 0x70470022,
13516         0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13517         0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13518         0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13519         0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13520         0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13521         0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13522         0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13523         0x70170019, 0x70170018, 0x70170016, 0x70170015,
13524         0x70170014, 0x70170013, 0x70170012, 0x70170010,
13525         0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13526         0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13527         0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13528         0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13529         0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13530         0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13531         0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13532         0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13533         0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13534         0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13535         0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13536         0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13537         0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13538         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13539         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13540 };
13541
13542 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13543         0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13544         0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13545         0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13546         0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13547         0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13548         0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13549         0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13550         0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13551         0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13552         0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13553         0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13554         0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13555         0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13556         0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13557         0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13558         0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13559         0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13560         0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13561         0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13562         0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13563         0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13564         0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13565         0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13566         0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13567         0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13568         0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13569         0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13570         0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13571         0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13572         0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13573         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13574         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13575 };
13576
13577 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13578         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13579         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13580         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13581         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13582         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13583         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13584         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13585         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13586         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13587         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13588         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13589         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13590         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13591         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13592         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13593         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13594         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13595         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13596         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13597         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13598         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13599         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13600         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13601         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13602         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13603         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13604         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13605         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13606         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13607         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13608         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13609         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13610 };
13611
13612 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13613         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13614         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13615         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13616         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13617         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13618         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13619         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13620         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13621         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13622         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13623         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13624         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13625         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13626         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13627         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13628         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13629         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13630         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13631         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13632         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13633         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13634         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13635         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13636         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13637         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13638         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13639         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13640         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13641         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13642         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13643         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13644         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13645 };
13646
13647 static u32 nphy_tpc_txgain_ipa_5g[] = {
13648         0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13649         0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13650         0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13651         0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13652         0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13653         0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13654         0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13655         0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13656         0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13657         0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13658         0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13659         0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13660         0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13661         0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13662         0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13663         0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13664         0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13665         0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13666         0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13667         0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13668         0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13669         0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13670         0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13671         0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13672         0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13673         0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13674         0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13675         0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13676         0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13677         0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13678         0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13679         0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13680 };
13681
13682 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13683         0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13684         0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13685         0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13686         0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13687         0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13688         0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13689         0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13690         0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13691         0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13692         0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13693         0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13694         0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13695         0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13696         0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13697         0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13698         0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13699         0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13700         0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13701         0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13702         0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13703         0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13704         0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13705         0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13706         0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13707         0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13708         0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13709         0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13710         0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13711         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13712         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13713         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13714         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13715 };
13716
13717 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13718         0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13719         0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13720         0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13721         0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13722         0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13723         0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13724         0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13725         0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13726         0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13727         0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13728         0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13729         0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13730         0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13731         0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13732         0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13733         0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13734         0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13735         0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13736         0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13737         0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13738         0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13739         0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13740         0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13741         0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13742         0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13743         0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13744         0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13745         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13746         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13747         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13748         0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13749         0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13750 };
13751
13752 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13753         -114, -108, -98, -91, -84, -78, -70, -62,
13754         -54, -46, -39, -31, -23, -15, -8, 0
13755 };
13756
13757 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13758         -100, -95, -89, -83, -77, -70, -63, -56,
13759         -48, -41, -33, -25, -19, -12, -6, 0
13760 };
13761
13762 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13763         -159, -113, -86, -72, -62, -54, -48, -43,
13764         -39, -35, -31, -28, -25, -23, -20, -18,
13765         -17, -15, -13, -11, -10, -8, -7, -6,
13766         -5, -4, -3, -3, -2, -1, -1, 0
13767 };
13768
13769 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13770         -109, -109, -82, -68, -58, -50, -44, -39,
13771         -35, -31, -28, -26, -23, -21, -19, -17,
13772         -16, -14, -13, -11, -10, -9, -8, -7,
13773         -5, -5, -4, -3, -2, -1, -1, 0
13774 };
13775
13776 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13777         -122, -122, -95, -80, -69, -61, -54, -49,
13778         -43, -39, -35, -32, -28, -26, -23, -21,
13779         -18, -16, -15, -13, -11, -10, -8, -7,
13780         -6, -5, -4, -3, -2, -1, -1, 0
13781 };
13782
13783 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13784         -107, -101, -92, -85, -78, -71, -62, -55,
13785         -47, -39, -32, -24, -19, -12, -6, 0
13786 };
13787
13788 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13789         -110, -104, -95, -88, -81, -74, -66, -58,
13790         -50, -44, -36, -28, -23, -15, -8, 0
13791 };
13792
13793 static u8 pad_gain_codes_used_2057rev5[] = {
13794         20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13795         10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13796 };
13797
13798 static u8 pad_gain_codes_used_2057rev7[] = {
13799         15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13800         5, 4, 3, 2, 1
13801 };
13802
13803 static u8 pad_all_gain_codes_2057[] = {
13804         31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13805         21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13806         11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13807         1, 0
13808 };
13809
13810 static u8 pga_all_gain_codes_2057[] = {
13811         15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13812 };
13813
13814 static u32 nphy_papd_scaltbl[] = {
13815         0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13816         0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13817         0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13818         0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13819         0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13820         0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13821         0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13822         0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13823         0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13824         0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13825         0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13826         0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13827         0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13828         0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13829         0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13830         0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13831 };
13832
13833 static u32 nphy_tpc_txgain_rev3[] = {
13834         0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13835         0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13836         0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13837         0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13838         0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13839         0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13840         0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13841         0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13842         0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13843         0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13844         0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13845         0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13846         0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13847         0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13848         0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13849         0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13850         0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13851         0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13852         0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13853         0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13854         0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13855         0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13856         0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13857         0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13858         0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13859         0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13860         0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13861         0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13862         0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13863         0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13864         0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13865         0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13866 };
13867
13868 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13869         0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13870         0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13871         0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13872         0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13873         0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13874         0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13875         0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13876         0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13877         0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13878         0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13879         0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13880         0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13881         0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13882         0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13883         0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13884         0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13885         0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13886         0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13887         0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13888         0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13889         0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13890         0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13891         0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13892         0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13893         0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13894         0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13895         0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13896         0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13897         0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13898         0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13899         0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13900         0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13901 };
13902
13903 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13904         0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13905         0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13906         0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13907         0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13908         0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13909         0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13910         0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13911         0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13912         0x80290031, 0x80210039, 0x80210036, 0x80210033,
13913         0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13914         0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13915         0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13916         0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13917         0x80110027, 0x80110024, 0x80110022, 0x80110020,
13918         0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13919         0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13920         0x80090029, 0x80090027, 0x80090025, 0x80090023,
13921         0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13922         0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13923         0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13924         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13925         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13926         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13927         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13928         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13929         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13930         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13931         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13932         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13933         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13934         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13935         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13936 };
13937
13938 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13939         0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13940         0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13941         0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13942         0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13943         0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13944         0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13945         0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13946         0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13947         0x10290031, 0x10210039, 0x10210036, 0x10210033,
13948         0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13949         0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13950         0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13951         0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13952         0x10110027, 0x10110024, 0x10110022, 0x10110020,
13953         0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13954         0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13955         0x10090029, 0x10090027, 0x10090025, 0x10090023,
13956         0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13957         0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13958         0x10090015, 0x10090013, 0x10090012, 0x10090011,
13959         0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13960         0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13961         0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13962         0x10090008, 0x10090008, 0x10090007, 0x10090007,
13963         0x10090007, 0x10090006, 0x10090006, 0x10090005,
13964         0x10090005, 0x10090005, 0x10090005, 0x10090004,
13965         0x10090004, 0x10090004, 0x10090004, 0x10090003,
13966         0x10090003, 0x10090003, 0x10090003, 0x10090003,
13967         0x10090003, 0x10090002, 0x10090002, 0x10090002,
13968         0x10090002, 0x10090002, 0x10090002, 0x10090002,
13969         0x10090002, 0x10090002, 0x10090001, 0x10090001,
13970         0x10090001, 0x10090001, 0x10090001, 0x10090001
13971 };
13972
13973 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13974         0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13975         0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13976         0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13977         0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13978         0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13979         0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13980         0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13981         0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13982         0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13983         0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13984         0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13985         0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13986         0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13987         0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13988         0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13989         0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13990         0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13991         0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13992         0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13993         0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13994         0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13995         0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13996         0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13997         0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13998         0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13999         0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
14000         0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
14001         0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
14002         0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
14003         0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
14004         0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
14005         0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
14006 };
14007
14008 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
14009         0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
14010         0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
14011         0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
14012         0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
14013         0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
14014         0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
14015         0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
14016         0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
14017         0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
14018         0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
14019         0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
14020         0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
14021         0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
14022         0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
14023         0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
14024         0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
14025         0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
14026         0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
14027         0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
14028         0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
14029         0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
14030         0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14031         0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14032         0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14033         0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14034         0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14035         0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14036         0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14037         0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14038         0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14039         0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14040         0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14041 };
14042
14043 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14044         0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14045         0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14046         0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14047         0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14048         0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14049         0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14050         0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14051         0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14052         0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14053         0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14054         0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14055         0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14056         0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14057         0x09620039, 0x09620037, 0x09620035, 0x09620033,
14058         0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14059         0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14060         0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14061         0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14062         0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14063         0x06620039, 0x06620037, 0x06620035, 0x06620033,
14064         0x05620046, 0x05620044, 0x05620042, 0x05620040,
14065         0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14066         0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14067         0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14068         0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14069         0x03620038, 0x03620037, 0x03620035, 0x03620033,
14070         0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14071         0x02620046, 0x02620044, 0x02620043, 0x02620042,
14072         0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14073         0x01620043, 0x01620042, 0x01620041, 0x01620040,
14074         0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14075         0x0062003b, 0x00620039, 0x00620037, 0x00620035
14076 };
14077
14078 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14079         0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14080         0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14081         0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14082         0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14083         0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14084         0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14085         0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14086         0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14087         0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14088         0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14089         0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14090         0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14091         0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14092         0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14093         0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14094         0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14095         0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14096         0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14097         0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14098         0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14099         0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14100         0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14101         0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14102         0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14103         0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14104         0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14105         0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14106         0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14107         0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14108         0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14109         0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14110         0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14111 };
14112
14113 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14114 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14115 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14116         0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a
14117 };
14118 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14119         0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16
14120 };
14121
14122 bool wlc_phy_bist_check_phy(struct brcms_phy_pub *pih)
14123 {
14124         struct brcms_phy *pi = (struct brcms_phy *) pih;
14125         u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14126
14127         if (NREV_GE(pi->pubpi.phy_rev, 16))
14128                 return true;
14129
14130         phybist0 = read_phy_reg(pi, 0x0e);
14131         phybist1 = read_phy_reg(pi, 0x0f);
14132         phybist2 = read_phy_reg(pi, 0xea);
14133         phybist3 = read_phy_reg(pi, 0xeb);
14134         phybist4 = read_phy_reg(pi, 0x156);
14135
14136         if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14137             (phybist3 == 0) && (phybist4 == 0))
14138                 return true;
14139
14140         return false;
14141 }
14142
14143 static void wlc_phy_bphy_init_nphy(struct brcms_phy *pi)
14144 {
14145         u16 addr, val;
14146
14147         val = 0x1e1f;
14148         for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14149              addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14150                 write_phy_reg(pi, addr, val);
14151                 if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14152                         val = 0x3e3f;
14153                 else
14154                         val -= 0x0202;
14155         }
14156
14157         write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14158 }
14159
14160 void
14161 wlc_phy_table_write_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14162                          u32 width, const void *data)
14163 {
14164         struct phytbl_info tbl;
14165
14166         tbl.tbl_id = id;
14167         tbl.tbl_len = len;
14168         tbl.tbl_offset = offset;
14169         tbl.tbl_width = width;
14170         tbl.tbl_ptr = data;
14171         wlc_phy_write_table_nphy(pi, &tbl);
14172 }
14173
14174 void
14175 wlc_phy_table_read_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14176                         u32 width, void *data)
14177 {
14178         struct phytbl_info tbl;
14179
14180         tbl.tbl_id = id;
14181         tbl.tbl_len = len;
14182         tbl.tbl_offset = offset;
14183         tbl.tbl_width = width;
14184         tbl.tbl_ptr = data;
14185         wlc_phy_read_table_nphy(pi, &tbl);
14186 }
14187
14188 static void
14189 wlc_phy_static_table_download_nphy(struct brcms_phy *pi)
14190 {
14191         uint idx;
14192
14193         if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14194                 for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14195                         wlc_phy_write_table_nphy(pi,
14196                                                  &mimophytbl_info_rev16[idx]);
14197         } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14198                 for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14199                         wlc_phy_write_table_nphy(pi,
14200                                                  &mimophytbl_info_rev7[idx]);
14201         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14202                 for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14203                         wlc_phy_write_table_nphy(pi,
14204                                                  &mimophytbl_info_rev3[idx]);
14205         } else {
14206                 for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14207                         wlc_phy_write_table_nphy(pi,
14208                                                  &mimophytbl_info_rev0[idx]);
14209         }
14210 }
14211
14212 static void wlc_phy_tbl_init_nphy(struct brcms_phy *pi)
14213 {
14214         uint idx = 0;
14215         u8 antswctrllut;
14216
14217         if (pi->phy_init_por)
14218                 wlc_phy_static_table_download_nphy(pi);
14219
14220         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14221
14222                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14223                                pi->srom_fem2g.antswctrllut : pi->srom_fem5g.
14224                                antswctrllut;
14225
14226                 switch (antswctrllut) {
14227                 case 0:
14228
14229                         break;
14230
14231                 case 1:
14232
14233                         if (pi->aa2g == 7)
14234                                 wlc_phy_table_write_nphy(
14235                                         pi,
14236                                         NPHY_TBL_ID_ANTSWCTRLLUT,
14237                                         2, 0x21, 8,
14238                                         &ant_sw_ctrl_tbl_rev8_2o3[0]);
14239                         else
14240                                 wlc_phy_table_write_nphy(
14241                                         pi,
14242                                         NPHY_TBL_ID_ANTSWCTRLLUT,
14243                                         2, 0x21, 8,
14244                                         &ant_sw_ctrl_tbl_rev8
14245                                         [0]);
14246
14247                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14248                                                  2, 0x25, 8,
14249                                                  &ant_sw_ctrl_tbl_rev8[2]);
14250                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14251                                                  2, 0x29, 8,
14252                                                  &ant_sw_ctrl_tbl_rev8[4]);
14253                         break;
14254
14255                 case 2:
14256
14257                         wlc_phy_table_write_nphy(
14258                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14259                                 2, 0x1, 8,
14260                                 &ant_sw_ctrl_tbl_rev8_2057v7_core0[0]);
14261                         wlc_phy_table_write_nphy(
14262                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14263                                 2, 0x5, 8,
14264                                 &ant_sw_ctrl_tbl_rev8_2057v7_core0[2]);
14265                         wlc_phy_table_write_nphy(
14266                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14267                                 2, 0x9, 8,
14268                                 &ant_sw_ctrl_tbl_rev8_2057v7_core0[4]);
14269
14270                         wlc_phy_table_write_nphy(
14271                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14272                                 2, 0x21, 8,
14273                                 &ant_sw_ctrl_tbl_rev8_2057v7_core1[0]);
14274                         wlc_phy_table_write_nphy(
14275                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14276                                 2, 0x25, 8,
14277                                 &ant_sw_ctrl_tbl_rev8_2057v7_core1[2]);
14278                         wlc_phy_table_write_nphy(
14279                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14280                                 2, 0x29, 8,
14281                                 &ant_sw_ctrl_tbl_rev8_2057v7_core1[4]);
14282                         break;
14283
14284                 default:
14285                         break;
14286                 }
14287
14288         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14289                 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14290
14291                         if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14292                                 antswctrllut =
14293                                         CHSPEC_IS2G(pi->radio_chanspec) ?
14294                                         pi->srom_fem2g.antswctrllut :
14295                                         pi->srom_fem5g.antswctrllut;
14296                                 switch (antswctrllut) {
14297                                 case 0:
14298                                         wlc_phy_write_table_nphy(
14299                                                 pi,
14300                                                 &mimophytbl_info_rev3_volatile
14301                                                 [idx]);
14302                                         break;
14303                                 case 1:
14304                                         wlc_phy_write_table_nphy(
14305                                                 pi,
14306                                                 &mimophytbl_info_rev3_volatile1
14307                                                 [idx]);
14308                                         break;
14309                                 case 2:
14310                                         wlc_phy_write_table_nphy(
14311                                                 pi,
14312                                                 &mimophytbl_info_rev3_volatile2
14313                                                 [idx]);
14314                                         break;
14315                                 case 3:
14316                                         wlc_phy_write_table_nphy(
14317                                                 pi,
14318                                                 &mimophytbl_info_rev3_volatile3
14319                                                 [idx]);
14320                                         break;
14321                                 default:
14322                                         break;
14323                                 }
14324                         } else {
14325                                 wlc_phy_write_table_nphy(
14326                                         pi,
14327                                         &mimophytbl_info_rev3_volatile[idx]);
14328                         }
14329                 }
14330         } else {
14331                 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++)
14332                         wlc_phy_write_table_nphy(pi,
14333                                                  &mimophytbl_info_rev0_volatile
14334                                                  [idx]);
14335         }
14336 }
14337
14338 static void
14339 wlc_phy_write_txmacreg_nphy(struct brcms_phy *pi, u16 holdoff, u16 delay)
14340 {
14341         write_phy_reg(pi, 0x77, holdoff);
14342         write_phy_reg(pi, 0xb4, delay);
14343 }
14344
14345 void wlc_phy_nphy_tkip_rifs_war(struct brcms_phy *pi, u8 rifs)
14346 {
14347         u16 holdoff, delay;
14348
14349         if (rifs) {
14350
14351                 holdoff = 0x10;
14352                 delay = 0x258;
14353         } else {
14354
14355                 holdoff = 0x15;
14356                 delay = 0x320;
14357         }
14358
14359         wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14360
14361         if (pi->sh && (pi->sh->_rifs_phy != rifs))
14362                 pi->sh->_rifs_phy = rifs;
14363 }
14364
14365 static void wlc_phy_txpwrctrl_config_nphy(struct brcms_phy *pi)
14366 {
14367
14368         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14369                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14370                 pi->phy_5g_pwrgain = true;
14371                 return;
14372         }
14373
14374         pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14375         pi->phy_5g_pwrgain = false;
14376
14377         if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14378             NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14379                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14380         else if ((pi->sh->sromrev >= 4)
14381                  && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14382                 pi->phy_5g_pwrgain = true;
14383 }
14384
14385 static void wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy *pi)
14386 {
14387         u16 bw40po, cddpo, stbcpo, bwduppo;
14388         uint band_num;
14389         struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14390
14391         if (pi->sh->sromrev >= 9)
14392                 return;
14393
14394         bw40po = sprom->bw40po;
14395         pi->bw402gpo = bw40po & 0xf;
14396         pi->bw405gpo = (bw40po & 0xf0) >> 4;
14397         pi->bw405glpo = (bw40po & 0xf00) >> 8;
14398         pi->bw405ghpo = (bw40po & 0xf000) >> 12;
14399
14400         cddpo = sprom->cddpo;
14401         pi->cdd2gpo = cddpo & 0xf;
14402         pi->cdd5gpo = (cddpo & 0xf0) >> 4;
14403         pi->cdd5glpo = (cddpo & 0xf00) >> 8;
14404         pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
14405
14406         stbcpo = sprom->stbcpo;
14407         pi->stbc2gpo = stbcpo & 0xf;
14408         pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
14409         pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
14410         pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
14411
14412         bwduppo = sprom->bwduppo;
14413         pi->bwdup2gpo = bwduppo & 0xf;
14414         pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
14415         pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
14416         pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
14417
14418         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
14419              band_num++) {
14420                 switch (band_num) {
14421                 case 0:
14422                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
14423                                 sprom->core_pwr_info[0].maxpwr_2g;
14424                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
14425                                 sprom->core_pwr_info[1].maxpwr_2g;
14426                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
14427                                 sprom->core_pwr_info[0].pa_2g[0];
14428                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
14429                                 sprom->core_pwr_info[1].pa_2g[0];
14430                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
14431                                 sprom->core_pwr_info[0].pa_2g[1];
14432                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
14433                                 sprom->core_pwr_info[1].pa_2g[1];
14434                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
14435                                 sprom->core_pwr_info[0].pa_2g[2];
14436                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
14437                                 sprom->core_pwr_info[1].pa_2g[2];
14438                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
14439                                 sprom->core_pwr_info[0].itssi_2g;
14440                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
14441                                 sprom->core_pwr_info[1].itssi_2g;
14442
14443                         pi->cck2gpo = sprom->cck2gpo;
14444
14445                         pi->ofdm2gpo = sprom->ofdm2gpo;
14446
14447                         pi->mcs2gpo[0] = sprom->mcs2gpo[0];
14448                         pi->mcs2gpo[1] = sprom->mcs2gpo[1];
14449                         pi->mcs2gpo[2] = sprom->mcs2gpo[2];
14450                         pi->mcs2gpo[3] = sprom->mcs2gpo[3];
14451                         pi->mcs2gpo[4] = sprom->mcs2gpo[4];
14452                         pi->mcs2gpo[5] = sprom->mcs2gpo[5];
14453                         pi->mcs2gpo[6] = sprom->mcs2gpo[6];
14454                         pi->mcs2gpo[7] = sprom->mcs2gpo[7];
14455                         break;
14456                 case 1:
14457
14458                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
14459                                 sprom->core_pwr_info[0].maxpwr_5g;
14460                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
14461                                 sprom->core_pwr_info[1].maxpwr_5g;
14462                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
14463                                 sprom->core_pwr_info[0].pa_5g[0];
14464                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
14465                                 sprom->core_pwr_info[1].pa_5g[0];
14466                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
14467                                 sprom->core_pwr_info[0].pa_5g[1];
14468                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
14469                                 sprom->core_pwr_info[1].pa_5g[1];
14470                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
14471                                 sprom->core_pwr_info[0].pa_5g[2];
14472                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
14473                                 sprom->core_pwr_info[1].pa_5g[2];
14474                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
14475                                 sprom->core_pwr_info[0].itssi_5g;
14476                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
14477                                 sprom->core_pwr_info[1].itssi_5g;
14478
14479                         pi->ofdm5gpo = sprom->ofdm5gpo;
14480
14481                         pi->mcs5gpo[0] = sprom->mcs5gpo[0];
14482                         pi->mcs5gpo[1] = sprom->mcs5gpo[1];
14483                         pi->mcs5gpo[2] = sprom->mcs5gpo[2];
14484                         pi->mcs5gpo[3] = sprom->mcs5gpo[3];
14485                         pi->mcs5gpo[4] = sprom->mcs5gpo[4];
14486                         pi->mcs5gpo[5] = sprom->mcs5gpo[5];
14487                         pi->mcs5gpo[6] = sprom->mcs5gpo[6];
14488                         pi->mcs5gpo[7] = sprom->mcs5gpo[7];
14489                         break;
14490                 case 2:
14491
14492                         pi->nphy_pwrctrl_info[0].max_pwr_5gl =
14493                                 sprom->core_pwr_info[0].maxpwr_5gl;
14494                         pi->nphy_pwrctrl_info[1].max_pwr_5gl =
14495                                 sprom->core_pwr_info[1].maxpwr_5gl;
14496                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
14497                                 sprom->core_pwr_info[0].pa_5gl[0];
14498                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
14499                                 sprom->core_pwr_info[1].pa_5gl[0];
14500                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
14501                                 sprom->core_pwr_info[0].pa_5gl[1];
14502                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
14503                                 sprom->core_pwr_info[1].pa_5gl[1];
14504                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
14505                                 sprom->core_pwr_info[0].pa_5gl[2];
14506                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
14507                                 sprom->core_pwr_info[1].pa_5gl[2];
14508                         pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14509                         pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14510
14511                         pi->ofdm5glpo = sprom->ofdm5glpo;
14512
14513                         pi->mcs5glpo[0] = sprom->mcs5glpo[0];
14514                         pi->mcs5glpo[1] = sprom->mcs5glpo[1];
14515                         pi->mcs5glpo[2] = sprom->mcs5glpo[2];
14516                         pi->mcs5glpo[3] = sprom->mcs5glpo[3];
14517                         pi->mcs5glpo[4] = sprom->mcs5glpo[4];
14518                         pi->mcs5glpo[5] = sprom->mcs5glpo[5];
14519                         pi->mcs5glpo[6] = sprom->mcs5glpo[6];
14520                         pi->mcs5glpo[7] = sprom->mcs5glpo[7];
14521                         break;
14522                 case 3:
14523
14524                         pi->nphy_pwrctrl_info[0].max_pwr_5gh =
14525                                 sprom->core_pwr_info[0].maxpwr_5gh;
14526                         pi->nphy_pwrctrl_info[1].max_pwr_5gh =
14527                                 sprom->core_pwr_info[1].maxpwr_5gh;
14528                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
14529                                 sprom->core_pwr_info[0].pa_5gh[0];
14530                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
14531                                 sprom->core_pwr_info[1].pa_5gh[0];
14532                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
14533                                 sprom->core_pwr_info[0].pa_5gh[1];
14534                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
14535                                 sprom->core_pwr_info[1].pa_5gh[1];
14536                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
14537                                 sprom->core_pwr_info[0].pa_5gh[2];
14538                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
14539                                 sprom->core_pwr_info[1].pa_5gh[2];
14540                         pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14541                         pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14542
14543                         pi->ofdm5ghpo = sprom->ofdm5ghpo;
14544
14545                         pi->mcs5ghpo[0] = sprom->mcs5ghpo[0];
14546                         pi->mcs5ghpo[1] = sprom->mcs5ghpo[1];
14547                         pi->mcs5ghpo[2] = sprom->mcs5ghpo[2];
14548                         pi->mcs5ghpo[3] = sprom->mcs5ghpo[3];
14549                         pi->mcs5ghpo[4] = sprom->mcs5ghpo[4];
14550                         pi->mcs5ghpo[5] = sprom->mcs5ghpo[5];
14551                         pi->mcs5ghpo[6] = sprom->mcs5ghpo[6];
14552                         pi->mcs5ghpo[7] = sprom->mcs5ghpo[7];
14553                         break;
14554                 }
14555         }
14556
14557         wlc_phy_txpwr_apply_nphy(pi);
14558 }
14559
14560 static bool wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14561 {
14562         struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14563
14564         pi->antswitch = sprom->antswitch;
14565         pi->aa2g = sprom->ant_available_bg;
14566         pi->aa5g = sprom->ant_available_a;
14567
14568         pi->srom_fem2g.tssipos = sprom->fem.ghz2.tssipos;
14569         pi->srom_fem2g.extpagain = sprom->fem.ghz2.extpa_gain;
14570         pi->srom_fem2g.pdetrange = sprom->fem.ghz2.pdet_range;
14571         pi->srom_fem2g.triso = sprom->fem.ghz2.tr_iso;
14572         pi->srom_fem2g.antswctrllut = sprom->fem.ghz2.antswlut;
14573
14574         pi->srom_fem5g.tssipos = sprom->fem.ghz5.tssipos;
14575         pi->srom_fem5g.extpagain = sprom->fem.ghz5.extpa_gain;
14576         pi->srom_fem5g.pdetrange = sprom->fem.ghz5.pdet_range;
14577         pi->srom_fem5g.triso = sprom->fem.ghz5.tr_iso;
14578         if (sprom->fem.ghz5.antswlut)
14579                 pi->srom_fem5g.antswctrllut = sprom->fem.ghz5.antswlut;
14580         else
14581                 pi->srom_fem5g.antswctrllut = sprom->fem.ghz2.antswlut;
14582
14583         wlc_phy_txpower_ipa_upd(pi);
14584
14585         pi->phy_txcore_disable_temp = sprom->tempthresh;
14586         if (pi->phy_txcore_disable_temp == 0)
14587                 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14588
14589         pi->phy_tempsense_offset = sprom->tempoffset;
14590         if (pi->phy_tempsense_offset != 0) {
14591                 if (pi->phy_tempsense_offset >
14592                     (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14593                         pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14594                 else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14595                                                      NPHY_SROM_MINTEMPOFFSET))
14596                         pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14597                 else
14598                         pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14599         }
14600
14601         pi->phy_txcore_enable_temp =
14602                 pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14603
14604         pi->phycal_tempdelta = sprom->phycal_tempdelta;
14605         if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14606                 pi->phycal_tempdelta = 0;
14607
14608         wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14609
14610         return true;
14611 }
14612
14613 bool wlc_phy_attach_nphy(struct brcms_phy *pi)
14614 {
14615         uint i;
14616
14617         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14618                 pi->phyhang_avoid = true;
14619
14620         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14621                 pi->nphy_gband_spurwar_en = true;
14622                 if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14623                         pi->nphy_aband_spurwar_en = true;
14624         }
14625         if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14626                 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14627                         pi->nphy_gband_spurwar2_en = true;
14628         }
14629
14630         pi->n_preamble_override = AUTO;
14631         if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14632                 pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14633
14634         pi->nphy_txrx_chain = AUTO;
14635         pi->phy_scraminit = AUTO;
14636
14637         pi->nphy_rxcalparams = 0x010100B5;
14638
14639         pi->nphy_perical = PHY_PERICAL_MPHASE;
14640         pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14641         pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14642
14643         pi->nphy_gain_boost = true;
14644         pi->nphy_elna_gain_config = false;
14645         pi->radio_is_on = false;
14646
14647         for (i = 0; i < pi->pubpi.phy_corenum; i++)
14648                 pi->nphy_txpwrindex[i].index = AUTO;
14649
14650         wlc_phy_txpwrctrl_config_nphy(pi);
14651         if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14652                 pi->hwpwrctrl_capable = true;
14653
14654         pi->pi_fptr.init = wlc_phy_init_nphy;
14655         pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14656         pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14657         pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14658
14659         if (!wlc_phy_txpwr_srom_read_nphy(pi))
14660                 return false;
14661
14662         return true;
14663 }
14664
14665 static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14666 {
14667         s32 rfpwr_offset = 0;
14668
14669         if (CHSPEC_IS2G(pi->radio_chanspec)) {
14670                 if ((pi->pubpi.radiorev == 3) ||
14671                     (pi->pubpi.radiorev == 4) ||
14672                     (pi->pubpi.radiorev == 6))
14673                         rfpwr_offset = (s16)
14674                                        nphy_papd_padgain_dlt_2g_2057rev3n4
14675                                        [pad_gn];
14676                 else if (pi->pubpi.radiorev == 5)
14677                         rfpwr_offset = (s16)
14678                                        nphy_papd_padgain_dlt_2g_2057rev5
14679                                        [pad_gn];
14680                 else if ((pi->pubpi.radiorev == 7)
14681                          || (pi->pubpi.radiorev ==
14682                              8))
14683                         rfpwr_offset = (s16)
14684                                        nphy_papd_padgain_dlt_2g_2057rev7
14685                                        [pad_gn];
14686         } else {
14687                 if ((pi->pubpi.radiorev == 3) ||
14688                     (pi->pubpi.radiorev == 4) ||
14689                     (pi->pubpi.radiorev == 6))
14690                         rfpwr_offset = (s16)
14691                                        nphy_papd_pgagain_dlt_5g_2057
14692                                        [pga_gn];
14693                 else if ((pi->pubpi.radiorev == 7)
14694                          || (pi->pubpi.radiorev ==
14695                              8))
14696                         rfpwr_offset = (s16)
14697                                        nphy_papd_pgagain_dlt_5g_2057rev7
14698                                        [pga_gn];
14699         }
14700         return rfpwr_offset;
14701 }
14702
14703 static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14704 {
14705         bool gf_preamble = false;
14706         u16 val;
14707
14708         if (preamble == BRCMS_N_PREAMBLE_GF)
14709                 gf_preamble = true;
14710
14711         val = read_phy_reg(pi, 0xed);
14712
14713         val |= RX_GF_MM_AUTO;
14714         val &= ~RX_GF_OR_MM;
14715         if (gf_preamble)
14716                 val |= RX_GF_OR_MM;
14717
14718         write_phy_reg(pi, 0xed, val);
14719 }
14720
14721 static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14722 {
14723         int j, type;
14724         u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14725
14726         for (type = 0; type < 3; type++) {
14727                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14728                         write_phy_reg(pi, addr_offset[type] + j,
14729                                       NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14730         }
14731
14732         if (pi->bw == WL_CHANSPEC_BW_40) {
14733                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14734                         write_phy_reg(pi, 0x186 + j,
14735                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14736         } else {
14737                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
14738                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14739                                 write_phy_reg(pi, 0x186 + j,
14740                                         NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14741                 }
14742
14743                 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14744                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14745                                 write_phy_reg(pi, 0x2c5 + j,
14746                                         NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14747                 }
14748         }
14749 }
14750
14751 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14752 {
14753         int j;
14754
14755         if (pi->bw == WL_CHANSPEC_BW_40) {
14756                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14757                         write_phy_reg(pi, 0x195 + j,
14758                                       NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14759         } else {
14760                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14761                         write_phy_reg(pi, 0x186 + j,
14762                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14763         }
14764 }
14765
14766 static void
14767 wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, u8 *events, u8 *dlys,
14768                        u8 len)
14769 {
14770         u32 t1_offset, t2_offset;
14771         u8 ctr;
14772         u8 end_event =
14773                 NREV_GE(pi->pubpi.phy_rev,
14774                         3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14775         u8 end_dly = 1;
14776
14777         if (pi->phyhang_avoid)
14778                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
14779
14780         t1_offset = cmd << 4;
14781         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14782                                  events);
14783         t2_offset = t1_offset + 0x080;
14784         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14785                                  dlys);
14786
14787         for (ctr = len; ctr < 16; ctr++) {
14788                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14789                                          t1_offset + ctr, 8, &end_event);
14790                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14791                                          t2_offset + ctr, 8, &end_dly);
14792         }
14793
14794         if (pi->phyhang_avoid)
14795                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
14796 }
14797
14798 static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14799 {
14800         u16 lpf_bw_ctl_val = 0;
14801         u16 rx2tx_lpf_rc_lut_offset = 0;
14802
14803         if (offset == 0) {
14804                 if (CHSPEC_IS40(pi->radio_chanspec))
14805                         rx2tx_lpf_rc_lut_offset = 0x159;
14806                 else
14807                         rx2tx_lpf_rc_lut_offset = 0x154;
14808         } else {
14809                 rx2tx_lpf_rc_lut_offset = offset;
14810         }
14811         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14812                                 (u32) rx2tx_lpf_rc_lut_offset, 16,
14813                                 &lpf_bw_ctl_val);
14814
14815         lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14816
14817         return lpf_bw_ctl_val;
14818 }
14819
14820 static void
14821 wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14822                                   u8 core_mask, u8 off, u8 override_id)
14823 {
14824         u8 core_num;
14825         u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14826         u8 val_shift = 0;
14827
14828         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14829                 en_mask = field;
14830                 for (core_num = 0; core_num < 2; core_num++) {
14831                         if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14832
14833                                 switch (field) {
14834                                 case (0x1 << 2):
14835                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14836                                         val_addr = (core_num == 0) ? 0x7a :
14837                                                    0x7d;
14838                                         val_mask = (0x1 << 1);
14839                                         val_shift = 1;
14840                                         break;
14841                                 case (0x1 << 3):
14842                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14843                                         val_addr = (core_num == 0) ? 0x7a :
14844                                                    0x7d;
14845                                         val_mask = (0x1 << 2);
14846                                         val_shift = 2;
14847                                         break;
14848                                 case (0x1 << 4):
14849                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14850                                         val_addr = (core_num == 0) ? 0x7a :
14851                                                    0x7d;
14852                                         val_mask = (0x1 << 4);
14853                                         val_shift = 4;
14854                                         break;
14855                                 case (0x1 << 5):
14856                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14857                                         val_addr = (core_num == 0) ? 0x7a :
14858                                                    0x7d;
14859                                         val_mask = (0x1 << 5);
14860                                         val_shift = 5;
14861                                         break;
14862                                 case (0x1 << 6):
14863                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14864                                         val_addr = (core_num == 0) ? 0x7a :
14865                                                    0x7d;
14866                                         val_mask = (0x1 << 6);
14867                                         val_shift = 6;
14868                                         break;
14869                                 case (0x1 << 7):
14870                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14871                                         val_addr = (core_num == 0) ? 0x7a :
14872                                                    0x7d;
14873                                         val_mask = (0x1 << 7);
14874                                         val_shift = 7;
14875                                         break;
14876                                 case (0x1 << 10):
14877                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14878                                         val_addr = (core_num == 0) ? 0xf8 :
14879                                                    0xfa;
14880                                         val_mask = (0x7 << 4);
14881                                         val_shift = 4;
14882                                         break;
14883                                 case (0x1 << 11):
14884                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14885                                         val_addr = (core_num == 0) ? 0x7b :
14886                                                    0x7e;
14887                                         val_mask = (0xffff << 0);
14888                                         val_shift = 0;
14889                                         break;
14890                                 case (0x1 << 12):
14891                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14892                                         val_addr = (core_num == 0) ? 0x7c :
14893                                                    0x7f;
14894                                         val_mask = (0xffff << 0);
14895                                         val_shift = 0;
14896                                         break;
14897                                 case (0x3 << 13):
14898                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14899                                         val_addr = (core_num == 0) ? 0x348 :
14900                                                    0x349;
14901                                         val_mask = (0xff << 0);
14902                                         val_shift = 0;
14903                                         break;
14904                                 case (0x1 << 13):
14905                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14906                                         val_addr = (core_num == 0) ? 0x348 :
14907                                                    0x349;
14908                                         val_mask = (0xf << 0);
14909                                         val_shift = 0;
14910                                         break;
14911                                 default:
14912                                         addr = 0xffff;
14913                                         break;
14914                                 }
14915                         } else if (override_id ==
14916                                    NPHY_REV7_RFCTRLOVERRIDE_ID1) {
14917
14918                                 switch (field) {
14919                                 case (0x1 << 1):
14920                                         en_addr = (core_num == 0) ? 0x342 :
14921                                                   0x343;
14922                                         val_addr = (core_num == 0) ? 0x340 :
14923                                                    0x341;
14924                                         val_mask = (0x1 << 1);
14925                                         val_shift = 1;
14926                                         break;
14927                                 case (0x1 << 3):
14928                                         en_addr = (core_num == 0) ? 0x342 :
14929                                                   0x343;
14930                                         val_addr = (core_num == 0) ? 0x340 :
14931                                                    0x341;
14932                                         val_mask = (0x1 << 3);
14933                                         val_shift = 3;
14934                                         break;
14935                                 case (0x1 << 5):
14936                                         en_addr = (core_num == 0) ? 0x342 :
14937                                                   0x343;
14938                                         val_addr = (core_num == 0) ? 0x340 :
14939                                                    0x341;
14940                                         val_mask = (0x1 << 5);
14941                                         val_shift = 5;
14942                                         break;
14943                                 case (0x1 << 4):
14944                                         en_addr = (core_num == 0) ? 0x342 :
14945                                                   0x343;
14946                                         val_addr = (core_num == 0) ? 0x340 :
14947                                                    0x341;
14948                                         val_mask = (0x1 << 4);
14949                                         val_shift = 4;
14950                                         break;
14951                                 case (0x1 << 2):
14952
14953                                         en_addr = (core_num == 0) ? 0x342 :
14954                                                   0x343;
14955                                         val_addr = (core_num == 0) ? 0x340 :
14956                                                    0x341;
14957                                         val_mask = (0x1 << 2);
14958                                         val_shift = 2;
14959                                         break;
14960                                 case (0x1 << 7):
14961
14962                                         en_addr = (core_num == 0) ? 0x342 :
14963                                                   0x343;
14964                                         val_addr = (core_num == 0) ? 0x340 :
14965                                                    0x341;
14966                                         val_mask = (0x7 << 8);
14967                                         val_shift = 8;
14968                                         break;
14969                                 case (0x1 << 11):
14970                                         en_addr = (core_num == 0) ? 0x342 :
14971                                                   0x343;
14972                                         val_addr = (core_num == 0) ? 0x340 :
14973                                                    0x341;
14974                                         val_mask = (0x1 << 14);
14975                                         val_shift = 14;
14976                                         break;
14977                                 case (0x1 << 10):
14978                                         en_addr = (core_num == 0) ? 0x342 :
14979                                                   0x343;
14980                                         val_addr = (core_num == 0) ? 0x340 :
14981                                                    0x341;
14982                                         val_mask = (0x1 << 13);
14983                                         val_shift = 13;
14984                                         break;
14985                                 case (0x1 << 9):
14986                                         en_addr = (core_num == 0) ? 0x342 :
14987                                                   0x343;
14988                                         val_addr = (core_num == 0) ? 0x340 :
14989                                                    0x341;
14990                                         val_mask = (0x1 << 12);
14991                                         val_shift = 12;
14992                                         break;
14993                                 case (0x1 << 8):
14994                                         en_addr = (core_num == 0) ? 0x342 :
14995                                                   0x343;
14996                                         val_addr = (core_num == 0) ? 0x340 :
14997                                                    0x341;
14998                                         val_mask = (0x1 << 11);
14999                                         val_shift = 11;
15000                                         break;
15001                                 case (0x1 << 6):
15002                                         en_addr = (core_num == 0) ? 0x342 :
15003                                                   0x343;
15004                                         val_addr = (core_num == 0) ? 0x340 :
15005                                                    0x341;
15006                                         val_mask = (0x1 << 6);
15007                                         val_shift = 6;
15008                                         break;
15009                                 case (0x1 << 0):
15010                                         en_addr = (core_num == 0) ? 0x342 :
15011                                                   0x343;
15012                                         val_addr = (core_num == 0) ? 0x340 :
15013                                                    0x341;
15014                                         val_mask = (0x1 << 0);
15015                                         val_shift = 0;
15016                                         break;
15017                                 default:
15018                                         addr = 0xffff;
15019                                         break;
15020                                 }
15021                         } else if (override_id ==
15022                                    NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15023
15024                                 switch (field) {
15025                                 case (0x1 << 3):
15026                                         en_addr = (core_num == 0) ? 0x346 :
15027                                                   0x347;
15028                                         val_addr = (core_num == 0) ? 0x344 :
15029                                                    0x345;
15030                                         val_mask = (0x1 << 3);
15031                                         val_shift = 3;
15032                                         break;
15033                                 case (0x1 << 1):
15034                                         en_addr = (core_num == 0) ? 0x346 :
15035                                                   0x347;
15036                                         val_addr = (core_num == 0) ? 0x344 :
15037                                                    0x345;
15038                                         val_mask = (0x1 << 1);
15039                                         val_shift = 1;
15040                                         break;
15041                                 case (0x1 << 0):
15042                                         en_addr = (core_num == 0) ? 0x346 :
15043                                                   0x347;
15044                                         val_addr = (core_num == 0) ? 0x344 :
15045                                                    0x345;
15046                                         val_mask = (0x1 << 0);
15047                                         val_shift = 0;
15048                                         break;
15049                                 case (0x1 << 2):
15050                                         en_addr = (core_num == 0) ? 0x346 :
15051                                                   0x347;
15052                                         val_addr = (core_num == 0) ? 0x344 :
15053                                                    0x345;
15054                                         val_mask = (0x1 << 2);
15055                                         val_shift = 2;
15056                                         break;
15057                                 case (0x1 << 4):
15058                                         en_addr = (core_num == 0) ? 0x346 :
15059                                                   0x347;
15060                                         val_addr = (core_num == 0) ? 0x344 :
15061                                                    0x345;
15062                                         val_mask = (0x1 << 4);
15063                                         val_shift = 4;
15064                                         break;
15065                                 default:
15066                                         addr = 0xffff;
15067                                         break;
15068                                 }
15069                         }
15070
15071                         if (off) {
15072                                 and_phy_reg(pi, en_addr, ~en_mask);
15073                                 and_phy_reg(pi, val_addr, ~val_mask);
15074                         } else {
15075
15076                                 if ((core_mask == 0)
15077                                     || (core_mask & (1 << core_num))) {
15078                                         or_phy_reg(pi, en_addr, en_mask);
15079
15080                                         if (addr != 0xffff)
15081                                                 mod_phy_reg(pi, val_addr,
15082                                                             val_mask,
15083                                                             (value <<
15084                                                              val_shift));
15085                                 }
15086                         }
15087                 }
15088         }
15089 }
15090
15091 static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15092 {
15093         uint core;
15094         int ctr;
15095         s16 gain_delta[2];
15096         u8 curr_channel;
15097         u16 minmax_gain[2];
15098         u16 regval[4];
15099
15100         if (pi->phyhang_avoid)
15101                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15102
15103         if (pi->nphy_gain_boost) {
15104                 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15105
15106                         gain_delta[0] = 6;
15107                         gain_delta[1] = 6;
15108                 } else {
15109
15110                         curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15111                         gain_delta[0] =
15112                                 (s16)
15113                                 PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15114                                                curr_channel) +
15115                                               nphy_lnagain_est0[1]), 13);
15116                         gain_delta[1] =
15117                                 (s16)
15118                                 PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15119                                                curr_channel) +
15120                                               nphy_lnagain_est1[1]), 13);
15121                 }
15122         } else {
15123
15124                 gain_delta[0] = 0;
15125                 gain_delta[1] = 0;
15126         }
15127
15128         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15129                 if (pi->nphy_elna_gain_config) {
15130
15131                         regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15132                         regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15133                         regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15134                         regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15135                 } else {
15136                         for (ctr = 0; ctr < 4; ctr++)
15137                                 regval[ctr] =
15138                                         nphy_def_lnagains[ctr] +
15139                                         gain_delta[core];
15140                 }
15141                 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15142
15143                 minmax_gain[core] =
15144                         (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15145         }
15146
15147         mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15148         mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15149
15150         if (pi->phyhang_avoid)
15151                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15152 }
15153
15154 static void
15155 wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15156 {
15157         if (core == PHY_CORE_0) {
15158                 write_phy_reg(pi, 0x38, 0x4);
15159                 if (CHSPEC_IS2G(pi->radio_chanspec))
15160                         write_phy_reg(pi, 0x37, 0x0060);
15161                 else
15162                         write_phy_reg(pi, 0x37, 0x1080);
15163         } else if (core == PHY_CORE_1) {
15164                 write_phy_reg(pi, 0x2ae, 0x4);
15165                 if (CHSPEC_IS2G(pi->radio_chanspec))
15166                         write_phy_reg(pi, 0x2ad, 0x0060);
15167                 else
15168                         write_phy_reg(pi, 0x2ad, 0x1080);
15169         }
15170 }
15171
15172 static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15173 {
15174         u8 txchain0, txchain1;
15175
15176         txchain0 = txchain & 0x1;
15177         txchain1 = (txchain & 0x2) >> 1;
15178         if (!txchain0)
15179                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15180
15181         if (!txchain1)
15182                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15183 }
15184
15185 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15186 {
15187         s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15188         s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15189         s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15190         s8 tia_gainbits[] = {
15191                 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15192
15193         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15194         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15195
15196         mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15197
15198         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15199         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15200
15201         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15202                                  lna1_gain_db);
15203         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15204                                  lna1_gain_db);
15205
15206         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15207                                  lna2_gain_db);
15208         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15209                                  lna2_gain_db);
15210
15211         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15212                                  tia_gain_db);
15213         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15214                                  tia_gain_db);
15215
15216         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15217                                  tia_gainbits);
15218         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15219                                  tia_gainbits);
15220
15221         write_phy_reg(pi, 0x37, 0x74);
15222         write_phy_reg(pi, 0x2ad, 0x74);
15223         write_phy_reg(pi, 0x38, 0x18);
15224         write_phy_reg(pi, 0x2ae, 0x18);
15225
15226         write_phy_reg(pi, 0x2b, 0xe8);
15227         write_phy_reg(pi, 0x41, 0xe8);
15228
15229         if (CHSPEC_IS20(pi->radio_chanspec)) {
15230
15231                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15232                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15233         } else {
15234
15235                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15236                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15237         }
15238 }
15239
15240 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15241 {
15242         u16 currband;
15243         s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15244         s8 *lna1_gain_db = NULL;
15245         s8 *lna1_gain_db_2 = NULL;
15246         s8 *lna2_gain_db = NULL;
15247         s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15248         s8 *tia_gain_db;
15249         s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15250         s8 *tia_gainbits;
15251         u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15252         u16 *rfseq_init_gain;
15253         u16 init_gaincode;
15254         u16 clip1hi_gaincode;
15255         u16 clip1md_gaincode = 0;
15256         u16 clip1md_gaincode_B;
15257         u16 clip1lo_gaincode;
15258         u16 clip1lo_gaincode_B;
15259         u8 crsminl_th = 0;
15260         u8 crsminu_th;
15261         u16 nbclip_th = 0;
15262         u8 w1clip_th;
15263         u16 freq;
15264         s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15265         u8 chg_nbclip_th = 0;
15266
15267         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15268         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15269
15270         currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15271         if (currband == 0) {
15272
15273                 lna1_gain_db = lna1G_gain_db_rev7;
15274
15275                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15276                                          lna1_gain_db);
15277                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15278                                          lna1_gain_db);
15279
15280                 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15281
15282                 if (CHSPEC_IS40(pi->radio_chanspec)) {
15283                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15284                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15285                 }
15286
15287                 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15288
15289                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15290                         mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15291                         mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15292                 }
15293         } else {
15294
15295                 init_gaincode = 0x9e;
15296                 clip1hi_gaincode = 0x9e;
15297                 clip1md_gaincode_B = 0x24;
15298                 clip1lo_gaincode = 0x8a;
15299                 clip1lo_gaincode_B = 8;
15300                 rfseq_init_gain = rfseqA_init_gain_rev7;
15301
15302                 tia_gain_db = tiaA_gain_db_rev7;
15303                 tia_gainbits = tiaA_gainbits_rev7;
15304
15305                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15306                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15307
15308                         w1clip_th = 25;
15309                         clip1md_gaincode = 0x82;
15310
15311                         if ((freq <= 5080) || (freq == 5825)) {
15312
15313                                 s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15314                                 s8 lna1A_gain_db_2_rev7[] = {
15315                                         11, 17, 22, 25};
15316                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15317
15318                                 crsminu_th = 0x3e;
15319                                 lna1_gain_db = lna1A_gain_db_rev7;
15320                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15321                                 lna2_gain_db = lna2A_gain_db_rev7;
15322                         } else if ((freq >= 5500) && (freq <= 5700)) {
15323
15324                                 s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15325                                 s8 lna1A_gain_db_2_rev7[] = {
15326                                         12, 18, 22, 26};
15327                                 s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15328
15329                                 crsminu_th = 0x45;
15330                                 clip1md_gaincode_B = 0x14;
15331                                 nbclip_th = 0xff;
15332                                 chg_nbclip_th = 1;
15333                                 lna1_gain_db = lna1A_gain_db_rev7;
15334                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15335                                 lna2_gain_db = lna2A_gain_db_rev7;
15336                         } else {
15337
15338                                 s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15339                                 s8 lna1A_gain_db_2_rev7[] = {
15340                                         12, 18, 22, 26};
15341                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15342
15343                                 crsminu_th = 0x41;
15344                                 lna1_gain_db = lna1A_gain_db_rev7;
15345                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15346                                 lna2_gain_db = lna2A_gain_db_rev7;
15347                         }
15348
15349                         if (freq <= 4920) {
15350                                 nvar_baseline_offset0 = 5;
15351                                 nvar_baseline_offset1 = 5;
15352                         } else if ((freq > 4920) && (freq <= 5320)) {
15353                                 nvar_baseline_offset0 = 3;
15354                                 nvar_baseline_offset1 = 5;
15355                         } else if ((freq > 5320) && (freq <= 5700)) {
15356                                 nvar_baseline_offset0 = 3;
15357                                 nvar_baseline_offset1 = 2;
15358                         } else {
15359                                 nvar_baseline_offset0 = 4;
15360                                 nvar_baseline_offset1 = 0;
15361                         }
15362                 } else {
15363
15364                         crsminu_th = 0x3a;
15365                         crsminl_th = 0x3a;
15366                         w1clip_th = 20;
15367
15368                         if ((freq >= 4920) && (freq <= 5320)) {
15369                                 nvar_baseline_offset0 = 4;
15370                                 nvar_baseline_offset1 = 5;
15371                         } else if ((freq > 5320) && (freq <= 5550)) {
15372                                 nvar_baseline_offset0 = 4;
15373                                 nvar_baseline_offset1 = 2;
15374                         } else {
15375                                 nvar_baseline_offset0 = 5;
15376                                 nvar_baseline_offset1 = 3;
15377                         }
15378                 }
15379
15380                 write_phy_reg(pi, 0x20, init_gaincode);
15381                 write_phy_reg(pi, 0x2a7, init_gaincode);
15382
15383                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15384                                          pi->pubpi.phy_corenum, 0x106, 16,
15385                                          rfseq_init_gain);
15386
15387                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15388                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15389
15390                 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15391                 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15392
15393                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15394                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15395                 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15396                 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15397
15398                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15399                                          tia_gain_db);
15400                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15401                                          tia_gain_db);
15402
15403                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15404                                          tia_gainbits);
15405                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15406                                          tia_gainbits);
15407
15408                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15409
15410                 if (chg_nbclip_th == 1) {
15411                         write_phy_reg(pi, 0x2b, nbclip_th);
15412                         write_phy_reg(pi, 0x41, nbclip_th);
15413                 }
15414
15415                 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15416                 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15417
15418                 mod_phy_reg(pi, 0x2e4,
15419                             (0x3f << 0), (nvar_baseline_offset0 << 0));
15420
15421                 mod_phy_reg(pi, 0x2e4,
15422                             (0x3f << 6), (nvar_baseline_offset1 << 6));
15423
15424                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15425
15426                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15427                                                  lna1_gain_db);
15428                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15429                                                  lna1_gain_db_2);
15430
15431                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15432                                                  8, lna2_gain_db);
15433                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15434                                                  8, lna2_gain_db);
15435
15436                         write_phy_reg(pi, 0x24, clip1md_gaincode);
15437                         write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15438                 } else {
15439                         mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15440                 }
15441         }
15442 }
15443
15444 static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15445 {
15446         u16 w1th, hpf_code, currband;
15447         int ctr;
15448         u8 rfseq_updategainu_events[] = {
15449                 NPHY_RFSEQ_CMD_RX_GAIN,
15450                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15451                 NPHY_RFSEQ_CMD_SET_HPF_BW
15452         };
15453         u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15454         s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15455         s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15456         s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15457         s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15458         s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15459         s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15460         s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15461         s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15462         s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15463         s8 *lna1_gain_db = NULL;
15464         s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15465         s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15466         s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15467         s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15468         s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15469         s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15470         s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15471         s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15472         s8 *lna2_gain_db = NULL;
15473         s8 tiaG_gain_db[] = {
15474                 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15475         s8 tiaA_gain_db[] = {
15476                 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15477         s8 tiaA_gain_db_rev4[] = {
15478                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15479         s8 tiaA_gain_db_rev5[] = {
15480                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15481         s8 tiaA_gain_db_rev6[] = {
15482                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15483         s8 *tia_gain_db;
15484         s8 tiaG_gainbits[] = {
15485                 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15486         s8 tiaA_gainbits[] = {
15487                 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15488         s8 tiaA_gainbits_rev4[] = {
15489                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15490         s8 tiaA_gainbits_rev5[] = {
15491                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15492         s8 tiaA_gainbits_rev6[] = {
15493                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15494         s8 *tia_gainbits;
15495         s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15496         s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15497         u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15498         u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15499         u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15500         u16 rfseqG_init_gain_rev5_elna[] = {
15501                 0x013f, 0x013f, 0x013f, 0x013f };
15502         u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15503         u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15504         u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15505         u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15506         u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15507         u16 rfseqA_init_gain_rev4_elna[] = {
15508                 0x314f, 0x314f, 0x314f, 0x314f };
15509         u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15510         u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15511         u16 *rfseq_init_gain;
15512         u16 initG_gaincode = 0x627e;
15513         u16 initG_gaincode_rev4 = 0x527e;
15514         u16 initG_gaincode_rev5 = 0x427e;
15515         u16 initG_gaincode_rev5_elna = 0x027e;
15516         u16 initG_gaincode_rev6 = 0x527e;
15517         u16 initG_gaincode_rev6_224B0 = 0x427e;
15518         u16 initG_gaincode_rev6_elna = 0x127e;
15519         u16 initA_gaincode = 0x52de;
15520         u16 initA_gaincode_rev4 = 0x629e;
15521         u16 initA_gaincode_rev4_elna = 0x329e;
15522         u16 initA_gaincode_rev5 = 0x729e;
15523         u16 initA_gaincode_rev6 = 0x729e;
15524         u16 init_gaincode;
15525         u16 clip1hiG_gaincode = 0x107e;
15526         u16 clip1hiG_gaincode_rev4 = 0x007e;
15527         u16 clip1hiG_gaincode_rev5 = 0x1076;
15528         u16 clip1hiG_gaincode_rev6 = 0x007e;
15529         u16 clip1hiA_gaincode = 0x00de;
15530         u16 clip1hiA_gaincode_rev4 = 0x029e;
15531         u16 clip1hiA_gaincode_rev5 = 0x029e;
15532         u16 clip1hiA_gaincode_rev6 = 0x029e;
15533         u16 clip1hi_gaincode;
15534         u16 clip1mdG_gaincode = 0x0066;
15535         u16 clip1mdA_gaincode = 0x00ca;
15536         u16 clip1mdA_gaincode_rev4 = 0x1084;
15537         u16 clip1mdA_gaincode_rev5 = 0x2084;
15538         u16 clip1mdA_gaincode_rev6 = 0x2084;
15539         u16 clip1md_gaincode = 0;
15540         u16 clip1loG_gaincode = 0x0074;
15541         u16 clip1loG_gaincode_rev5[] = {
15542                 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15543         };
15544         u16 clip1loG_gaincode_rev6[] = {
15545                 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15546         };
15547         u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15548         u16 clip1loA_gaincode = 0x00cc;
15549         u16 clip1loA_gaincode_rev4 = 0x0086;
15550         u16 clip1loA_gaincode_rev5 = 0x2086;
15551         u16 clip1loA_gaincode_rev6 = 0x2086;
15552         u16 clip1lo_gaincode;
15553         u8 crsminG_th = 0x18;
15554         u8 crsminG_th_rev5 = 0x18;
15555         u8 crsminG_th_rev6 = 0x18;
15556         u8 crsminA_th = 0x1e;
15557         u8 crsminA_th_rev4 = 0x24;
15558         u8 crsminA_th_rev5 = 0x24;
15559         u8 crsminA_th_rev6 = 0x24;
15560         u8 crsmin_th;
15561         u8 crsminlG_th = 0x18;
15562         u8 crsminlG_th_rev5 = 0x18;
15563         u8 crsminlG_th_rev6 = 0x18;
15564         u8 crsminlA_th = 0x1e;
15565         u8 crsminlA_th_rev4 = 0x24;
15566         u8 crsminlA_th_rev5 = 0x24;
15567         u8 crsminlA_th_rev6 = 0x24;
15568         u8 crsminl_th = 0;
15569         u8 crsminuG_th = 0x18;
15570         u8 crsminuG_th_rev5 = 0x18;
15571         u8 crsminuG_th_rev6 = 0x18;
15572         u8 crsminuA_th = 0x1e;
15573         u8 crsminuA_th_rev4 = 0x24;
15574         u8 crsminuA_th_rev5 = 0x24;
15575         u8 crsminuA_th_rev6 = 0x24;
15576         u8 crsminuA_th_rev6_224B0 = 0x2d;
15577         u8 crsminu_th;
15578         u16 nbclipG_th = 0x20d;
15579         u16 nbclipG_th_rev4 = 0x1a1;
15580         u16 nbclipG_th_rev5 = 0x1d0;
15581         u16 nbclipG_th_rev6 = 0x1d0;
15582         u16 nbclipA_th = 0x1a1;
15583         u16 nbclipA_th_rev4 = 0x107;
15584         u16 nbclipA_th_rev5 = 0x0a9;
15585         u16 nbclipA_th_rev6 = 0x0f0;
15586         u16 nbclip_th = 0;
15587         u8 w1clipG_th = 5;
15588         u8 w1clipG_th_rev5 = 9;
15589         u8 w1clipG_th_rev6 = 5;
15590         u8 w1clipA_th = 25, w1clip_th;
15591         u8 rssi_gain_default = 0x50;
15592         u8 rssiG_gain_rev6_224B0 = 0x50;
15593         u8 rssiA_gain_rev5 = 0x90;
15594         u8 rssiA_gain_rev6 = 0x90;
15595         u8 rssi_gain;
15596         u16 regval[21];
15597         u8 triso;
15598
15599         triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15600                 pi->srom_fem2g.triso;
15601
15602         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15603                 if (pi->pubpi.radiorev == 5) {
15604                         wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15605                 } else if (pi->pubpi.radiorev == 7) {
15606                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15607
15608                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15609                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15610
15611                 } else if ((pi->pubpi.radiorev == 3)
15612                            || (pi->pubpi.radiorev == 8)) {
15613                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15614
15615                         if (pi->pubpi.radiorev == 8) {
15616                                 mod_phy_reg(pi, 0x283,
15617                                             (0xff << 0), (0x44 << 0));
15618                                 mod_phy_reg(pi, 0x280,
15619                                             (0xff << 0), (0x44 << 0));
15620                         }
15621                 } else {
15622                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15623                 }
15624         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15625
15626                 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15627
15628                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15629                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15630
15631                 currband =
15632                         read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15633                 if (currband == 0) {
15634                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15635                                 if (pi->pubpi.radiorev == 11) {
15636                                         lna1_gain_db = lna1G_gain_db_rev6_224B0;
15637                                         lna2_gain_db = lna2G_gain_db_rev6_224B0;
15638                                         rfseq_init_gain =
15639                                                 rfseqG_init_gain_rev6_224B0;
15640                                         init_gaincode =
15641                                                 initG_gaincode_rev6_224B0;
15642                                         clip1hi_gaincode =
15643                                                 clip1hiG_gaincode_rev6;
15644                                         clip1lo_gaincode =
15645                                                 clip1loG_gaincode_rev6_224B0;
15646                                         nbclip_th = nbclipG_th_rev6;
15647                                         w1clip_th = w1clipG_th_rev6;
15648                                         crsmin_th = crsminG_th_rev6;
15649                                         crsminl_th = crsminlG_th_rev6;
15650                                         crsminu_th = crsminuG_th_rev6;
15651                                         rssi_gain = rssiG_gain_rev6_224B0;
15652                                 } else {
15653                                         lna1_gain_db = lna1G_gain_db_rev6;
15654                                         lna2_gain_db = lna2G_gain_db_rev6;
15655                                         if (pi->sh->boardflags & BFL_EXTLNA) {
15656
15657                                                 rfseq_init_gain =
15658                                                      rfseqG_init_gain_rev6_elna;
15659                                                 init_gaincode =
15660                                                        initG_gaincode_rev6_elna;
15661                                         } else {
15662                                                 rfseq_init_gain =
15663                                                         rfseqG_init_gain_rev6;
15664                                                 init_gaincode =
15665                                                         initG_gaincode_rev6;
15666                                         }
15667                                         clip1hi_gaincode =
15668                                                 clip1hiG_gaincode_rev6;
15669                                         switch (triso) {
15670                                         case 0:
15671                                                 clip1lo_gaincode =
15672                                                         clip1loG_gaincode_rev6
15673                                                         [0];
15674                                                 break;
15675                                         case 1:
15676                                                 clip1lo_gaincode =
15677                                                         clip1loG_gaincode_rev6
15678                                                         [1];
15679                                                 break;
15680                                         case 2:
15681                                                 clip1lo_gaincode =
15682                                                         clip1loG_gaincode_rev6
15683                                                         [2];
15684                                                 break;
15685                                         case 3:
15686                                         default:
15687
15688                                                 clip1lo_gaincode =
15689                                                         clip1loG_gaincode_rev6
15690                                                         [3];
15691                                                 break;
15692                                         case 4:
15693                                                 clip1lo_gaincode =
15694                                                         clip1loG_gaincode_rev6
15695                                                         [4];
15696                                                 break;
15697                                         case 5:
15698                                                 clip1lo_gaincode =
15699                                                         clip1loG_gaincode_rev6
15700                                                         [5];
15701                                                 break;
15702                                         case 6:
15703                                                 clip1lo_gaincode =
15704                                                         clip1loG_gaincode_rev6
15705                                                         [6];
15706                                                 break;
15707                                         case 7:
15708                                                 clip1lo_gaincode =
15709                                                         clip1loG_gaincode_rev6
15710                                                         [7];
15711                                                 break;
15712                                         }
15713                                         nbclip_th = nbclipG_th_rev6;
15714                                         w1clip_th = w1clipG_th_rev6;
15715                                         crsmin_th = crsminG_th_rev6;
15716                                         crsminl_th = crsminlG_th_rev6;
15717                                         crsminu_th = crsminuG_th_rev6;
15718                                         rssi_gain = rssi_gain_default;
15719                                 }
15720                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15721                                 lna1_gain_db = lna1G_gain_db_rev5;
15722                                 lna2_gain_db = lna2G_gain_db_rev5;
15723                                 if (pi->sh->boardflags & BFL_EXTLNA) {
15724
15725                                         rfseq_init_gain =
15726                                                 rfseqG_init_gain_rev5_elna;
15727                                         init_gaincode =
15728                                                 initG_gaincode_rev5_elna;
15729                                 } else {
15730                                         rfseq_init_gain = rfseqG_init_gain_rev5;
15731                                         init_gaincode = initG_gaincode_rev5;
15732                                 }
15733                                 clip1hi_gaincode = clip1hiG_gaincode_rev5;
15734                                 switch (triso) {
15735                                 case 0:
15736                                         clip1lo_gaincode =
15737                                                 clip1loG_gaincode_rev5[0];
15738                                         break;
15739                                 case 1:
15740                                         clip1lo_gaincode =
15741                                                 clip1loG_gaincode_rev5[1];
15742                                         break;
15743                                 case 2:
15744                                         clip1lo_gaincode =
15745                                                 clip1loG_gaincode_rev5[2];
15746                                         break;
15747                                 case 3:
15748
15749                                         clip1lo_gaincode =
15750                                                 clip1loG_gaincode_rev5[3];
15751                                         break;
15752                                 case 4:
15753                                         clip1lo_gaincode =
15754                                                 clip1loG_gaincode_rev5[4];
15755                                         break;
15756                                 case 5:
15757                                         clip1lo_gaincode =
15758                                                 clip1loG_gaincode_rev5[5];
15759                                         break;
15760                                 case 6:
15761                                         clip1lo_gaincode =
15762                                                 clip1loG_gaincode_rev5[6];
15763                                         break;
15764                                 case 7:
15765                                         clip1lo_gaincode =
15766                                                 clip1loG_gaincode_rev5[7];
15767                                         break;
15768                                 default:
15769                                         clip1lo_gaincode =
15770                                                 clip1loG_gaincode_rev5[3];
15771                                         break;
15772                                 }
15773                                 nbclip_th = nbclipG_th_rev5;
15774                                 w1clip_th = w1clipG_th_rev5;
15775                                 crsmin_th = crsminG_th_rev5;
15776                                 crsminl_th = crsminlG_th_rev5;
15777                                 crsminu_th = crsminuG_th_rev5;
15778                                 rssi_gain = rssi_gain_default;
15779                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15780                                 lna1_gain_db = lna1G_gain_db_rev4;
15781                                 lna2_gain_db = lna2G_gain_db;
15782                                 rfseq_init_gain = rfseqG_init_gain_rev4;
15783                                 init_gaincode = initG_gaincode_rev4;
15784                                 clip1hi_gaincode = clip1hiG_gaincode_rev4;
15785                                 clip1lo_gaincode = clip1loG_gaincode;
15786                                 nbclip_th = nbclipG_th_rev4;
15787                                 w1clip_th = w1clipG_th;
15788                                 crsmin_th = crsminG_th;
15789                                 crsminl_th = crsminlG_th;
15790                                 crsminu_th = crsminuG_th;
15791                                 rssi_gain = rssi_gain_default;
15792                         } else {
15793                                 lna1_gain_db = lna1G_gain_db;
15794                                 lna2_gain_db = lna2G_gain_db;
15795                                 rfseq_init_gain = rfseqG_init_gain;
15796                                 init_gaincode = initG_gaincode;
15797                                 clip1hi_gaincode = clip1hiG_gaincode;
15798                                 clip1lo_gaincode = clip1loG_gaincode;
15799                                 nbclip_th = nbclipG_th;
15800                                 w1clip_th = w1clipG_th;
15801                                 crsmin_th = crsminG_th;
15802                                 crsminl_th = crsminlG_th;
15803                                 crsminu_th = crsminuG_th;
15804                                 rssi_gain = rssi_gain_default;
15805                         }
15806                         tia_gain_db = tiaG_gain_db;
15807                         tia_gainbits = tiaG_gainbits;
15808                         clip1md_gaincode = clip1mdG_gaincode;
15809                 } else {
15810                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15811                                 lna1_gain_db = lna1A_gain_db_rev6;
15812                                 lna2_gain_db = lna2A_gain_db_rev6;
15813                                 tia_gain_db = tiaA_gain_db_rev6;
15814                                 tia_gainbits = tiaA_gainbits_rev6;
15815                                 rfseq_init_gain = rfseqA_init_gain_rev6;
15816                                 init_gaincode = initA_gaincode_rev6;
15817                                 clip1hi_gaincode = clip1hiA_gaincode_rev6;
15818                                 clip1md_gaincode = clip1mdA_gaincode_rev6;
15819                                 clip1lo_gaincode = clip1loA_gaincode_rev6;
15820                                 crsmin_th = crsminA_th_rev6;
15821                                 crsminl_th = crsminlA_th_rev6;
15822                                 if ((pi->pubpi.radiorev == 11) &&
15823                                     (CHSPEC_IS40(pi->radio_chanspec) == 0))
15824                                         crsminu_th = crsminuA_th_rev6_224B0;
15825                                 else
15826                                         crsminu_th = crsminuA_th_rev6;
15827
15828                                 nbclip_th = nbclipA_th_rev6;
15829                                 rssi_gain = rssiA_gain_rev6;
15830                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15831                                 lna1_gain_db = lna1A_gain_db_rev5;
15832                                 lna2_gain_db = lna2A_gain_db_rev5;
15833                                 tia_gain_db = tiaA_gain_db_rev5;
15834                                 tia_gainbits = tiaA_gainbits_rev5;
15835                                 rfseq_init_gain = rfseqA_init_gain_rev5;
15836                                 init_gaincode = initA_gaincode_rev5;
15837                                 clip1hi_gaincode = clip1hiA_gaincode_rev5;
15838                                 clip1md_gaincode = clip1mdA_gaincode_rev5;
15839                                 clip1lo_gaincode = clip1loA_gaincode_rev5;
15840                                 crsmin_th = crsminA_th_rev5;
15841                                 crsminl_th = crsminlA_th_rev5;
15842                                 crsminu_th = crsminuA_th_rev5;
15843                                 nbclip_th = nbclipA_th_rev5;
15844                                 rssi_gain = rssiA_gain_rev5;
15845                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15846                                 lna1_gain_db = lna1A_gain_db_rev4;
15847                                 lna2_gain_db = lna2A_gain_db_rev4;
15848                                 tia_gain_db = tiaA_gain_db_rev4;
15849                                 tia_gainbits = tiaA_gainbits_rev4;
15850                                 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15851
15852                                         rfseq_init_gain =
15853                                                 rfseqA_init_gain_rev4_elna;
15854                                         init_gaincode =
15855                                                 initA_gaincode_rev4_elna;
15856                                 } else {
15857                                         rfseq_init_gain = rfseqA_init_gain_rev4;
15858                                         init_gaincode = initA_gaincode_rev4;
15859                                 }
15860                                 clip1hi_gaincode = clip1hiA_gaincode_rev4;
15861                                 clip1md_gaincode = clip1mdA_gaincode_rev4;
15862                                 clip1lo_gaincode = clip1loA_gaincode_rev4;
15863                                 crsmin_th = crsminA_th_rev4;
15864                                 crsminl_th = crsminlA_th_rev4;
15865                                 crsminu_th = crsminuA_th_rev4;
15866                                 nbclip_th = nbclipA_th_rev4;
15867                                 rssi_gain = rssi_gain_default;
15868                         } else {
15869                                 lna1_gain_db = lna1A_gain_db;
15870                                 lna2_gain_db = lna2A_gain_db;
15871                                 tia_gain_db = tiaA_gain_db;
15872                                 tia_gainbits = tiaA_gainbits;
15873                                 rfseq_init_gain = rfseqA_init_gain;
15874                                 init_gaincode = initA_gaincode;
15875                                 clip1hi_gaincode = clip1hiA_gaincode;
15876                                 clip1md_gaincode = clip1mdA_gaincode;
15877                                 clip1lo_gaincode = clip1loA_gaincode;
15878                                 crsmin_th = crsminA_th;
15879                                 crsminl_th = crsminlA_th;
15880                                 crsminu_th = crsminuA_th;
15881                                 nbclip_th = nbclipA_th;
15882                                 rssi_gain = rssi_gain_default;
15883                         }
15884                         w1clip_th = w1clipA_th;
15885                 }
15886
15887                 write_radio_reg(pi,
15888                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15889                                  RADIO_2056_RX0), 0x17);
15890                 write_radio_reg(pi,
15891                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15892                                  RADIO_2056_RX1), 0x17);
15893
15894                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
15895                                 0xf0);
15896                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
15897                                 0xf0);
15898
15899                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
15900                                 0x0);
15901                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
15902                                 0x0);
15903
15904                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
15905                                 rssi_gain);
15906                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
15907                                 rssi_gain);
15908
15909                 write_radio_reg(pi,
15910                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15911                                  RADIO_2056_RX0), 0x17);
15912                 write_radio_reg(pi,
15913                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15914                                  RADIO_2056_RX1), 0x17);
15915
15916                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
15917                                 0xFF);
15918                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
15919                                 0xFF);
15920
15921                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
15922                                          8, lna1_gain_db);
15923                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
15924                                          8, lna1_gain_db);
15925
15926                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15927                                          8, lna2_gain_db);
15928                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15929                                          8, lna2_gain_db);
15930
15931                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
15932                                          8, tia_gain_db);
15933                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
15934                                          8, tia_gain_db);
15935
15936                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
15937                                          8, tia_gainbits);
15938                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
15939                                          8, tia_gainbits);
15940
15941                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
15942                                          8, &lpf_gain_db);
15943                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
15944                                          8, &lpf_gain_db);
15945                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
15946                                          8, &lpf_gainbits);
15947                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
15948                                          8, &lpf_gainbits);
15949
15950                 write_phy_reg(pi, 0x20, init_gaincode);
15951                 write_phy_reg(pi, 0x2a7, init_gaincode);
15952
15953                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15954                                          pi->pubpi.phy_corenum, 0x106, 16,
15955                                          rfseq_init_gain);
15956
15957                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15958                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15959
15960                 write_phy_reg(pi, 0x24, clip1md_gaincode);
15961                 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15962
15963                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15964                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15965
15966                 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
15967                 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15968                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15969
15970                 write_phy_reg(pi, 0x2b, nbclip_th);
15971                 write_phy_reg(pi, 0x41, nbclip_th);
15972
15973                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
15974                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
15975
15976                 write_phy_reg(pi, 0x150, 0x809c);
15977
15978         } else {
15979
15980                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15981                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15982
15983                 write_phy_reg(pi, 0x2b, 0x84);
15984                 write_phy_reg(pi, 0x41, 0x84);
15985
15986                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15987                         write_phy_reg(pi, 0x6b, 0x2b);
15988                         write_phy_reg(pi, 0x6c, 0x2b);
15989                         write_phy_reg(pi, 0x6d, 0x9);
15990                         write_phy_reg(pi, 0x6e, 0x9);
15991                 }
15992
15993                 w1th = NPHY_RSSICAL_W1_TARGET - 4;
15994                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
15995                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
15996
15997                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15998                         mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
15999                         mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16000
16001                         mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16002                         mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16003                 }
16004
16005                 write_phy_reg(pi, 0x150, 0x809c);
16006
16007                 if (pi->nphy_gain_boost)
16008                         if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16009                             (CHSPEC_IS40(pi->radio_chanspec)))
16010                                 hpf_code = 4;
16011                         else
16012                                 hpf_code = 5;
16013                 else if (CHSPEC_IS40(pi->radio_chanspec))
16014                         hpf_code = 6;
16015                 else
16016                         hpf_code = 7;
16017
16018                 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16019                 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16020
16021                 for (ctr = 0; ctr < 4; ctr++)
16022                         regval[ctr] = (hpf_code << 8) | 0x7c;
16023                 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16024
16025                 wlc_phy_adjust_lnagaintbl_nphy(pi);
16026
16027                 if (pi->nphy_elna_gain_config) {
16028                         regval[0] = 0;
16029                         regval[1] = 1;
16030                         regval[2] = 1;
16031                         regval[3] = 1;
16032                         wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16033                         wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16034
16035                         for (ctr = 0; ctr < 4; ctr++)
16036                                 regval[ctr] = (hpf_code << 8) | 0x74;
16037                         wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16038                 }
16039
16040                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16041                         for (ctr = 0; ctr < 21; ctr++)
16042                                 regval[ctr] = 3 * ctr;
16043                         wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16044                         wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16045
16046                         for (ctr = 0; ctr < 21; ctr++)
16047                                 regval[ctr] = (u16) ctr;
16048                         wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16049                         wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16050                 }
16051
16052                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16053                                        rfseq_updategainu_events,
16054                                        rfseq_updategainu_dlys,
16055                                        sizeof(rfseq_updategainu_events) /
16056                                        sizeof(rfseq_updategainu_events[0]));
16057
16058                 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16059
16060                 if (CHSPEC_IS2G(pi->radio_chanspec))
16061                         mod_phy_reg(pi,
16062                                     (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16063                                     0x7f, 0x4);
16064         }
16065 }
16066
16067 static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
16068 {
16069         u8 rfseq_rx2tx_events[] = {
16070                 NPHY_RFSEQ_CMD_NOP,
16071                 NPHY_RFSEQ_CMD_RXG_FBW,
16072                 NPHY_RFSEQ_CMD_TR_SWITCH,
16073                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16074                 NPHY_RFSEQ_CMD_RXPD_TXPD,
16075                 NPHY_RFSEQ_CMD_TX_GAIN,
16076                 NPHY_RFSEQ_CMD_EXT_PA
16077         };
16078         u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16079         u8 rfseq_tx2rx_events[] = {
16080                 NPHY_RFSEQ_CMD_NOP,
16081                 NPHY_RFSEQ_CMD_EXT_PA,
16082                 NPHY_RFSEQ_CMD_TX_GAIN,
16083                 NPHY_RFSEQ_CMD_RXPD_TXPD,
16084                 NPHY_RFSEQ_CMD_TR_SWITCH,
16085                 NPHY_RFSEQ_CMD_RXG_FBW,
16086                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16087         };
16088         u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16089         u8 rfseq_tx2rx_events_rev3[] = {
16090                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16091                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16092                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16093                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16094                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16095                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16096                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16097                 NPHY_REV3_RFSEQ_CMD_END
16098         };
16099         u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16100         u8 rfseq_rx2tx_events_rev3[] = {
16101                 NPHY_REV3_RFSEQ_CMD_NOP,
16102                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16103                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16104                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16105                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16106                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16107                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16108                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16109                 NPHY_REV3_RFSEQ_CMD_END
16110         };
16111         u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16112
16113         u8 rfseq_rx2tx_events_rev3_ipa[] = {
16114                 NPHY_REV3_RFSEQ_CMD_NOP,
16115                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16116                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16117                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16118                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16119                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16120                 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16121                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16122                 NPHY_REV3_RFSEQ_CMD_END
16123         };
16124         u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16125         u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16126
16127         s16 alpha0, alpha1, alpha2;
16128         s16 beta0, beta1, beta2;
16129         u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16130             stbc_data_weights;
16131         u8 chan_freq_range = 0;
16132         u16 dac_control = 0x0002;
16133         u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16134         u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16135         u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16136         u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16137         u16 *aux_adc_vmid;
16138         u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16139         u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16140         u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16141         u16 *aux_adc_gain;
16142         u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16143         u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16144         s32 min_nvar_val = 0x18d;
16145         s32 min_nvar_offset_6mbps = 20;
16146         u8 pdetrange;
16147         u8 triso;
16148         u16 regval;
16149         u16 afectrl_adc_ctrl1_rev7 = 0x20;
16150         u16 afectrl_adc_ctrl2_rev7 = 0x0;
16151         u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16152         u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16153         u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16154         u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16155         u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16156         u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16157         u16 ipalvlshift_3p3_war_en = 0;
16158         u16 rccal_bcap_val, rccal_scap_val;
16159         u16 rccal_tx20_11b_bcap = 0;
16160         u16 rccal_tx20_11b_scap = 0;
16161         u16 rccal_tx20_11n_bcap = 0;
16162         u16 rccal_tx20_11n_scap = 0;
16163         u16 rccal_tx40_11n_bcap = 0;
16164         u16 rccal_tx40_11n_scap = 0;
16165         u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16166         u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16167         u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16168         u16 tx_lpf_bw_ofdm_20mhz = 0;
16169         u16 tx_lpf_bw_ofdm_40mhz = 0;
16170         u16 tx_lpf_bw_11b = 0;
16171         u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16172         u16 txgm_idac_bleed = 0;
16173         bool rccal_ovrd = false;
16174         u16 freq;
16175         int coreNum;
16176
16177         if (CHSPEC_IS5G(pi->radio_chanspec))
16178                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
16179         else
16180                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
16181
16182         if (pi->phyhang_avoid)
16183                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
16184
16185         or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
16186
16187         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16188
16189                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16190                         mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16191
16192                         mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16193                         mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16194                         mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16195                         mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16196                         mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16197                         mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16198                         mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16199                         mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16200                         mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16201                         mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16202                         mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16203                         mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16204                         mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16205                         mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16206                         mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16207                         mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16208                 }
16209
16210                 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16211                         write_phy_reg(pi, 0x23f, 0x1b0);
16212                         write_phy_reg(pi, 0x240, 0x1b0);
16213                 }
16214
16215                 if (NREV_GE(pi->pubpi.phy_rev, 8))
16216                         mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16217
16218                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16219                                          &dac_control);
16220                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16221                                          &dac_control);
16222
16223                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16224                                         1, 0, 32, &leg_data_weights);
16225                 leg_data_weights = leg_data_weights & 0xffffff;
16226                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16227                                          1, 0, 32, &leg_data_weights);
16228
16229                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16230                                          2, 0x15e, 16,
16231                                          rfseq_rx2tx_dacbufpu_rev7);
16232                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16233                                          rfseq_rx2tx_dacbufpu_rev7);
16234
16235                 if (PHY_IPA(pi))
16236                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16237                                                rfseq_rx2tx_events_rev3_ipa,
16238                                                rfseq_rx2tx_dlys_rev3_ipa,
16239                                                ARRAY_SIZE(rfseq_rx2tx_events_rev3_ipa));
16240
16241                 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16242                 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16243
16244                 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16245                 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16246                 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16247
16248                 if (PHY_IPA(pi)) {
16249
16250                         if (((pi->pubpi.radiorev == 5)
16251                              && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16252                             || (pi->pubpi.radiorev == 7)
16253                             || (pi->pubpi.radiorev == 8)) {
16254
16255                                 rccal_bcap_val =
16256                                         read_radio_reg(
16257                                                 pi,
16258                                                 RADIO_2057_RCCAL_BCAP_VAL);
16259                                 rccal_scap_val =
16260                                         read_radio_reg(
16261                                                 pi,
16262                                                 RADIO_2057_RCCAL_SCAP_VAL);
16263
16264                                 rccal_tx20_11b_bcap = rccal_bcap_val;
16265                                 rccal_tx20_11b_scap = rccal_scap_val;
16266
16267                                 if ((pi->pubpi.radiorev == 5) &&
16268                                     (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16269
16270                                         rccal_tx20_11n_bcap = rccal_bcap_val;
16271                                         rccal_tx20_11n_scap = rccal_scap_val;
16272                                         rccal_tx40_11n_bcap = 0xc;
16273                                         rccal_tx40_11n_scap = 0xc;
16274
16275                                         rccal_ovrd = true;
16276
16277                                 } else if ((pi->pubpi.radiorev == 7)
16278                                            || (pi->pubpi.radiorev == 8)) {
16279
16280                                         tx_lpf_bw_ofdm_20mhz = 4;
16281                                         tx_lpf_bw_11b = 1;
16282
16283                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
16284                                                 rccal_tx20_11n_bcap = 0xc;
16285                                                 rccal_tx20_11n_scap = 0xc;
16286                                                 rccal_tx40_11n_bcap = 0xa;
16287                                                 rccal_tx40_11n_scap = 0xa;
16288                                         } else {
16289                                                 rccal_tx20_11n_bcap = 0x14;
16290                                                 rccal_tx20_11n_scap = 0x14;
16291                                                 rccal_tx40_11n_bcap = 0xf;
16292                                                 rccal_tx40_11n_scap = 0xf;
16293                                         }
16294
16295                                         rccal_ovrd = true;
16296                                 }
16297                         }
16298
16299                 } else {
16300
16301                         if (pi->pubpi.radiorev == 5) {
16302
16303                                 tx_lpf_bw_ofdm_20mhz = 1;
16304                                 tx_lpf_bw_ofdm_40mhz = 3;
16305
16306                                 rccal_bcap_val =
16307                                         read_radio_reg(
16308                                                 pi,
16309                                                 RADIO_2057_RCCAL_BCAP_VAL);
16310                                 rccal_scap_val =
16311                                         read_radio_reg(
16312                                                 pi,
16313                                                 RADIO_2057_RCCAL_SCAP_VAL);
16314
16315                                 rccal_tx20_11b_bcap = rccal_bcap_val;
16316                                 rccal_tx20_11b_scap = rccal_scap_val;
16317
16318                                 rccal_tx20_11n_bcap = 0x13;
16319                                 rccal_tx20_11n_scap = 0x11;
16320                                 rccal_tx40_11n_bcap = 0x13;
16321                                 rccal_tx40_11n_scap = 0x11;
16322
16323                                 rccal_ovrd = true;
16324                         }
16325                 }
16326
16327                 if (rccal_ovrd) {
16328
16329                         rx2tx_lpf_rc_lut_tx20_11b =
16330                                 (rccal_tx20_11b_bcap << 8) |
16331                                 (rccal_tx20_11b_scap << 3) |
16332                                 tx_lpf_bw_11b;
16333                         rx2tx_lpf_rc_lut_tx20_11n =
16334                                 (rccal_tx20_11n_bcap << 8) |
16335                                 (rccal_tx20_11n_scap << 3) |
16336                                 tx_lpf_bw_ofdm_20mhz;
16337                         rx2tx_lpf_rc_lut_tx40_11n =
16338                                 (rccal_tx40_11n_bcap << 8) |
16339                                 (rccal_tx40_11n_scap << 3) |
16340                                 tx_lpf_bw_ofdm_40mhz;
16341
16342                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16343                                 wlc_phy_table_write_nphy(
16344                                         pi, NPHY_TBL_ID_RFSEQ,
16345                                         1,
16346                                         0x152 + coreNum * 0x10,
16347                                         16,
16348                                         &rx2tx_lpf_rc_lut_tx20_11b);
16349                                 wlc_phy_table_write_nphy(
16350                                         pi, NPHY_TBL_ID_RFSEQ,
16351                                         1,
16352                                         0x153 + coreNum * 0x10,
16353                                         16,
16354                                         &rx2tx_lpf_rc_lut_tx20_11n);
16355                                 wlc_phy_table_write_nphy(
16356                                         pi, NPHY_TBL_ID_RFSEQ,
16357                                         1,
16358                                         0x154 + coreNum * 0x10,
16359                                         16,
16360                                         &rx2tx_lpf_rc_lut_tx20_11n);
16361                                 wlc_phy_table_write_nphy(
16362                                         pi, NPHY_TBL_ID_RFSEQ,
16363                                         1,
16364                                         0x155 + coreNum * 0x10,
16365                                         16,
16366                                         &rx2tx_lpf_rc_lut_tx40_11n);
16367                                 wlc_phy_table_write_nphy(
16368                                         pi, NPHY_TBL_ID_RFSEQ,
16369                                         1,
16370                                         0x156 + coreNum * 0x10,
16371                                         16,
16372                                         &rx2tx_lpf_rc_lut_tx40_11n);
16373                                 wlc_phy_table_write_nphy(
16374                                         pi, NPHY_TBL_ID_RFSEQ,
16375                                         1,
16376                                         0x157 + coreNum * 0x10,
16377                                         16,
16378                                         &rx2tx_lpf_rc_lut_tx40_11n);
16379                                 wlc_phy_table_write_nphy(
16380                                         pi, NPHY_TBL_ID_RFSEQ,
16381                                         1,
16382                                         0x158 + coreNum * 0x10,
16383                                         16,
16384                                         &rx2tx_lpf_rc_lut_tx40_11n);
16385                                 wlc_phy_table_write_nphy(
16386                                         pi, NPHY_TBL_ID_RFSEQ,
16387                                         1,
16388                                         0x159 + coreNum * 0x10,
16389                                         16,
16390                                         &rx2tx_lpf_rc_lut_tx40_11n);
16391                         }
16392
16393                         wlc_phy_rfctrl_override_nphy_rev7(
16394                                 pi, (0x1 << 4),
16395                                 1, 0x3, 0,
16396                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
16397                 }
16398
16399                 write_phy_reg(pi, 0x32f, 0x3);
16400
16401                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16402                         wlc_phy_rfctrl_override_nphy_rev7(
16403                                 pi, (0x1 << 2),
16404                                 1, 0x3, 0,
16405                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
16406
16407                 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16408                     (pi->pubpi.radiorev == 6)) {
16409                         if ((pi->sh->sromrev >= 8)
16410                             && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16411                                 ipalvlshift_3p3_war_en = 1;
16412
16413                         if (ipalvlshift_3p3_war_en) {
16414                                 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
16415                                                 0x5);
16416                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
16417                                                 0x30);
16418                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16419                                 or_radio_reg(pi,
16420                                              RADIO_2057_RXTXBIAS_CONFIG_CORE0,
16421                                              0x1);
16422                                 or_radio_reg(pi,
16423                                              RADIO_2057_RXTXBIAS_CONFIG_CORE1,
16424                                              0x1);
16425
16426                                 ipa2g_mainbias = 0x1f;
16427
16428                                 ipa2g_casconv = 0x6f;
16429
16430                                 ipa2g_biasfilt = 0xaa;
16431                         } else {
16432
16433                                 ipa2g_mainbias = 0x2b;
16434
16435                                 ipa2g_casconv = 0x7f;
16436
16437                                 ipa2g_biasfilt = 0xee;
16438                         }
16439
16440                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
16441                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16442                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16443                                                          coreNum, IPA2G_IMAIN,
16444                                                          ipa2g_mainbias);
16445                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16446                                                          coreNum, IPA2G_CASCONV,
16447                                                          ipa2g_casconv);
16448                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16449                                                          coreNum,
16450                                                          IPA2G_BIAS_FILTER,
16451                                                          ipa2g_biasfilt);
16452                                 }
16453                         }
16454                 }
16455
16456                 if (PHY_IPA(pi)) {
16457                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
16458                                 if ((pi->pubpi.radiorev == 3)
16459                                     || (pi->pubpi.radiorev == 4)
16460                                     || (pi->pubpi.radiorev == 6))
16461                                         txgm_idac_bleed = 0x7f;
16462
16463                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16464                                         if (txgm_idac_bleed != 0)
16465                                                 WRITE_RADIO_REG4(
16466                                                         pi, RADIO_2057,
16467                                                         CORE, coreNum,
16468                                                         TXGM_IDAC_BLEED,
16469                                                         txgm_idac_bleed);
16470                                 }
16471
16472                                 if (pi->pubpi.radiorev == 5) {
16473
16474                                         for (coreNum = 0; coreNum <= 1;
16475                                              coreNum++) {
16476                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16477                                                                  CORE, coreNum,
16478                                                                  IPA2G_CASCONV,
16479                                                                  0x13);
16480                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16481                                                                  CORE, coreNum,
16482                                                                  IPA2G_IMAIN,
16483                                                                  0x1f);
16484                                                 WRITE_RADIO_REG4(
16485                                                         pi, RADIO_2057,
16486                                                         CORE, coreNum,
16487                                                         IPA2G_BIAS_FILTER,
16488                                                         0xee);
16489                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16490                                                                  CORE, coreNum,
16491                                                                  PAD2G_IDACS,
16492                                                                  0x8a);
16493                                                 WRITE_RADIO_REG4(
16494                                                         pi, RADIO_2057,
16495                                                         CORE, coreNum,
16496                                                         PAD_BIAS_FILTER_BWS,
16497                                                         0x3e);
16498                                         }
16499
16500                                 } else if ((pi->pubpi.radiorev == 7)
16501                                            || (pi->pubpi.radiorev == 8)) {
16502
16503                                         if (CHSPEC_IS40(pi->radio_chanspec) ==
16504                                             0) {
16505                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16506                                                                  CORE, 0,
16507                                                                  IPA2G_IMAIN,
16508                                                                  0x14);
16509                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16510                                                                  CORE, 1,
16511                                                                  IPA2G_IMAIN,
16512                                                                  0x12);
16513                                         } else {
16514                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16515                                                                  CORE, 0,
16516                                                                  IPA2G_IMAIN,
16517                                                                  0x16);
16518                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16519                                                                  CORE, 1,
16520                                                                  IPA2G_IMAIN,
16521                                                                  0x16);
16522                                         }
16523                                 }
16524
16525                         } else {
16526                                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(
16527                                                         pi->radio_chanspec));
16528                                 if (((freq >= 5180) && (freq <= 5230))
16529                                     || ((freq >= 5745) && (freq <= 5805))) {
16530                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16531                                                          0, IPA5G_BIAS_FILTER,
16532                                                          0xff);
16533                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16534                                                          1, IPA5G_BIAS_FILTER,
16535                                                          0xff);
16536                                 }
16537                         }
16538                 } else {
16539
16540                         if (pi->pubpi.radiorev != 5) {
16541                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16542                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16543                                                          coreNum,
16544                                                          TXMIX2G_TUNE_BOOST_PU,
16545                                                          0x61);
16546                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16547                                                          coreNum,
16548                                                          TXGM_IDAC_BLEED, 0x70);
16549                                 }
16550                         }
16551                 }
16552
16553                 if (pi->pubpi.radiorev == 4) {
16554                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16555                                                  0x05, 16,
16556                                                  &afectrl_adc_ctrl1_rev7);
16557                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16558                                                  0x15, 16,
16559                                                  &afectrl_adc_ctrl1_rev7);
16560
16561                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16562                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16563                                                  AFE_VCM_CAL_MASTER, 0x0);
16564                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16565                                                  AFE_SET_VCM_I, 0x3f);
16566                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16567                                                  AFE_SET_VCM_Q, 0x3f);
16568                         }
16569                 } else {
16570                         mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16571                         mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16572                         mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16573                         mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16574
16575                         mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16576                         mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16577                         mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16578                         mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16579
16580                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16581                                                  0x05, 16,
16582                                                  &afectrl_adc_ctrl2_rev7);
16583                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16584                                                  0x15, 16,
16585                                                  &afectrl_adc_ctrl2_rev7);
16586
16587                         mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16588                         mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16589                         mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16590                         mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16591                 }
16592
16593                 write_phy_reg(pi, 0x6a, 0x2);
16594
16595                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16596                                          &min_nvar_offset_6mbps);
16597
16598                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16599                                          &rfseq_pktgn_lpf_hpc_rev7);
16600
16601                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16602                                          &rfseq_pktgn_lpf_h_hpc_rev7);
16603
16604                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16605                                          &rfseq_htpktgn_lpf_hpc_rev7);
16606
16607                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16608                                          &rfseq_cckpktgn_lpf_hpc_rev7);
16609
16610                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16611                                          &rfseq_tx2rx_lpf_h_hpc_rev7);
16612
16613                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16614                                          &rfseq_rx2tx_lpf_h_hpc_rev7);
16615
16616                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16617                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16618                                                  32, &min_nvar_val);
16619                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16620                                                  127, 32, &min_nvar_val);
16621                 } else {
16622                         min_nvar_val = noise_var_tbl_rev7[3];
16623                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16624                                                  32, &min_nvar_val);
16625
16626                         min_nvar_val = noise_var_tbl_rev7[127];
16627                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16628                                                  127, 32, &min_nvar_val);
16629                 }
16630
16631                 wlc_phy_workarounds_nphy_gainctrl(pi);
16632
16633                 pdetrange =
16634                         (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16635                         pdetrange : pi->srom_fem2g.pdetrange;
16636
16637                 if (pdetrange == 0) {
16638                         chan_freq_range =
16639                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16640                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16641                                 aux_adc_vmid_rev7_core0[3] = 0x70;
16642                                 aux_adc_vmid_rev7_core1[3] = 0x70;
16643                                 aux_adc_gain_rev7[3] = 2;
16644                         } else {
16645                                 aux_adc_vmid_rev7_core0[3] = 0x80;
16646                                 aux_adc_vmid_rev7_core1[3] = 0x80;
16647                                 aux_adc_gain_rev7[3] = 3;
16648                         }
16649                 } else if (pdetrange == 1) {
16650                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16651                                 aux_adc_vmid_rev7_core0[3] = 0x7c;
16652                                 aux_adc_vmid_rev7_core1[3] = 0x7c;
16653                                 aux_adc_gain_rev7[3] = 2;
16654                         } else {
16655                                 aux_adc_vmid_rev7_core0[3] = 0x8c;
16656                                 aux_adc_vmid_rev7_core1[3] = 0x8c;
16657                                 aux_adc_gain_rev7[3] = 1;
16658                         }
16659                 } else if (pdetrange == 2) {
16660                         if (pi->pubpi.radioid == BCM2057_ID) {
16661                                 if ((pi->pubpi.radiorev == 5)
16662                                     || (pi->pubpi.radiorev == 7)
16663                                     || (pi->pubpi.radiorev == 8)) {
16664                                         if (chan_freq_range ==
16665                                             WL_CHAN_FREQ_RANGE_2G) {
16666                                                 aux_adc_vmid_rev7_core0[3] =
16667                                                         0x8c;
16668                                                 aux_adc_vmid_rev7_core1[3] =
16669                                                         0x8c;
16670                                                 aux_adc_gain_rev7[3] = 0;
16671                                         } else {
16672                                                 aux_adc_vmid_rev7_core0[3] =
16673                                                         0x96;
16674                                                 aux_adc_vmid_rev7_core1[3] =
16675                                                         0x96;
16676                                                 aux_adc_gain_rev7[3] = 0;
16677                                         }
16678                                 }
16679                         }
16680
16681                 } else if (pdetrange == 3) {
16682                         if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16683                                 aux_adc_vmid_rev7_core0[3] = 0x89;
16684                                 aux_adc_vmid_rev7_core1[3] = 0x89;
16685                                 aux_adc_gain_rev7[3] = 0;
16686                         }
16687
16688                 } else if (pdetrange == 5) {
16689
16690                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16691                                 aux_adc_vmid_rev7_core0[3] = 0x80;
16692                                 aux_adc_vmid_rev7_core1[3] = 0x80;
16693                                 aux_adc_gain_rev7[3] = 3;
16694                         } else {
16695                                 aux_adc_vmid_rev7_core0[3] = 0x70;
16696                                 aux_adc_vmid_rev7_core1[3] = 0x70;
16697                                 aux_adc_gain_rev7[3] = 2;
16698                         }
16699                 }
16700
16701                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16702                                          &aux_adc_vmid_rev7_core0);
16703                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16704                                          &aux_adc_vmid_rev7_core1);
16705                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16706                                          &aux_adc_gain_rev7);
16707                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16708                                          &aux_adc_gain_rev7);
16709
16710         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16711
16712                 write_phy_reg(pi, 0x23f, 0x1f8);
16713                 write_phy_reg(pi, 0x240, 0x1f8);
16714
16715                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16716                                         1, 0, 32, &leg_data_weights);
16717                 leg_data_weights = leg_data_weights & 0xffffff;
16718                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16719                                          1, 0, 32, &leg_data_weights);
16720
16721                 alpha0 = 293;
16722                 alpha1 = 435;
16723                 alpha2 = 261;
16724                 beta0 = 366;
16725                 beta1 = 205;
16726                 beta2 = 32;
16727                 write_phy_reg(pi, 0x145, alpha0);
16728                 write_phy_reg(pi, 0x146, alpha1);
16729                 write_phy_reg(pi, 0x147, alpha2);
16730                 write_phy_reg(pi, 0x148, beta0);
16731                 write_phy_reg(pi, 0x149, beta1);
16732                 write_phy_reg(pi, 0x14a, beta2);
16733
16734                 write_phy_reg(pi, 0x38, 0xC);
16735                 write_phy_reg(pi, 0x2ae, 0xC);
16736
16737                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16738                                        rfseq_tx2rx_events_rev3,
16739                                        rfseq_tx2rx_dlys_rev3,
16740                                        ARRAY_SIZE(rfseq_tx2rx_events_rev3));
16741
16742                 if (PHY_IPA(pi))
16743                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16744                                                rfseq_rx2tx_events_rev3_ipa,
16745                                                rfseq_rx2tx_dlys_rev3_ipa,
16746                                                ARRAY_SIZE(rfseq_rx2tx_events_rev3_ipa));
16747
16748                 if ((pi->sh->hw_phyrxchain != 0x3) &&
16749                     (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16750
16751                         if (PHY_IPA(pi)) {
16752                                 rfseq_rx2tx_dlys_rev3[5] = 59;
16753                                 rfseq_rx2tx_dlys_rev3[6] = 1;
16754                                 rfseq_rx2tx_events_rev3[7] =
16755                                         NPHY_REV3_RFSEQ_CMD_END;
16756                         }
16757
16758                         wlc_phy_set_rfseq_nphy(
16759                                 pi, NPHY_RFSEQ_RX2TX,
16760                                 rfseq_rx2tx_events_rev3,
16761                                 rfseq_rx2tx_dlys_rev3,
16762                                 ARRAY_SIZE(rfseq_rx2tx_events_rev3));
16763                 }
16764
16765                 if (CHSPEC_IS2G(pi->radio_chanspec))
16766                         write_phy_reg(pi, 0x6a, 0x2);
16767                 else
16768                         write_phy_reg(pi, 0x6a, 0x9c40);
16769
16770                 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16771
16772                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16773                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16774                                                  32, &min_nvar_val);
16775                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16776                                                  127, 32, &min_nvar_val);
16777                 } else {
16778                         min_nvar_val = noise_var_tbl_rev3[3];
16779                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16780                                                  32, &min_nvar_val);
16781
16782                         min_nvar_val = noise_var_tbl_rev3[127];
16783                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16784                                                  127, 32, &min_nvar_val);
16785                 }
16786
16787                 wlc_phy_workarounds_nphy_gainctrl(pi);
16788
16789                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16790                                          &dac_control);
16791                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16792                                          &dac_control);
16793
16794                 pdetrange =
16795                         (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16796                         pdetrange : pi->srom_fem2g.pdetrange;
16797
16798                 if (pdetrange == 0) {
16799                         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16800                                 aux_adc_vmid = aux_adc_vmid_rev4;
16801                                 aux_adc_gain = aux_adc_gain_rev4;
16802                         } else {
16803                                 aux_adc_vmid = aux_adc_vmid_rev3;
16804                                 aux_adc_gain = aux_adc_gain_rev3;
16805                         }
16806                         chan_freq_range =
16807                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16808                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16809                                 switch (chan_freq_range) {
16810                                 case WL_CHAN_FREQ_RANGE_5GL:
16811                                         aux_adc_vmid[3] = 0x89;
16812                                         aux_adc_gain[3] = 0;
16813                                         break;
16814                                 case WL_CHAN_FREQ_RANGE_5GM:
16815                                         aux_adc_vmid[3] = 0x89;
16816                                         aux_adc_gain[3] = 0;
16817                                         break;
16818                                 case WL_CHAN_FREQ_RANGE_5GH:
16819                                         aux_adc_vmid[3] = 0x89;
16820                                         aux_adc_gain[3] = 0;
16821                                         break;
16822                                 default:
16823                                         break;
16824                                 }
16825                         }
16826                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16827                                                  0x08, 16, aux_adc_vmid);
16828                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16829                                                  0x18, 16, aux_adc_vmid);
16830                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16831                                                  0x0c, 16, aux_adc_gain);
16832                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16833                                                  0x1c, 16, aux_adc_gain);
16834                 } else if (pdetrange == 1) {
16835                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16836                                                  0x08, 16, sk_adc_vmid);
16837                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16838                                                  0x18, 16, sk_adc_vmid);
16839                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16840                                                  0x0c, 16, sk_adc_gain);
16841                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16842                                                  0x1c, 16, sk_adc_gain);
16843                 } else if (pdetrange == 2) {
16844
16845                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16846                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16847
16848                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16849                                 chan_freq_range =
16850                                         wlc_phy_get_chan_freq_range_nphy(pi, 0);
16851                                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16852                                         bcm_adc_vmid[3] = 0x8e;
16853                                         bcm_adc_gain[3] = 0x03;
16854                                 } else {
16855                                         bcm_adc_vmid[3] = 0x94;
16856                                         bcm_adc_gain[3] = 0x03;
16857                                 }
16858                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16859                                 bcm_adc_vmid[3] = 0x84;
16860                                 bcm_adc_gain[3] = 0x02;
16861                         }
16862
16863                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16864                                                  0x08, 16, bcm_adc_vmid);
16865                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16866                                                  0x18, 16, bcm_adc_vmid);
16867                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16868                                                  0x0c, 16, bcm_adc_gain);
16869                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16870                                                  0x1c, 16, bcm_adc_gain);
16871                 } else if (pdetrange == 3) {
16872                         chan_freq_range =
16873                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16874                         if ((NREV_GE(pi->pubpi.phy_rev, 4))
16875                             && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16876
16877                                 u16 auxadc_vmid[] = {
16878                                         0xa2, 0xb4, 0xb4, 0x270
16879                                 };
16880                                 u16 auxadc_gain[] = {
16881                                         0x02, 0x02, 0x02, 0x00
16882                                 };
16883
16884                                 wlc_phy_table_write_nphy(pi,
16885                                                          NPHY_TBL_ID_AFECTRL, 4,
16886                                                          0x08, 16, auxadc_vmid);
16887                                 wlc_phy_table_write_nphy(pi,
16888                                                          NPHY_TBL_ID_AFECTRL, 4,
16889                                                          0x18, 16, auxadc_vmid);
16890                                 wlc_phy_table_write_nphy(pi,
16891                                                          NPHY_TBL_ID_AFECTRL, 4,
16892                                                          0x0c, 16, auxadc_gain);
16893                                 wlc_phy_table_write_nphy(pi,
16894                                                          NPHY_TBL_ID_AFECTRL, 4,
16895                                                          0x1c, 16, auxadc_gain);
16896                         }
16897                 } else if ((pdetrange == 4) || (pdetrange == 5)) {
16898                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16899                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16900                         u16 Vmid[2], Av[2];
16901
16902                         chan_freq_range =
16903                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16904                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16905                                 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16906                                 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16907                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16908                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16909                         } else {
16910                                 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16911                                 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16912                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16913                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16914                         }
16915
16916                         bcm_adc_vmid[3] = Vmid[0];
16917                         bcm_adc_gain[3] = Av[0];
16918                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16919                                                  0x08, 16, bcm_adc_vmid);
16920                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16921                                                  0x0c, 16, bcm_adc_gain);
16922
16923                         bcm_adc_vmid[3] = Vmid[1];
16924                         bcm_adc_gain[3] = Av[1];
16925                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16926                                                  0x18, 16, bcm_adc_vmid);
16927                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16928                                                  0x1c, 16, bcm_adc_gain);
16929                 }
16930
16931                 write_radio_reg(pi,
16932                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
16933                                 0x0);
16934                 write_radio_reg(pi,
16935                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
16936                                 0x0);
16937
16938                 write_radio_reg(pi,
16939                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
16940                                 0x6);
16941                 write_radio_reg(pi,
16942                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
16943                                 0x6);
16944
16945                 write_radio_reg(pi,
16946                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
16947                                 0x7);
16948                 write_radio_reg(pi,
16949                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
16950                                 0x7);
16951
16952                 write_radio_reg(pi,
16953                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
16954                                 0x88);
16955                 write_radio_reg(pi,
16956                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
16957                                 0x88);
16958
16959                 write_radio_reg(pi,
16960                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
16961                                 0x0);
16962                 write_radio_reg(pi,
16963                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
16964                                 0x0);
16965
16966                 write_radio_reg(pi,
16967                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
16968                                 0x0);
16969                 write_radio_reg(pi,
16970                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
16971                                 0x0);
16972
16973                 triso =
16974                         (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16975                         triso : pi->srom_fem2g.triso;
16976                 if (triso == 7) {
16977                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16978                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16979                 }
16980
16981                 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16982
16983                 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16984                      (CHSPEC_IS5G(pi->radio_chanspec))) ||
16985                     (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16986                       (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16987                      (CHSPEC_IS2G(pi->radio_chanspec)))) {
16988                         nss1_data_weights = 0x00088888;
16989                         ht_data_weights = 0x00088888;
16990                         stbc_data_weights = 0x00088888;
16991                 } else {
16992                         nss1_data_weights = 0x88888888;
16993                         ht_data_weights = 0x88888888;
16994                         stbc_data_weights = 0x88888888;
16995                 }
16996                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16997                                          1, 1, 32, &nss1_data_weights);
16998                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16999                                          1, 2, 32, &ht_data_weights);
17000                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17001                                          1, 3, 32, &stbc_data_weights);
17002
17003                 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17004                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
17005                                 write_radio_reg(pi,
17006                                                 RADIO_2056_TX_GMBB_IDAC |
17007                                                 RADIO_2056_TX0, 0x70);
17008                                 write_radio_reg(pi,
17009                                                 RADIO_2056_TX_GMBB_IDAC |
17010                                                 RADIO_2056_TX1, 0x70);
17011                         }
17012                 }
17013
17014                 if (!pi->edcrs_threshold_lock) {
17015                         write_phy_reg(pi, 0x224, 0x3eb);
17016                         write_phy_reg(pi, 0x225, 0x3eb);
17017                         write_phy_reg(pi, 0x226, 0x341);
17018                         write_phy_reg(pi, 0x227, 0x341);
17019                         write_phy_reg(pi, 0x228, 0x42b);
17020                         write_phy_reg(pi, 0x229, 0x42b);
17021                         write_phy_reg(pi, 0x22a, 0x381);
17022                         write_phy_reg(pi, 0x22b, 0x381);
17023                         write_phy_reg(pi, 0x22c, 0x42b);
17024                         write_phy_reg(pi, 0x22d, 0x42b);
17025                         write_phy_reg(pi, 0x22e, 0x381);
17026                         write_phy_reg(pi, 0x22f, 0x381);
17027                 }
17028
17029                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
17030
17031                         if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
17032                                 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
17033                                               MHF4_BPHY_TXCORE0,
17034                                               MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
17035                 }
17036         } else {
17037
17038                 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
17039                     (pi->sh->boardtype == 0x8b)) {
17040                         uint i;
17041                         u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
17042                         for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
17043                                 rfseq_rx2tx_dlys[i] = war_dlys[i];
17044                 }
17045
17046                 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
17047                         and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
17048                         and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
17049                 } else {
17050                         or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
17051                         or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
17052                 }
17053
17054                 regval = 0x000a;
17055                 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
17056                 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
17057
17058                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17059                         regval = 0xcdaa;
17060                         wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
17061                         wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
17062                 }
17063
17064                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17065                         regval = 0x0000;
17066                         wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
17067                         wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
17068
17069                         regval = 0x7aab;
17070                         wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
17071                         wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
17072
17073                         regval = 0x0800;
17074                         wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
17075                         wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
17076                 }
17077
17078                 write_phy_reg(pi, 0xf8, 0x02d8);
17079                 write_phy_reg(pi, 0xf9, 0x0301);
17080                 write_phy_reg(pi, 0xfa, 0x02d8);
17081                 write_phy_reg(pi, 0xfb, 0x0301);
17082
17083                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
17084                                        rfseq_rx2tx_dlys,
17085                                        ARRAY_SIZE(rfseq_rx2tx_events));
17086
17087                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
17088                                        rfseq_tx2rx_dlys,
17089                                        ARRAY_SIZE(rfseq_tx2rx_events));
17090
17091                 wlc_phy_workarounds_nphy_gainctrl(pi);
17092
17093                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17094
17095                         if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
17096                                 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
17097                                                MHF3_NPHY_MLADV_WAR,
17098                                                MHF3_NPHY_MLADV_WAR,
17099                                                BRCM_BAND_ALL);
17100
17101                 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
17102                         write_phy_reg(pi, 0x1e3, 0x0);
17103                         write_phy_reg(pi, 0x1e4, 0x0);
17104                 }
17105
17106                 if (NREV_LT(pi->pubpi.phy_rev, 2))
17107                         mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
17108
17109                 alpha0 = 293;
17110                 alpha1 = 435;
17111                 alpha2 = 261;
17112                 beta0 = 366;
17113                 beta1 = 205;
17114                 beta2 = 32;
17115                 write_phy_reg(pi, 0x145, alpha0);
17116                 write_phy_reg(pi, 0x146, alpha1);
17117                 write_phy_reg(pi, 0x147, alpha2);
17118                 write_phy_reg(pi, 0x148, beta0);
17119                 write_phy_reg(pi, 0x149, beta1);
17120                 write_phy_reg(pi, 0x14a, beta2);
17121
17122                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17123                         mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17124
17125                         write_phy_reg(pi, 0x192, 0xb5);
17126                         write_phy_reg(pi, 0x193, 0xa4);
17127                         write_phy_reg(pi, 0x194, 0x0);
17128                 }
17129
17130                 if (NREV_IS(pi->pubpi.phy_rev, 2))
17131                         mod_phy_reg(pi, 0x221,
17132                                     NPHY_FORCESIG_DECODEGATEDCLKS,
17133                                     NPHY_FORCESIG_DECODEGATEDCLKS);
17134         }
17135
17136         if (pi->phyhang_avoid)
17137                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17138 }
17139
17140 static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17141 {
17142         int j, type = 2;
17143         u16 addr_offset = 0x2c5;
17144
17145         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17146                 write_phy_reg(pi, addr_offset + j,
17147                               NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17148 }
17149
17150 static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17151 {
17152
17153         if (write == 0) {
17154                 vals[0] = read_phy_reg(pi, 0x2c);
17155                 vals[1] = read_phy_reg(pi, 0x42);
17156         } else {
17157                 write_phy_reg(pi, 0x2c, vals[0]);
17158                 write_phy_reg(pi, 0x42, vals[1]);
17159         }
17160 }
17161
17162 static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17163 {
17164         u8 core;
17165
17166         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17167                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17168                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17169                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17170                                                  TX_SSI_MASTER, 0x5);
17171                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17172                                                  TX_SSI_MUX, 0xe);
17173
17174                                 if (pi->pubpi.radiorev != 5)
17175                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17176                                                          core, TSSIA, 0);
17177
17178                                 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17179                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17180                                                          core, TSSIG, 0x1);
17181                                 else
17182                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17183                                                          core, TSSIG, 0x31);
17184                         } else {
17185                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17186                                                  TX_SSI_MASTER, 0x9);
17187                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17188                                                  TX_SSI_MUX, 0xc);
17189                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17190                                                  TSSIG, 0);
17191
17192                                 if (pi->pubpi.radiorev != 5) {
17193                                         if (!NREV_IS(pi->pubpi.phy_rev, 7))
17194                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17195                                                                  TX, core,
17196                                                                  TSSIA, 0x1);
17197                                         else
17198                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17199                                                                  TX, core,
17200                                                                  TSSIA, 0x31);
17201                                 }
17202                         }
17203                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17204                                          0);
17205                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17206                                          0);
17207                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17208                                          0x3);
17209                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17210                                          0x0);
17211                 }
17212         } else {
17213                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17214                                 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17215                                 0x80);
17216                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17217                 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17218
17219                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17220                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17221                                          0x0);
17222                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17223                                          0x0);
17224                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17225                                          0x3);
17226                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17227                                          0x0);
17228                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17229                                          0x8);
17230                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17231                                          0x0);
17232                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17233                                          0x0);
17234
17235                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17236                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17237                                                  TX_SSI_MASTER, 0x5);
17238
17239                                 if (pi->pubpi.radiorev != 5)
17240                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17241                                                          core, TSSIA, 0x0);
17242                                 if (NREV_GE(pi->pubpi.phy_rev, 5))
17243                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17244                                                          core, TSSIG, 0x31);
17245                                 else
17246                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17247                                                          core, TSSIG, 0x11);
17248                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17249                                                  TX_SSI_MUX, 0xe);
17250                         } else {
17251                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17252                                                  TX_SSI_MASTER, 0x9);
17253                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17254                                                  TSSIA, 0x31);
17255                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17256                                                  TSSIG, 0x0);
17257                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17258                                                  TX_SSI_MUX, 0xc);
17259                         }
17260                 }
17261         }
17262 }
17263
17264 static void
17265 wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17266                              u8 core_mask, u8 off)
17267 {
17268         u8 core_num;
17269         u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17270                 0, val_mask = 0;
17271         u8 shift = 0, val_shift = 0;
17272
17273         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17274
17275                 en_mask = field;
17276                 for (core_num = 0; core_num < 2; core_num++) {
17277
17278                         switch (field) {
17279                         case (0x1 << 1):
17280                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17281                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17282                                 val_mask = (0x1 << 0);
17283                                 val_shift = 0;
17284                                 break;
17285                         case (0x1 << 2):
17286                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17287                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17288                                 val_mask = (0x1 << 1);
17289                                 val_shift = 1;
17290                                 break;
17291                         case (0x1 << 3):
17292                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17293                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17294                                 val_mask = (0x1 << 2);
17295                                 val_shift = 2;
17296                                 break;
17297                         case (0x1 << 4):
17298                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17299                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17300                                 val_mask = (0x1 << 4);
17301                                 val_shift = 4;
17302                                 break;
17303                         case (0x1 << 5):
17304                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17305                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17306                                 val_mask = (0x1 << 5);
17307                                 val_shift = 5;
17308                                 break;
17309                         case (0x1 << 6):
17310                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17311                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17312                                 val_mask = (0x1 << 6);
17313                                 val_shift = 6;
17314                                 break;
17315                         case (0x1 << 7):
17316                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17317                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17318                                 val_mask = (0x1 << 7);
17319                                 val_shift = 7;
17320                                 break;
17321                         case (0x1 << 8):
17322                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17323                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17324                                 val_mask = (0x7 << 8);
17325                                 val_shift = 8;
17326                                 break;
17327                         case (0x1 << 11):
17328                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17329                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17330                                 val_mask = (0x7 << 13);
17331                                 val_shift = 13;
17332                                 break;
17333
17334                         case (0x1 << 9):
17335                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17336                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17337                                 val_mask = (0x7 << 0);
17338                                 val_shift = 0;
17339                                 break;
17340
17341                         case (0x1 << 10):
17342                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17343                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17344                                 val_mask = (0x7 << 4);
17345                                 val_shift = 4;
17346                                 break;
17347
17348                         case (0x1 << 12):
17349                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17350                                 val_addr = (core_num == 0) ? 0x7b : 0x7e;
17351                                 val_mask = (0xffff << 0);
17352                                 val_shift = 0;
17353                                 break;
17354                         case (0x1 << 13):
17355                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17356                                 val_addr = (core_num == 0) ? 0x7c : 0x7f;
17357                                 val_mask = (0xffff << 0);
17358                                 val_shift = 0;
17359                                 break;
17360                         case (0x1 << 14):
17361                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17362                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17363                                 val_mask = (0x3 << 6);
17364                                 val_shift = 6;
17365                                 break;
17366                         case (0x1 << 0):
17367                                 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17368                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17369                                 val_mask = (0x1 << 15);
17370                                 val_shift = 15;
17371                                 break;
17372                         default:
17373                                 addr = 0xffff;
17374                                 break;
17375                         }
17376
17377                         if (off) {
17378                                 and_phy_reg(pi, en_addr, ~en_mask);
17379                                 and_phy_reg(pi, val_addr, ~val_mask);
17380                         } else {
17381
17382                                 if ((core_mask == 0)
17383                                     || (core_mask & (1 << core_num))) {
17384                                         or_phy_reg(pi, en_addr, en_mask);
17385
17386                                         if (addr != 0xffff)
17387                                                 mod_phy_reg(pi, val_addr,
17388                                                             val_mask,
17389                                                             (value <<
17390                                                              val_shift));
17391                                 }
17392                         }
17393                 }
17394         } else {
17395
17396                 if (off) {
17397                         and_phy_reg(pi, 0xec, ~field);
17398                         value = 0x0;
17399                 } else {
17400                         or_phy_reg(pi, 0xec, field);
17401                 }
17402
17403                 for (core_num = 0; core_num < 2; core_num++) {
17404
17405                         switch (field) {
17406                         case (0x1 << 1):
17407                         case (0x1 << 9):
17408                         case (0x1 << 12):
17409                         case (0x1 << 13):
17410                         case (0x1 << 14):
17411                                 addr = 0x78;
17412
17413                                 core_mask = 0x1;
17414                                 break;
17415                         case (0x1 << 2):
17416                         case (0x1 << 3):
17417                         case (0x1 << 4):
17418                         case (0x1 << 5):
17419                         case (0x1 << 6):
17420                         case (0x1 << 7):
17421                         case (0x1 << 8):
17422                                 addr = (core_num == 0) ? 0x7a : 0x7d;
17423                                 break;
17424                         case (0x1 << 10):
17425                                 addr = (core_num == 0) ? 0x7b : 0x7e;
17426                                 break;
17427                         case (0x1 << 11):
17428                                 addr = (core_num == 0) ? 0x7c : 0x7f;
17429                                 break;
17430                         default:
17431                                 addr = 0xffff;
17432                         }
17433
17434                         switch (field) {
17435                         case (0x1 << 1):
17436                                 mask = (0x7 << 3);
17437                                 shift = 3;
17438                                 break;
17439                         case (0x1 << 9):
17440                                 mask = (0x1 << 2);
17441                                 shift = 2;
17442                                 break;
17443                         case (0x1 << 12):
17444                                 mask = (0x1 << 8);
17445                                 shift = 8;
17446                                 break;
17447                         case (0x1 << 13):
17448                                 mask = (0x1 << 9);
17449                                 shift = 9;
17450                                 break;
17451                         case (0x1 << 14):
17452                                 mask = (0xf << 12);
17453                                 shift = 12;
17454                                 break;
17455                         case (0x1 << 2):
17456                                 mask = (0x1 << 0);
17457                                 shift = 0;
17458                                 break;
17459                         case (0x1 << 3):
17460                                 mask = (0x1 << 1);
17461                                 shift = 1;
17462                                 break;
17463                         case (0x1 << 4):
17464                                 mask = (0x1 << 2);
17465                                 shift = 2;
17466                                 break;
17467                         case (0x1 << 5):
17468                                 mask = (0x3 << 4);
17469                                 shift = 4;
17470                                 break;
17471                         case (0x1 << 6):
17472                                 mask = (0x3 << 6);
17473                                 shift = 6;
17474                                 break;
17475                         case (0x1 << 7):
17476                                 mask = (0x1 << 8);
17477                                 shift = 8;
17478                                 break;
17479                         case (0x1 << 8):
17480                                 mask = (0x1 << 9);
17481                                 shift = 9;
17482                                 break;
17483                         case (0x1 << 10):
17484                                 mask = 0x1fff;
17485                                 shift = 0x0;
17486                                 break;
17487                         case (0x1 << 11):
17488                                 mask = 0x1fff;
17489                                 shift = 0x0;
17490                                 break;
17491                         default:
17492                                 mask = 0x0;
17493                                 shift = 0x0;
17494                                 break;
17495                         }
17496
17497                         if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17498                                 mod_phy_reg(pi, addr, mask, (value << shift));
17499                 }
17500
17501                 or_phy_reg(pi, 0xec, (0x1 << 0));
17502                 or_phy_reg(pi, 0x78, (0x1 << 0));
17503                 udelay(1);
17504                 and_phy_reg(pi, 0xec, ~(0x1 << 0));
17505         }
17506 }
17507
17508 static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17509 {
17510         s32 rssi_buf[4];
17511         s32 int_val;
17512
17513         if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17514
17515                 return;
17516
17517         if (PHY_IPA(pi))
17518                 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17519
17520         if (NREV_GE(pi->pubpi.phy_rev, 7))
17521                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17522                                                   0, 0x3, 0,
17523                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
17524         else if (NREV_GE(pi->pubpi.phy_rev, 3))
17525                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17526
17527         wlc_phy_stopplayback_nphy(pi);
17528
17529         wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17530
17531         udelay(20);
17532         int_val =
17533                 wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17534                                        1);
17535         wlc_phy_stopplayback_nphy(pi);
17536         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17537
17538         if (NREV_GE(pi->pubpi.phy_rev, 7))
17539                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17540                                                   0, 0x3, 1,
17541                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
17542         else if (NREV_GE(pi->pubpi.phy_rev, 3))
17543                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17544
17545         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17546
17547                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17548                         (u8) ((int_val >> 24) & 0xff);
17549                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17550                         (u8) ((int_val >> 24) & 0xff);
17551
17552                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17553                         (u8) ((int_val >> 8) & 0xff);
17554                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17555                         (u8) ((int_val >> 8) & 0xff);
17556         } else {
17557                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17558                         (u8) ((int_val >> 24) & 0xff);
17559
17560                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17561                         (u8) ((int_val >> 8) & 0xff);
17562
17563                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17564                         (u8) ((int_val >> 16) & 0xff);
17565                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17566                         (u8) ((int_val) & 0xff);
17567         }
17568
17569 }
17570
17571 static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17572 {
17573         u8 idx, idx2, i, delta_ind;
17574
17575         for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17576                 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17577
17578         for (i = 0; i < 4; i++) {
17579                 idx2 = 0;
17580
17581                 delta_ind = 0;
17582
17583                 switch (i) {
17584                 case 0:
17585
17586                         if (CHSPEC_IS40(pi->radio_chanspec)
17587                             && NPHY_IS_SROM_REINTERPRET) {
17588                                 idx = TXP_FIRST_MCS_40_SISO;
17589                         } else {
17590                                 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17591                                       TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17592                                 delta_ind = 1;
17593                         }
17594                         break;
17595
17596                 case 1:
17597
17598                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17599                               TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17600                         break;
17601
17602                 case 2:
17603
17604                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17605                               TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17606                         break;
17607
17608                 case 3:
17609
17610                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17611                               TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17612                         break;
17613                 }
17614
17615                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17616                         pi->tx_power_offset[idx];
17617                 idx = idx + delta_ind;
17618                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17619                         pi->tx_power_offset[idx];
17620                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17621                         pi->tx_power_offset[idx];
17622                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17623                         pi->tx_power_offset[idx++];
17624
17625                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17626                         pi->tx_power_offset[idx++];
17627                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17628                         pi->tx_power_offset[idx];
17629                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17630                         pi->tx_power_offset[idx];
17631                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17632                         pi->tx_power_offset[idx++];
17633
17634                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17635                         pi->tx_power_offset[idx++];
17636                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17637                         pi->tx_power_offset[idx];
17638                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17639                         pi->tx_power_offset[idx];
17640                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17641                         pi->tx_power_offset[idx++];
17642
17643                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17644                         pi->tx_power_offset[idx];
17645                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17646                         pi->tx_power_offset[idx++];
17647                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17648                         pi->tx_power_offset[idx];
17649                 idx = idx + 1 - delta_ind;
17650                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17651                         pi->tx_power_offset[idx];
17652
17653                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17654                         pi->tx_power_offset[idx];
17655                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17656                         pi->tx_power_offset[idx];
17657                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17658                         pi->tx_power_offset[idx];
17659                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17660                         pi->tx_power_offset[idx];
17661         }
17662 }
17663
17664 static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17665 {
17666         u32 idx;
17667         s16 a1[2], b0[2], b1[2];
17668         s8 target_pwr_qtrdbm[2];
17669         s32 num, den, pwr_est;
17670         u8 chan_freq_range;
17671         u8 idle_tssi[2];
17672         u32 tbl_id, tbl_len, tbl_offset;
17673         u32 regval[64];
17674         u8 core;
17675
17676         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17677                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17678                 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17679                 udelay(1);
17680         }
17681
17682         if (pi->phyhang_avoid)
17683                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17684
17685         or_phy_reg(pi, 0x122, (0x1 << 0));
17686
17687         if (NREV_GE(pi->pubpi.phy_rev, 3))
17688                 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17689         else
17690                 or_phy_reg(pi, 0x1e7, (0x1 << 15));
17691
17692         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17693                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17694
17695         if (pi->sh->sromrev < 4) {
17696                 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17697                 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17698                 a1[0] = -424;
17699                 a1[1] = -424;
17700                 b0[0] = 5612;
17701                 b0[1] = 5612;
17702                 b1[1] = -1393;
17703                 b1[0] = -1393;
17704         } else {
17705
17706                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17707                 switch (chan_freq_range) {
17708                 case WL_CHAN_FREQ_RANGE_2G:
17709                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17710                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17711                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17712                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17713                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17714                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17715                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17716                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17717                         break;
17718                 case WL_CHAN_FREQ_RANGE_5GL:
17719                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17720                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17721                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17722                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17723                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17724                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17725                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17726                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17727                         break;
17728                 case WL_CHAN_FREQ_RANGE_5GM:
17729                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17730                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17731                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17732                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17733                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17734                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17735                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17736                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17737                         break;
17738                 case WL_CHAN_FREQ_RANGE_5GH:
17739                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17740                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17741                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17742                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17743                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17744                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17745                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17746                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17747                         break;
17748                 default:
17749                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17750                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17751                         a1[0] = -424;
17752                         a1[1] = -424;
17753                         b0[0] = 5612;
17754                         b0[1] = 5612;
17755                         b1[1] = -1393;
17756                         b1[0] = -1393;
17757                         break;
17758                 }
17759         }
17760
17761         /* use the provided transmit power */
17762         target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17763         target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17764
17765         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17766                 if (pi->srom_fem2g.tssipos)
17767                         or_phy_reg(pi, 0x1e9, (0x1 << 14));
17768
17769                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17770                         for (core = 0; core <= 1; core++) {
17771                                 if (PHY_IPA(pi)) {
17772                                         if (CHSPEC_IS2G(pi->radio_chanspec))
17773                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17774                                                                  TX, core,
17775                                                                  TX_SSI_MUX,
17776                                                                  0xe);
17777                                         else
17778                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17779                                                                  TX, core,
17780                                                                  TX_SSI_MUX,
17781                                                                  0xc);
17782                                 }
17783                         }
17784                 } else {
17785                         if (PHY_IPA(pi)) {
17786
17787                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17788                                                 RADIO_2056_TX0,
17789                                                 (CHSPEC_IS5G
17790                                                  (pi->radio_chanspec)) ?
17791                                                  0xc : 0xe);
17792                                 write_radio_reg(pi,
17793                                                 RADIO_2056_TX_TX_SSI_MUX |
17794                                                 RADIO_2056_TX1,
17795                                                 (CHSPEC_IS5G
17796                                                  (pi->radio_chanspec)) ?
17797                                                  0xc : 0xe);
17798                         } else {
17799
17800                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17801                                                 RADIO_2056_TX0, 0x11);
17802                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17803                                                 RADIO_2056_TX1, 0x11);
17804                         }
17805                 }
17806         }
17807
17808         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17809                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17810                 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17811                 udelay(1);
17812         }
17813
17814         if (NREV_GE(pi->pubpi.phy_rev, 7))
17815                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17816                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17817         else
17818                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17819                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17820
17821         if (NREV_GE(pi->pubpi.phy_rev, 7))
17822                 mod_phy_reg(pi, 0x222, (0xff << 0),
17823                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17824         else if (NREV_GT(pi->pubpi.phy_rev, 1))
17825                 mod_phy_reg(pi, 0x222, (0xff << 0),
17826                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17827
17828         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17829                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17830
17831         write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17832
17833         write_phy_reg(pi, 0x1e9,
17834                       (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17835
17836         write_phy_reg(pi, 0x1ea,
17837                       (target_pwr_qtrdbm[0] << 0) |
17838                       (target_pwr_qtrdbm[1] << 8));
17839
17840         tbl_len = 64;
17841         tbl_offset = 0;
17842         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17843              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17844
17845                 for (idx = 0; idx < tbl_len; idx++) {
17846                         num = 8 *
17847                               (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17848                         den = 32768 + a1[tbl_id - 26] * idx;
17849                         pwr_est = max(((4 * num + den / 2) / den), -8);
17850                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17851                                 if (idx <=
17852                                     (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17853                                         pwr_est =
17854                                                 max(pwr_est,
17855                                                     target_pwr_qtrdbm
17856                                                     [tbl_id - 26] + 1);
17857                         }
17858                         regval[idx] = (u32) pwr_est;
17859                 }
17860                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
17861                                          regval);
17862         }
17863
17864         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
17865         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
17866                                  pi->adj_pwr_tbl_nphy);
17867         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
17868                                  pi->adj_pwr_tbl_nphy);
17869
17870         if (pi->phyhang_avoid)
17871                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17872 }
17873
17874 static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
17875 {
17876         u32 *tx_pwrctrl_tbl = NULL;
17877
17878         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17879                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17880                         if ((pi->pubpi.radiorev == 4)
17881                             || (pi->pubpi.radiorev == 6))
17882                                 tx_pwrctrl_tbl =
17883                                         nphy_tpc_txgain_ipa_2g_2057rev4n6;
17884                         else if (pi->pubpi.radiorev == 3)
17885                                 tx_pwrctrl_tbl =
17886                                         nphy_tpc_txgain_ipa_2g_2057rev3;
17887                         else if (pi->pubpi.radiorev == 5)
17888                                 tx_pwrctrl_tbl =
17889                                         nphy_tpc_txgain_ipa_2g_2057rev5;
17890                         else if ((pi->pubpi.radiorev == 7)
17891                                  || (pi->pubpi.radiorev == 8))
17892                                 tx_pwrctrl_tbl =
17893                                         nphy_tpc_txgain_ipa_2g_2057rev7;
17894                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
17895                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
17896                         if (pi->sh->chip == BCMA_CHIP_ID_BCM47162)
17897                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17898                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17899                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17900                 } else {
17901                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
17902                 }
17903         } else {
17904
17905                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17906                         if ((pi->pubpi.radiorev == 3) ||
17907                             (pi->pubpi.radiorev == 4) ||
17908                             (pi->pubpi.radiorev == 6))
17909                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
17910                         else if ((pi->pubpi.radiorev == 7)
17911                                  || (pi->pubpi.radiorev == 8))
17912                                 tx_pwrctrl_tbl =
17913                                         nphy_tpc_txgain_ipa_5g_2057rev7;
17914                 } else {
17915                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
17916                 }
17917         }
17918
17919         return tx_pwrctrl_tbl;
17920 }
17921
17922 static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
17923 {
17924         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17925                 if (pi->nphy_rssical_chanspec_2G == 0)
17926                         return;
17927
17928                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17929                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17930                                       RADIO_2057_VCM_MASK,
17931                                       pi->rssical_cache.
17932                                       rssical_radio_regs_2G[0]);
17933                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17934                                       RADIO_2057_VCM_MASK,
17935                                       pi->rssical_cache.
17936                                       rssical_radio_regs_2G[1]);
17937                 } else {
17938                         mod_radio_reg(pi,
17939                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17940                                       RADIO_2056_VCM_MASK,
17941                                       pi->rssical_cache.
17942                                       rssical_radio_regs_2G[0]);
17943                         mod_radio_reg(pi,
17944                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17945                                       RADIO_2056_VCM_MASK,
17946                                       pi->rssical_cache.
17947                                       rssical_radio_regs_2G[1]);
17948                 }
17949
17950                 write_phy_reg(pi, 0x1a6,
17951                               pi->rssical_cache.rssical_phyregs_2G[0]);
17952                 write_phy_reg(pi, 0x1ac,
17953                               pi->rssical_cache.rssical_phyregs_2G[1]);
17954                 write_phy_reg(pi, 0x1b2,
17955                               pi->rssical_cache.rssical_phyregs_2G[2]);
17956                 write_phy_reg(pi, 0x1b8,
17957                               pi->rssical_cache.rssical_phyregs_2G[3]);
17958                 write_phy_reg(pi, 0x1a4,
17959                               pi->rssical_cache.rssical_phyregs_2G[4]);
17960                 write_phy_reg(pi, 0x1aa,
17961                               pi->rssical_cache.rssical_phyregs_2G[5]);
17962                 write_phy_reg(pi, 0x1b0,
17963                               pi->rssical_cache.rssical_phyregs_2G[6]);
17964                 write_phy_reg(pi, 0x1b6,
17965                               pi->rssical_cache.rssical_phyregs_2G[7]);
17966                 write_phy_reg(pi, 0x1a5,
17967                               pi->rssical_cache.rssical_phyregs_2G[8]);
17968                 write_phy_reg(pi, 0x1ab,
17969                               pi->rssical_cache.rssical_phyregs_2G[9]);
17970                 write_phy_reg(pi, 0x1b1,
17971                               pi->rssical_cache.rssical_phyregs_2G[10]);
17972                 write_phy_reg(pi, 0x1b7,
17973                               pi->rssical_cache.rssical_phyregs_2G[11]);
17974
17975         } else {
17976                 if (pi->nphy_rssical_chanspec_5G == 0)
17977                         return;
17978
17979                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17980                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17981                                       RADIO_2057_VCM_MASK,
17982                                       pi->rssical_cache.
17983                                       rssical_radio_regs_5G[0]);
17984                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17985                                       RADIO_2057_VCM_MASK,
17986                                       pi->rssical_cache.
17987                                       rssical_radio_regs_5G[1]);
17988                 } else {
17989                         mod_radio_reg(pi,
17990                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17991                                       RADIO_2056_VCM_MASK,
17992                                       pi->rssical_cache.
17993                                       rssical_radio_regs_5G[0]);
17994                         mod_radio_reg(pi,
17995                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17996                                       RADIO_2056_VCM_MASK,
17997                                       pi->rssical_cache.
17998                                       rssical_radio_regs_5G[1]);
17999                 }
18000
18001                 write_phy_reg(pi, 0x1a6,
18002                               pi->rssical_cache.rssical_phyregs_5G[0]);
18003                 write_phy_reg(pi, 0x1ac,
18004                               pi->rssical_cache.rssical_phyregs_5G[1]);
18005                 write_phy_reg(pi, 0x1b2,
18006                               pi->rssical_cache.rssical_phyregs_5G[2]);
18007                 write_phy_reg(pi, 0x1b8,
18008                               pi->rssical_cache.rssical_phyregs_5G[3]);
18009                 write_phy_reg(pi, 0x1a4,
18010                               pi->rssical_cache.rssical_phyregs_5G[4]);
18011                 write_phy_reg(pi, 0x1aa,
18012                               pi->rssical_cache.rssical_phyregs_5G[5]);
18013                 write_phy_reg(pi, 0x1b0,
18014                               pi->rssical_cache.rssical_phyregs_5G[6]);
18015                 write_phy_reg(pi, 0x1b6,
18016                               pi->rssical_cache.rssical_phyregs_5G[7]);
18017                 write_phy_reg(pi, 0x1a5,
18018                               pi->rssical_cache.rssical_phyregs_5G[8]);
18019                 write_phy_reg(pi, 0x1ab,
18020                               pi->rssical_cache.rssical_phyregs_5G[9]);
18021                 write_phy_reg(pi, 0x1b1,
18022                               pi->rssical_cache.rssical_phyregs_5G[10]);
18023                 write_phy_reg(pi, 0x1b7,
18024                               pi->rssical_cache.rssical_phyregs_5G[11]);
18025         }
18026 }
18027
18028 static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
18029 {
18030         u16 txcal_gain[2];
18031
18032         pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
18033         pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
18034         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18035         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18036
18037         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18038                                 txcal_gain);
18039
18040         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18041                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
18042                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
18043         } else {
18044                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
18045                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
18046         }
18047
18048         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18049                                  txcal_gain);
18050 }
18051
18052 static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
18053 {
18054         bool save_bbmult = false;
18055         u8 txcal_index_2057_rev5n7 = 0;
18056         u8 txcal_index_2057_rev3n4n6 = 10;
18057
18058         if (pi->use_int_tx_iqlo_cal_nphy) {
18059                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18060                         if ((pi->pubpi.radiorev == 3) ||
18061                             (pi->pubpi.radiorev == 4) ||
18062                             (pi->pubpi.radiorev == 6)) {
18063
18064                                 pi->nphy_txcal_pwr_idx[0] =
18065                                         txcal_index_2057_rev3n4n6;
18066                                 pi->nphy_txcal_pwr_idx[1] =
18067                                         txcal_index_2057_rev3n4n6;
18068                                 wlc_phy_txpwr_index_nphy(
18069                                         pi, 3,
18070                                         txcal_index_2057_rev3n4n6,
18071                                         false);
18072                         } else {
18073
18074                                 pi->nphy_txcal_pwr_idx[0] =
18075                                         txcal_index_2057_rev5n7;
18076                                 pi->nphy_txcal_pwr_idx[1] =
18077                                         txcal_index_2057_rev5n7;
18078                                 wlc_phy_txpwr_index_nphy(
18079                                         pi, 3,
18080                                         txcal_index_2057_rev5n7,
18081                                         false);
18082                         }
18083                         save_bbmult = true;
18084
18085                 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
18086                         wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
18087                         if (pi->sh->hw_phytxchain != 3) {
18088                                 pi->nphy_txcal_pwr_idx[1] =
18089                                         pi->nphy_txcal_pwr_idx[0];
18090                                 wlc_phy_txpwr_index_nphy(pi, 3,
18091                                                          pi->
18092                                                          nphy_txcal_pwr_idx[0],
18093                                                          true);
18094                                 save_bbmult = true;
18095                         }
18096
18097                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18098                         if (PHY_IPA(pi)) {
18099                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18100                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
18101                                                                     false);
18102                                 } else {
18103                                         pi->nphy_txcal_pwr_idx[0] = 80;
18104                                         pi->nphy_txcal_pwr_idx[1] = 80;
18105                                         wlc_phy_txpwr_index_nphy(pi, 3, 80,
18106                                                                  false);
18107                                         save_bbmult = true;
18108                                 }
18109                         } else {
18110                                 wlc_phy_internal_cal_txgain_nphy(pi);
18111                                 save_bbmult = true;
18112                         }
18113
18114                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18115                         if (PHY_IPA(pi)) {
18116                                 if (CHSPEC_IS2G(pi->radio_chanspec))
18117                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
18118                                                                     false);
18119                                 else
18120                                         wlc_phy_cal_txgainctrl_nphy(pi, 14,
18121                                                                     false);
18122                         } else {
18123                                 wlc_phy_internal_cal_txgain_nphy(pi);
18124                                 save_bbmult = true;
18125                         }
18126                 }
18127
18128         } else {
18129                 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18130         }
18131
18132         if (save_bbmult)
18133                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18134                                         &pi->nphy_txcal_bbmult);
18135 }
18136
18137 static void
18138 wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18139                                  u8 core_code)
18140 {
18141         u16 mask;
18142         u16 val;
18143         u8 core;
18144
18145         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18146                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18147                         if (core_code == RADIO_MIMO_CORESEL_CORE1
18148                             && core == PHY_CORE_1)
18149                                 continue;
18150                         else if (core_code == RADIO_MIMO_CORESEL_CORE2
18151                                  && core == PHY_CORE_0)
18152                                 continue;
18153
18154                         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18155
18156                                 mask = (0x1 << 10);
18157                                 val = 1 << 10;
18158                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18159                                             0x92, mask, val);
18160                         }
18161
18162                         if (field == NPHY_RfctrlIntc_override_OFF) {
18163
18164                                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18165                                               0x92, 0);
18166
18167                                 wlc_phy_force_rfseq_nphy(pi,
18168                                                          NPHY_RFSEQ_RESET2RX);
18169                         } else if (field == NPHY_RfctrlIntc_override_TRSW) {
18170
18171                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18172
18173                                         mask = (0x1 << 6) | (0x1 << 7);
18174
18175                                         val = value << 6;
18176                                         mod_phy_reg(pi,
18177                                                     (core ==
18178                                                      PHY_CORE_0) ? 0x91 : 0x92,
18179                                                     mask, val);
18180
18181                                         or_phy_reg(pi,
18182                                                    (core ==
18183                                                     PHY_CORE_0) ? 0x91 : 0x92,
18184                                                    (0x1 << 10));
18185
18186                                         and_phy_reg(pi, 0x2ff, (u16)
18187                                                     ~(0x3 << 14));
18188                                         or_phy_reg(pi, 0x2ff, (0x1 << 13));
18189                                         or_phy_reg(pi, 0x2ff, (0x1 << 0));
18190                                 } else {
18191
18192                                         mask = (0x1 << 6) |
18193                                                (0x1 << 7) |
18194                                                (0x1 << 8) | (0x1 << 9);
18195                                         val = value << 6;
18196                                         mod_phy_reg(pi,
18197                                                     (core ==
18198                                                      PHY_CORE_0) ? 0x91 : 0x92,
18199                                                     mask, val);
18200
18201                                         mask = (0x1 << 0);
18202                                         val = 1 << 0;
18203                                         mod_phy_reg(pi,
18204                                                     (core ==
18205                                                      PHY_CORE_0) ? 0xe7 : 0xec,
18206                                                     mask, val);
18207
18208                                         mask = (core == PHY_CORE_0) ?
18209                                                (0x1 << 0) : (0x1 << 1);
18210                                         val = 1 << ((core == PHY_CORE_0) ?
18211                                                     0 : 1);
18212                                         mod_phy_reg(pi, 0x78, mask, val);
18213
18214                                         SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18215                                                   != 0), 10000);
18216                                         if (WARN(read_phy_reg(pi, 0x78) & val,
18217                                                  "HW error: override failed"))
18218                                                 return;
18219
18220                                         mask = (0x1 << 0);
18221                                         val = 0 << 0;
18222                                         mod_phy_reg(pi,
18223                                                     (core ==
18224                                                      PHY_CORE_0) ? 0xe7 : 0xec,
18225                                                     mask, val);
18226                                 }
18227                         } else if (field == NPHY_RfctrlIntc_override_PA) {
18228                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18229
18230                                         mask = (0x1 << 4) | (0x1 << 5);
18231
18232                                         if (CHSPEC_IS5G(pi->radio_chanspec))
18233                                                 val = value << 5;
18234                                         else
18235                                                 val = value << 4;
18236
18237                                         mod_phy_reg(pi,
18238                                                     (core ==
18239                                                      PHY_CORE_0) ? 0x91 : 0x92,
18240                                                     mask, val);
18241
18242                                         or_phy_reg(pi,
18243                                                    (core ==
18244                                                     PHY_CORE_0) ? 0x91 : 0x92,
18245                                                    (0x1 << 12));
18246                                 } else {
18247
18248                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18249                                                 mask = (0x1 << 5);
18250                                                 val = value << 5;
18251                                         } else {
18252                                                 mask = (0x1 << 4);
18253                                                 val = value << 4;
18254                                         }
18255                                         mod_phy_reg(pi,
18256                                                     (core ==
18257                                                      PHY_CORE_0) ? 0x91 : 0x92,
18258                                                     mask, val);
18259                                 }
18260                         } else if (field ==
18261                                    NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18262                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18263                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18264
18265                                                 mask = (0x1 << 0);
18266                                                 val = value << 0;
18267                                                 mod_phy_reg(pi,
18268                                                             (core ==
18269                                                              PHY_CORE_0) ? 0x91
18270                                                             : 0x92, mask, val);
18271
18272                                                 mask = (0x1 << 2);
18273                                                 mod_phy_reg(pi,
18274                                                             (core ==
18275                                                              PHY_CORE_0) ? 0x91
18276                                                             : 0x92, mask, 0);
18277                                         } else {
18278
18279                                                 mask = (0x1 << 2);
18280                                                 val = value << 2;
18281                                                 mod_phy_reg(pi,
18282                                                             (core ==
18283                                                              PHY_CORE_0) ? 0x91
18284                                                             : 0x92, mask, val);
18285
18286                                                 mask = (0x1 << 0);
18287                                                 mod_phy_reg(pi,
18288                                                             (core ==
18289                                                              PHY_CORE_0) ? 0x91
18290                                                             : 0x92, mask, 0);
18291                                         }
18292
18293                                         mask = (0x1 << 11);
18294                                         val = 1 << 11;
18295                                         mod_phy_reg(pi,
18296                                                     (core ==
18297                                                      PHY_CORE_0) ? 0x91 : 0x92,
18298                                                     mask, val);
18299                                 } else {
18300
18301                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18302                                                 mask = (0x1 << 0);
18303                                                 val = value << 0;
18304                                         } else {
18305                                                 mask = (0x1 << 2);
18306                                                 val = value << 2;
18307                                         }
18308                                         mod_phy_reg(pi,
18309                                                     (core ==
18310                                                      PHY_CORE_0) ? 0x91 : 0x92,
18311                                                     mask, val);
18312                                 }
18313                         } else if (field ==
18314                                    NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18315                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18316                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18317
18318                                                 mask = (0x1 << 1);
18319                                                 val = value << 1;
18320                                                 mod_phy_reg(pi,
18321                                                             (core ==
18322                                                              PHY_CORE_0) ? 0x91
18323                                                             : 0x92, mask, val);
18324
18325                                                 mask = (0x1 << 3);
18326                                                 mod_phy_reg(pi,
18327                                                             (core ==
18328                                                              PHY_CORE_0) ? 0x91
18329                                                             : 0x92, mask, 0);
18330                                         } else {
18331
18332                                                 mask = (0x1 << 3);
18333                                                 val = value << 3;
18334                                                 mod_phy_reg(pi,
18335                                                             (core ==
18336                                                              PHY_CORE_0) ? 0x91
18337                                                             : 0x92, mask, val);
18338
18339                                                 mask = (0x1 << 1);
18340                                                 mod_phy_reg(pi,
18341                                                             (core ==
18342                                                              PHY_CORE_0) ? 0x91
18343                                                             : 0x92, mask, 0);
18344                                         }
18345
18346                                         mask = (0x1 << 11);
18347                                         val = 1 << 11;
18348                                         mod_phy_reg(pi,
18349                                                     (core ==
18350                                                      PHY_CORE_0) ? 0x91 : 0x92,
18351                                                     mask, val);
18352                                 } else {
18353
18354                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18355                                                 mask = (0x1 << 1);
18356                                                 val = value << 1;
18357                                         } else {
18358                                                 mask = (0x1 << 3);
18359                                                 val = value << 3;
18360                                         }
18361                                         mod_phy_reg(pi,
18362                                                     (core ==
18363                                                      PHY_CORE_0) ? 0x91 : 0x92,
18364                                                     mask, val);
18365                                 }
18366                         }
18367                 }
18368         }
18369 }
18370
18371 void
18372 wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18373                             bool debug)
18374 {
18375         int gainctrl_loopidx;
18376         uint core;
18377         u16 m0m1, curr_m0m1;
18378         s32 delta_power;
18379         s32 txpwrindex;
18380         s32 qdBm_power[2];
18381         u16 orig_BBConfig;
18382         u16 phy_saveregs[4];
18383         u32 freq_test;
18384         u16 ampl_test = 250;
18385         uint stepsize;
18386         bool phyhang_avoid_state = false;
18387
18388         if (NREV_GE(pi->pubpi.phy_rev, 7))
18389                 stepsize = 2;
18390         else
18391                 stepsize = 1;
18392
18393         if (CHSPEC_IS40(pi->radio_chanspec))
18394                 freq_test = 5000;
18395         else
18396                 freq_test = 2500;
18397
18398         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18399         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18400
18401         if (pi->phyhang_avoid)
18402                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18403
18404         phyhang_avoid_state = pi->phyhang_avoid;
18405         pi->phyhang_avoid = false;
18406
18407         phy_saveregs[0] = read_phy_reg(pi, 0x91);
18408         phy_saveregs[1] = read_phy_reg(pi, 0x92);
18409         phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18410         phy_saveregs[3] = read_phy_reg(pi, 0xec);
18411         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18412                                          RADIO_MIMO_CORESEL_CORE1 |
18413                                          RADIO_MIMO_CORESEL_CORE2);
18414
18415         if (!debug) {
18416                 wlc_phy_rfctrlintc_override_nphy(pi,
18417                                                  NPHY_RfctrlIntc_override_TRSW,
18418                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
18419                 wlc_phy_rfctrlintc_override_nphy(pi,
18420                                                  NPHY_RfctrlIntc_override_TRSW,
18421                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
18422         } else {
18423                 wlc_phy_rfctrlintc_override_nphy(pi,
18424                                                  NPHY_RfctrlIntc_override_TRSW,
18425                                                  0x1, RADIO_MIMO_CORESEL_CORE1);
18426                 wlc_phy_rfctrlintc_override_nphy(pi,
18427                                                  NPHY_RfctrlIntc_override_TRSW,
18428                                                  0x7, RADIO_MIMO_CORESEL_CORE2);
18429         }
18430
18431         orig_BBConfig = read_phy_reg(pi, 0x01);
18432         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18433
18434         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18435
18436         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18437                 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18438
18439                 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18440                      gainctrl_loopidx++) {
18441                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18442                                              false);
18443
18444                         if (core == PHY_CORE_0)
18445                                 curr_m0m1 = m0m1 & 0xff00;
18446                         else
18447                                 curr_m0m1 = m0m1 & 0x00ff;
18448
18449                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18450                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18451
18452                         udelay(50);
18453
18454                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18455                                                  NPHY_CAL_TSSISAMPS);
18456
18457                         pi->nphy_bb_mult_save = 0;
18458                         wlc_phy_stopplayback_nphy(pi);
18459
18460                         delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18461
18462                         txpwrindex -= stepsize * delta_power;
18463                         if (txpwrindex < 0)
18464                                 txpwrindex = 0;
18465                         else if (txpwrindex > 127)
18466                                 txpwrindex = 127;
18467
18468                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18469                                 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18470                                     (pi->srom_fem5g.extpagain == 3)) {
18471                                         if (txpwrindex < 30)
18472                                                 txpwrindex = 30;
18473                                 }
18474                         } else {
18475                                 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18476                                     (pi->srom_fem2g.extpagain == 3)) {
18477                                         if (txpwrindex < 50)
18478                                                 txpwrindex = 50;
18479                                 }
18480                         }
18481
18482                         wlc_phy_txpwr_index_nphy(pi, (1 << core),
18483                                                  (u8) txpwrindex, true);
18484                 }
18485
18486                 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18487
18488                 if (debug) {
18489                         u16 radio_gain;
18490                         u16 dbg_m0m1;
18491
18492                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18493
18494                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18495                                              false);
18496
18497                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18498                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18499
18500                         udelay(100);
18501
18502                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18503                                                  NPHY_CAL_TSSISAMPS);
18504
18505                         wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18506                                                 &radio_gain);
18507
18508                         mdelay(4000);
18509                         pi->nphy_bb_mult_save = 0;
18510                         wlc_phy_stopplayback_nphy(pi);
18511                 }
18512         }
18513
18514         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18515         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18516
18517         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18518
18519         write_phy_reg(pi, 0x01, orig_BBConfig);
18520
18521         write_phy_reg(pi, 0x91, phy_saveregs[0]);
18522         write_phy_reg(pi, 0x92, phy_saveregs[1]);
18523         write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18524         write_phy_reg(pi, 0xec, phy_saveregs[3]);
18525
18526         pi->phyhang_avoid = phyhang_avoid_state;
18527
18528         if (pi->phyhang_avoid)
18529                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18530 }
18531
18532 static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18533 {
18534         void *tbl_ptr;
18535         int coreNum;
18536         u16 *txcal_radio_regs = NULL;
18537
18538         if (pi->phyhang_avoid)
18539                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18540
18541         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18542
18543                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18544                                           &pi->calibration_cache.
18545                                           rxcal_coeffs_2G);
18546
18547                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18548                         txcal_radio_regs =
18549                                 pi->calibration_cache.txcal_radio_regs_2G;
18550                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18551
18552                         pi->calibration_cache.txcal_radio_regs_2G[0] =
18553                                 read_radio_reg(pi,
18554                                                RADIO_2056_TX_LOFT_FINE_I |
18555                                                RADIO_2056_TX0);
18556                         pi->calibration_cache.txcal_radio_regs_2G[1] =
18557                                 read_radio_reg(pi,
18558                                                RADIO_2056_TX_LOFT_FINE_Q |
18559                                                RADIO_2056_TX0);
18560                         pi->calibration_cache.txcal_radio_regs_2G[2] =
18561                                 read_radio_reg(pi,
18562                                                RADIO_2056_TX_LOFT_FINE_I |
18563                                                RADIO_2056_TX1);
18564                         pi->calibration_cache.txcal_radio_regs_2G[3] =
18565                                 read_radio_reg(pi,
18566                                                RADIO_2056_TX_LOFT_FINE_Q |
18567                                                RADIO_2056_TX1);
18568
18569                         pi->calibration_cache.txcal_radio_regs_2G[4] =
18570                                 read_radio_reg(pi,
18571                                                RADIO_2056_TX_LOFT_COARSE_I |
18572                                                RADIO_2056_TX0);
18573                         pi->calibration_cache.txcal_radio_regs_2G[5] =
18574                                 read_radio_reg(pi,
18575                                                RADIO_2056_TX_LOFT_COARSE_Q |
18576                                                RADIO_2056_TX0);
18577                         pi->calibration_cache.txcal_radio_regs_2G[6] =
18578                                 read_radio_reg(pi,
18579                                                RADIO_2056_TX_LOFT_COARSE_I |
18580                                                RADIO_2056_TX1);
18581                         pi->calibration_cache.txcal_radio_regs_2G[7] =
18582                                 read_radio_reg(pi,
18583                                                RADIO_2056_TX_LOFT_COARSE_Q |
18584                                                RADIO_2056_TX1);
18585                 } else {
18586                         pi->calibration_cache.txcal_radio_regs_2G[0] =
18587                                read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18588                         pi->calibration_cache.txcal_radio_regs_2G[1] =
18589                                read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18590                         pi->calibration_cache.txcal_radio_regs_2G[2] =
18591                                read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18592                         pi->calibration_cache.txcal_radio_regs_2G[3] =
18593                                read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18594                 }
18595
18596                 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18597                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18598         } else {
18599
18600                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18601                                           &pi->calibration_cache.
18602                                           rxcal_coeffs_5G);
18603
18604                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18605                         txcal_radio_regs =
18606                                 pi->calibration_cache.txcal_radio_regs_5G;
18607                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18608
18609                         pi->calibration_cache.txcal_radio_regs_5G[0] =
18610                                 read_radio_reg(pi,
18611                                                RADIO_2056_TX_LOFT_FINE_I |
18612                                                RADIO_2056_TX0);
18613                         pi->calibration_cache.txcal_radio_regs_5G[1] =
18614                                 read_radio_reg(pi,
18615                                                RADIO_2056_TX_LOFT_FINE_Q |
18616                                                RADIO_2056_TX0);
18617                         pi->calibration_cache.txcal_radio_regs_5G[2] =
18618                                 read_radio_reg(pi,
18619                                                RADIO_2056_TX_LOFT_FINE_I |
18620                                                RADIO_2056_TX1);
18621                         pi->calibration_cache.txcal_radio_regs_5G[3] =
18622                                 read_radio_reg(pi,
18623                                                RADIO_2056_TX_LOFT_FINE_Q |
18624                                                RADIO_2056_TX1);
18625
18626                         pi->calibration_cache.txcal_radio_regs_5G[4] =
18627                                 read_radio_reg(pi,
18628                                                RADIO_2056_TX_LOFT_COARSE_I |
18629                                                RADIO_2056_TX0);
18630                         pi->calibration_cache.txcal_radio_regs_5G[5] =
18631                                 read_radio_reg(pi,
18632                                                RADIO_2056_TX_LOFT_COARSE_Q |
18633                                                RADIO_2056_TX0);
18634                         pi->calibration_cache.txcal_radio_regs_5G[6] =
18635                                 read_radio_reg(pi,
18636                                                RADIO_2056_TX_LOFT_COARSE_I |
18637                                                RADIO_2056_TX1);
18638                         pi->calibration_cache.txcal_radio_regs_5G[7] =
18639                                 read_radio_reg(pi,
18640                                                RADIO_2056_TX_LOFT_COARSE_Q |
18641                                                RADIO_2056_TX1);
18642                 } else {
18643                         pi->calibration_cache.txcal_radio_regs_5G[0] =
18644                                read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18645                         pi->calibration_cache.txcal_radio_regs_5G[1] =
18646                                read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18647                         pi->calibration_cache.txcal_radio_regs_5G[2] =
18648                                read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18649                         pi->calibration_cache.txcal_radio_regs_5G[3] =
18650                                read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18651                 }
18652
18653                 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18654                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18655         }
18656         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18657                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18658
18659                         txcal_radio_regs[2 * coreNum] =
18660                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18661                                                 LOFT_FINE_I);
18662                         txcal_radio_regs[2 * coreNum + 1] =
18663                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18664                                                 LOFT_FINE_Q);
18665
18666                         txcal_radio_regs[2 * coreNum + 4] =
18667                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18668                                                 LOFT_COARSE_I);
18669                         txcal_radio_regs[2 * coreNum + 5] =
18670                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18671                                                 LOFT_COARSE_Q);
18672                 }
18673         }
18674
18675         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18676
18677         if (pi->phyhang_avoid)
18678                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18679 }
18680
18681 static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18682 {
18683         struct nphy_iq_comp tx_comp;
18684
18685         wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18686
18687         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18688         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18689         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18690         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18691 }
18692
18693 static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18694 {
18695         u16 *loft_comp;
18696         u16 txcal_coeffs_bphy[4];
18697         u16 *tbl_ptr;
18698         int coreNum;
18699         u16 *txcal_radio_regs = NULL;
18700
18701         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18702                 if (pi->nphy_iqcal_chanspec_2G == 0)
18703                         return;
18704
18705                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18706                 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18707         } else {
18708                 if (pi->nphy_iqcal_chanspec_5G == 0)
18709                         return;
18710
18711                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18712                 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18713         }
18714
18715         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18716
18717         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18718                 txcal_coeffs_bphy[0] = tbl_ptr[0];
18719                 txcal_coeffs_bphy[1] = tbl_ptr[1];
18720                 txcal_coeffs_bphy[2] = tbl_ptr[2];
18721                 txcal_coeffs_bphy[3] = tbl_ptr[3];
18722         } else {
18723                 txcal_coeffs_bphy[0] = 0;
18724                 txcal_coeffs_bphy[1] = 0;
18725                 txcal_coeffs_bphy[2] = 0;
18726                 txcal_coeffs_bphy[3] = 0;
18727         }
18728
18729         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18730                                  txcal_coeffs_bphy);
18731
18732         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18733
18734         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18735
18736         if (NREV_LT(pi->pubpi.phy_rev, 2))
18737                 wlc_phy_tx_iq_war_nphy(pi);
18738
18739         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18740                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18741                         txcal_radio_regs =
18742                                 pi->calibration_cache.txcal_radio_regs_2G;
18743                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18744
18745                         write_radio_reg(pi,
18746                                         RADIO_2056_TX_LOFT_FINE_I |
18747                                         RADIO_2056_TX0,
18748                                         pi->calibration_cache.
18749                                         txcal_radio_regs_2G[0]);
18750                         write_radio_reg(pi,
18751                                         RADIO_2056_TX_LOFT_FINE_Q |
18752                                         RADIO_2056_TX0,
18753                                         pi->calibration_cache.
18754                                         txcal_radio_regs_2G[1]);
18755                         write_radio_reg(pi,
18756                                         RADIO_2056_TX_LOFT_FINE_I |
18757                                         RADIO_2056_TX1,
18758                                         pi->calibration_cache.
18759                                         txcal_radio_regs_2G[2]);
18760                         write_radio_reg(pi,
18761                                         RADIO_2056_TX_LOFT_FINE_Q |
18762                                         RADIO_2056_TX1,
18763                                         pi->calibration_cache.
18764                                         txcal_radio_regs_2G[3]);
18765
18766                         write_radio_reg(pi,
18767                                         RADIO_2056_TX_LOFT_COARSE_I |
18768                                         RADIO_2056_TX0,
18769                                         pi->calibration_cache.
18770                                         txcal_radio_regs_2G[4]);
18771                         write_radio_reg(pi,
18772                                         RADIO_2056_TX_LOFT_COARSE_Q |
18773                                         RADIO_2056_TX0,
18774                                         pi->calibration_cache.
18775                                         txcal_radio_regs_2G[5]);
18776                         write_radio_reg(pi,
18777                                         RADIO_2056_TX_LOFT_COARSE_I |
18778                                         RADIO_2056_TX1,
18779                                         pi->calibration_cache.
18780                                         txcal_radio_regs_2G[6]);
18781                         write_radio_reg(pi,
18782                                         RADIO_2056_TX_LOFT_COARSE_Q |
18783                                         RADIO_2056_TX1,
18784                                         pi->calibration_cache.
18785                                         txcal_radio_regs_2G[7]);
18786                 } else {
18787                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18788                                         pi->calibration_cache.
18789                                         txcal_radio_regs_2G[0]);
18790                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18791                                         pi->calibration_cache.
18792                                         txcal_radio_regs_2G[1]);
18793                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18794                                         pi->calibration_cache.
18795                                         txcal_radio_regs_2G[2]);
18796                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18797                                         pi->calibration_cache.
18798                                         txcal_radio_regs_2G[3]);
18799                 }
18800
18801                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18802                                           &pi->calibration_cache.
18803                                           rxcal_coeffs_2G);
18804         } else {
18805                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18806                         txcal_radio_regs =
18807                                 pi->calibration_cache.txcal_radio_regs_5G;
18808                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18809
18810                         write_radio_reg(pi,
18811                                         RADIO_2056_TX_LOFT_FINE_I |
18812                                         RADIO_2056_TX0,
18813                                         pi->calibration_cache.
18814                                         txcal_radio_regs_5G[0]);
18815                         write_radio_reg(pi,
18816                                         RADIO_2056_TX_LOFT_FINE_Q |
18817                                         RADIO_2056_TX0,
18818                                         pi->calibration_cache.
18819                                         txcal_radio_regs_5G[1]);
18820                         write_radio_reg(pi,
18821                                         RADIO_2056_TX_LOFT_FINE_I |
18822                                         RADIO_2056_TX1,
18823                                         pi->calibration_cache.
18824                                         txcal_radio_regs_5G[2]);
18825                         write_radio_reg(pi,
18826                                         RADIO_2056_TX_LOFT_FINE_Q |
18827                                         RADIO_2056_TX1,
18828                                         pi->calibration_cache.
18829                                         txcal_radio_regs_5G[3]);
18830
18831                         write_radio_reg(pi,
18832                                         RADIO_2056_TX_LOFT_COARSE_I |
18833                                         RADIO_2056_TX0,
18834                                         pi->calibration_cache.
18835                                         txcal_radio_regs_5G[4]);
18836                         write_radio_reg(pi,
18837                                         RADIO_2056_TX_LOFT_COARSE_Q |
18838                                         RADIO_2056_TX0,
18839                                         pi->calibration_cache.
18840                                         txcal_radio_regs_5G[5]);
18841                         write_radio_reg(pi,
18842                                         RADIO_2056_TX_LOFT_COARSE_I |
18843                                         RADIO_2056_TX1,
18844                                         pi->calibration_cache.
18845                                         txcal_radio_regs_5G[6]);
18846                         write_radio_reg(pi,
18847                                         RADIO_2056_TX_LOFT_COARSE_Q |
18848                                         RADIO_2056_TX1,
18849                                         pi->calibration_cache.
18850                                         txcal_radio_regs_5G[7]);
18851                 } else {
18852                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18853                                         pi->calibration_cache.
18854                                         txcal_radio_regs_5G[0]);
18855                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18856                                         pi->calibration_cache.
18857                                         txcal_radio_regs_5G[1]);
18858                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18859                                         pi->calibration_cache.
18860                                         txcal_radio_regs_5G[2]);
18861                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18862                                         pi->calibration_cache.
18863                                         txcal_radio_regs_5G[3]);
18864                 }
18865
18866                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18867                                           &pi->calibration_cache.
18868                                           rxcal_coeffs_5G);
18869         }
18870
18871         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18872                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18873
18874                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18875                                          LOFT_FINE_I,
18876                                          txcal_radio_regs[2 * coreNum]);
18877                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18878                                          LOFT_FINE_Q,
18879                                          txcal_radio_regs[2 * coreNum + 1]);
18880
18881                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18882                                          LOFT_COARSE_I,
18883                                          txcal_radio_regs[2 * coreNum + 4]);
18884                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18885                                          LOFT_COARSE_Q,
18886                                          txcal_radio_regs[2 * coreNum + 5]);
18887                 }
18888         }
18889 }
18890
18891 static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
18892 {
18893         u32 idx;
18894         u16 iqloCalbuf[7];
18895         u32 iqcomp, locomp, curr_locomp;
18896         s8 locomp_i, locomp_q;
18897         s8 curr_locomp_i, curr_locomp_q;
18898         u32 tbl_id, tbl_len, tbl_offset;
18899         u32 regval[128];
18900
18901         if (pi->phyhang_avoid)
18902                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18903
18904         wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
18905
18906         tbl_len = 128;
18907         tbl_offset = 320;
18908         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18909              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18910                 iqcomp =
18911                         (tbl_id ==
18912                          26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
18913                         (iqloCalbuf[1] & 0x3ff)
18914                         : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
18915                         (iqloCalbuf[3] & 0x3ff);
18916
18917                 for (idx = 0; idx < tbl_len; idx++)
18918                         regval[idx] = iqcomp;
18919                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18920                                          regval);
18921         }
18922
18923         tbl_offset = 448;
18924         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18925              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18926
18927                 locomp =
18928                         (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
18929                 locomp_i = (s8) ((locomp >> 8) & 0xff);
18930                 locomp_q = (s8) ((locomp) & 0xff);
18931                 for (idx = 0; idx < tbl_len; idx++) {
18932                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18933                                 curr_locomp_i = locomp_i;
18934                                 curr_locomp_q = locomp_q;
18935                         } else {
18936                                 curr_locomp_i = (s8) ((locomp_i *
18937                                                        nphy_tpc_loscale[idx] +
18938                                                        128) >> 8);
18939                                 curr_locomp_q =
18940                                         (s8) ((locomp_q *
18941                                                nphy_tpc_loscale[idx] +
18942                                                128) >> 8);
18943                         }
18944                         curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
18945                         curr_locomp |= (u32) (curr_locomp_q & 0xff);
18946                         regval[idx] = curr_locomp;
18947                 }
18948                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18949                                          regval);
18950         }
18951
18952         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
18953
18954                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
18955                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
18956         }
18957
18958         if (pi->phyhang_avoid)
18959                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18960 }
18961
18962 static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
18963 {
18964         u8 tx_lpf_bw = 0;
18965
18966         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18967                 if (CHSPEC_IS40(pi->radio_chanspec))
18968                         tx_lpf_bw = 3;
18969                 else
18970                         tx_lpf_bw = 1;
18971
18972                 if (PHY_IPA(pi)) {
18973                         if (CHSPEC_IS40(pi->radio_chanspec))
18974                                 tx_lpf_bw = 5;
18975                         else
18976                                 tx_lpf_bw = 4;
18977                 }
18978
18979                 write_phy_reg(pi, 0xe8,
18980                               (tx_lpf_bw << 0) |
18981                               (tx_lpf_bw << 3) |
18982                               (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18983
18984                 if (PHY_IPA(pi)) {
18985
18986                         if (CHSPEC_IS40(pi->radio_chanspec))
18987                                 tx_lpf_bw = 4;
18988                         else
18989                                 tx_lpf_bw = 1;
18990
18991                         write_phy_reg(pi, 0xe9,
18992                                       (tx_lpf_bw << 0) |
18993                                       (tx_lpf_bw << 3) |
18994                                       (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18995                 }
18996         }
18997 }
18998
18999 static void
19000 wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
19001 {
19002         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19003                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19004                     CHSPEC_IS40(pi->radio_chanspec)) {
19005                         if (!pi->nphy_anarxlpf_adjusted) {
19006                                 write_radio_reg(pi,
19007                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19008                                                  RADIO_2056_RX0),
19009                                                 ((pi->nphy_rccal_value +
19010                                                   reduction_factr) | 0x80));
19011
19012                                 pi->nphy_anarxlpf_adjusted = true;
19013                         }
19014                 } else {
19015                         if (pi->nphy_anarxlpf_adjusted) {
19016                                 write_radio_reg(pi,
19017                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19018                                                  RADIO_2056_RX0),
19019                                                 (pi->nphy_rccal_value | 0x80));
19020
19021                                 pi->nphy_anarxlpf_adjusted = false;
19022                         }
19023                 }
19024         }
19025 }
19026
19027 static void
19028 wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
19029                                  int *tone_id_buf, u32 *noise_var_buf)
19030 {
19031         int i;
19032         u32 offset;
19033         int tone_id;
19034         int tbllen =
19035                 CHSPEC_IS40(pi->radio_chanspec) ?
19036                 NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
19037
19038         if (pi->nphy_noisevars_adjusted) {
19039                 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
19040                         tone_id = pi->nphy_saved_noisevars.tone_id[i];
19041                         offset = (tone_id >= 0) ?
19042                                  ((tone_id *
19043                                    2) + 1) : (tbllen + (tone_id * 2) + 1);
19044                         wlc_phy_table_write_nphy(
19045                                 pi, NPHY_TBL_ID_NOISEVAR, 1,
19046                                 offset, 32,
19047                                 &pi->nphy_saved_noisevars.min_noise_vars[i]);
19048                 }
19049
19050                 pi->nphy_saved_noisevars.bufcount = 0;
19051                 pi->nphy_noisevars_adjusted = false;
19052         }
19053
19054         if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
19055                 pi->nphy_saved_noisevars.bufcount = 0;
19056
19057                 for (i = 0; i < ntones; i++) {
19058                         tone_id = tone_id_buf[i];
19059                         offset = (tone_id >= 0) ?
19060                                  ((tone_id * 2) + 1) :
19061                                  (tbllen + (tone_id * 2) + 1);
19062                         pi->nphy_saved_noisevars.tone_id[i] = tone_id;
19063                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19064                                                 offset, 32,
19065                                                 &pi->nphy_saved_noisevars.
19066                                                 min_noise_vars[i]);
19067                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19068                                                  offset, 32, &noise_var_buf[i]);
19069                         pi->nphy_saved_noisevars.bufcount++;
19070                 }
19071
19072                 pi->nphy_noisevars_adjusted = true;
19073         }
19074 }
19075
19076 static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
19077 {
19078         u16 regval;
19079
19080         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19081                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19082                     CHSPEC_IS40(pi->radio_chanspec)) {
19083                         if (!pi->nphy_crsminpwr_adjusted) {
19084                                 regval = read_phy_reg(pi, 0x27d);
19085                                 pi->nphy_crsminpwr[0] = regval & 0xff;
19086                                 regval &= 0xff00;
19087                                 regval |= (u16) minpwr;
19088                                 write_phy_reg(pi, 0x27d, regval);
19089
19090                                 regval = read_phy_reg(pi, 0x280);
19091                                 pi->nphy_crsminpwr[1] = regval & 0xff;
19092                                 regval &= 0xff00;
19093                                 regval |= (u16) minpwr;
19094                                 write_phy_reg(pi, 0x280, regval);
19095
19096                                 regval = read_phy_reg(pi, 0x283);
19097                                 pi->nphy_crsminpwr[2] = regval & 0xff;
19098                                 regval &= 0xff00;
19099                                 regval |= (u16) minpwr;
19100                                 write_phy_reg(pi, 0x283, regval);
19101
19102                                 pi->nphy_crsminpwr_adjusted = true;
19103                         }
19104                 } else {
19105                         if (pi->nphy_crsminpwr_adjusted) {
19106                                 regval = read_phy_reg(pi, 0x27d);
19107                                 regval &= 0xff00;
19108                                 regval |= pi->nphy_crsminpwr[0];
19109                                 write_phy_reg(pi, 0x27d, regval);
19110
19111                                 regval = read_phy_reg(pi, 0x280);
19112                                 regval &= 0xff00;
19113                                 regval |= pi->nphy_crsminpwr[1];
19114                                 write_phy_reg(pi, 0x280, regval);
19115
19116                                 regval = read_phy_reg(pi, 0x283);
19117                                 regval &= 0xff00;
19118                                 regval |= pi->nphy_crsminpwr[2];
19119                                 write_phy_reg(pi, 0x283, regval);
19120
19121                                 pi->nphy_crsminpwr_adjusted = false;
19122                         }
19123                 }
19124         }
19125 }
19126
19127 static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19128 {
19129         u16 cur_channel = 0;
19130         int nphy_adj_tone_id_buf[] = { 57, 58 };
19131         u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19132         bool isAdjustNoiseVar = false;
19133         uint numTonesAdjust = 0;
19134         u32 tempval = 0;
19135
19136         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19137                 if (pi->phyhang_avoid)
19138                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
19139
19140                 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19141
19142                 if (pi->nphy_gband_spurwar_en) {
19143
19144                         wlc_phy_adjust_rx_analpfbw_nphy(
19145                                 pi,
19146                                 NPHY_ANARXLPFBW_REDUCTIONFACT);
19147
19148                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19149                                 if ((cur_channel == 11)
19150                                     && CHSPEC_IS40(pi->radio_chanspec))
19151                                         wlc_phy_adjust_min_noisevar_nphy(
19152                                                 pi, 2,
19153                                                 nphy_adj_tone_id_buf,
19154                                                 nphy_adj_noise_var_buf);
19155                                 else
19156                                         wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19157                                                                          NULL,
19158                                                                          NULL);
19159                         }
19160
19161                         wlc_phy_adjust_crsminpwr_nphy(pi,
19162                                                      NPHY_ADJUSTED_MINCRSPOWER);
19163                 }
19164
19165                 if ((pi->nphy_gband_spurwar2_en)
19166                     && CHSPEC_IS2G(pi->radio_chanspec)) {
19167
19168                         if (CHSPEC_IS40(pi->radio_chanspec)) {
19169                                 switch (cur_channel) {
19170                                 case 3:
19171                                         nphy_adj_tone_id_buf[0] = 57;
19172                                         nphy_adj_tone_id_buf[1] = 58;
19173                                         nphy_adj_noise_var_buf[0] = 0x22f;
19174                                         nphy_adj_noise_var_buf[1] = 0x25f;
19175                                         isAdjustNoiseVar = true;
19176                                         break;
19177                                 case 4:
19178                                         nphy_adj_tone_id_buf[0] = 41;
19179                                         nphy_adj_tone_id_buf[1] = 42;
19180                                         nphy_adj_noise_var_buf[0] = 0x22f;
19181                                         nphy_adj_noise_var_buf[1] = 0x25f;
19182                                         isAdjustNoiseVar = true;
19183                                         break;
19184                                 case 5:
19185                                         nphy_adj_tone_id_buf[0] = 25;
19186                                         nphy_adj_tone_id_buf[1] = 26;
19187                                         nphy_adj_noise_var_buf[0] = 0x24f;
19188                                         nphy_adj_noise_var_buf[1] = 0x25f;
19189                                         isAdjustNoiseVar = true;
19190                                         break;
19191                                 case 6:
19192                                         nphy_adj_tone_id_buf[0] = 9;
19193                                         nphy_adj_tone_id_buf[1] = 10;
19194                                         nphy_adj_noise_var_buf[0] = 0x22f;
19195                                         nphy_adj_noise_var_buf[1] = 0x24f;
19196                                         isAdjustNoiseVar = true;
19197                                         break;
19198                                 case 7:
19199                                         nphy_adj_tone_id_buf[0] = 121;
19200                                         nphy_adj_tone_id_buf[1] = 122;
19201                                         nphy_adj_noise_var_buf[0] = 0x18f;
19202                                         nphy_adj_noise_var_buf[1] = 0x24f;
19203                                         isAdjustNoiseVar = true;
19204                                         break;
19205                                 case 8:
19206                                         nphy_adj_tone_id_buf[0] = 105;
19207                                         nphy_adj_tone_id_buf[1] = 106;
19208                                         nphy_adj_noise_var_buf[0] = 0x22f;
19209                                         nphy_adj_noise_var_buf[1] = 0x25f;
19210                                         isAdjustNoiseVar = true;
19211                                         break;
19212                                 case 9:
19213                                         nphy_adj_tone_id_buf[0] = 89;
19214                                         nphy_adj_tone_id_buf[1] = 90;
19215                                         nphy_adj_noise_var_buf[0] = 0x22f;
19216                                         nphy_adj_noise_var_buf[1] = 0x24f;
19217                                         isAdjustNoiseVar = true;
19218                                         break;
19219                                 case 10:
19220                                         nphy_adj_tone_id_buf[0] = 73;
19221                                         nphy_adj_tone_id_buf[1] = 74;
19222                                         nphy_adj_noise_var_buf[0] = 0x22f;
19223                                         nphy_adj_noise_var_buf[1] = 0x24f;
19224                                         isAdjustNoiseVar = true;
19225                                         break;
19226                                 default:
19227                                         isAdjustNoiseVar = false;
19228                                         break;
19229                                 }
19230                         }
19231
19232                         if (isAdjustNoiseVar) {
19233                                 numTonesAdjust = ARRAY_SIZE(nphy_adj_tone_id_buf);
19234
19235                                 wlc_phy_adjust_min_noisevar_nphy(
19236                                         pi,
19237                                         numTonesAdjust,
19238                                         nphy_adj_tone_id_buf,
19239                                         nphy_adj_noise_var_buf);
19240
19241                                 tempval = 0;
19242
19243                         } else {
19244                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19245                                                                  NULL);
19246                         }
19247                 }
19248
19249                 if ((pi->nphy_aband_spurwar_en) &&
19250                     (CHSPEC_IS5G(pi->radio_chanspec))) {
19251                         switch (cur_channel) {
19252                         case 54:
19253                                 nphy_adj_tone_id_buf[0] = 32;
19254                                 nphy_adj_noise_var_buf[0] = 0x25f;
19255                                 break;
19256                         case 38:
19257                         case 102:
19258                         case 118:
19259                                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) &&
19260                                     (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
19261                                         nphy_adj_tone_id_buf[0] = 32;
19262                                         nphy_adj_noise_var_buf[0] = 0x21f;
19263                                 } else {
19264                                         nphy_adj_tone_id_buf[0] = 0;
19265                                         nphy_adj_noise_var_buf[0] = 0x0;
19266                                 }
19267                                 break;
19268                         case 134:
19269                                 nphy_adj_tone_id_buf[0] = 32;
19270                                 nphy_adj_noise_var_buf[0] = 0x21f;
19271                                 break;
19272                         case 151:
19273                                 nphy_adj_tone_id_buf[0] = 16;
19274                                 nphy_adj_noise_var_buf[0] = 0x23f;
19275                                 break;
19276                         case 153:
19277                         case 161:
19278                                 nphy_adj_tone_id_buf[0] = 48;
19279                                 nphy_adj_noise_var_buf[0] = 0x23f;
19280                                 break;
19281                         default:
19282                                 nphy_adj_tone_id_buf[0] = 0;
19283                                 nphy_adj_noise_var_buf[0] = 0x0;
19284                                 break;
19285                         }
19286
19287                         if (nphy_adj_tone_id_buf[0]
19288                             && nphy_adj_noise_var_buf[0])
19289                                 wlc_phy_adjust_min_noisevar_nphy(
19290                                         pi, 1,
19291                                         nphy_adj_tone_id_buf,
19292                                         nphy_adj_noise_var_buf);
19293                         else
19294                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19295                                                                  NULL);
19296                 }
19297
19298                 if (pi->phyhang_avoid)
19299                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
19300         }
19301 }
19302
19303 void wlc_phy_init_nphy(struct brcms_phy *pi)
19304 {
19305         u16 val;
19306         u16 clip1_ths[2];
19307         struct nphy_txgains target_gain;
19308         u8 tx_pwr_ctrl_state;
19309         bool do_nphy_cal = false;
19310         uint core;
19311         u32 d11_clk_ctl_st;
19312         bool do_rssi_cal = false;
19313
19314         core = 0;
19315
19316         if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19317                 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19318
19319         if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19320             ((pi->sh->chippkg == BCMA_PKG_ID_BCM4717) ||
19321              (pi->sh->chippkg == BCMA_PKG_ID_BCM4718))) {
19322                 if ((pi->sh->boardflags & BFL_EXTLNA) &&
19323                     (CHSPEC_IS2G(pi->radio_chanspec)))
19324                         ai_cc_reg(pi->sh->sih,
19325                                   offsetof(struct chipcregs, chipcontrol),
19326                                   0x40, 0x40);
19327         }
19328
19329         if ((!PHY_IPA(pi)) && (pi->sh->chip == BCMA_CHIP_ID_BCM5357))
19330                 si_pmu_chipcontrol(pi->sh->sih, 1, CCTRL5357_EXTPA,
19331                                    CCTRL5357_EXTPA);
19332
19333         if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19334             CHSPEC_IS40(pi->radio_chanspec)) {
19335
19336                 d11_clk_ctl_st = bcma_read32(pi->d11core,
19337                                              D11REGOFFS(clk_ctl_st));
19338                 bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19339                             ~(CCS_FORCEHT | CCS_HTAREQ));
19340
19341                 bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19342                              d11_clk_ctl_st);
19343         }
19344
19345         pi->use_int_tx_iqlo_cal_nphy =
19346                 (PHY_IPA(pi) ||
19347                  (NREV_GE(pi->pubpi.phy_rev, 7) ||
19348                   (NREV_GE(pi->pubpi.phy_rev, 5)
19349                    && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19350
19351         pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19352
19353         pi->nphy_deaf_count = 0;
19354
19355         wlc_phy_tbl_init_nphy(pi);
19356
19357         pi->nphy_crsminpwr_adjusted = false;
19358         pi->nphy_noisevars_adjusted = false;
19359
19360         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19361                 write_phy_reg(pi, 0xe7, 0);
19362                 write_phy_reg(pi, 0xec, 0);
19363                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19364                         write_phy_reg(pi, 0x342, 0);
19365                         write_phy_reg(pi, 0x343, 0);
19366                         write_phy_reg(pi, 0x346, 0);
19367                         write_phy_reg(pi, 0x347, 0);
19368                 }
19369                 write_phy_reg(pi, 0xe5, 0);
19370                 write_phy_reg(pi, 0xe6, 0);
19371         } else {
19372                 write_phy_reg(pi, 0xec, 0);
19373         }
19374
19375         write_phy_reg(pi, 0x91, 0);
19376         write_phy_reg(pi, 0x92, 0);
19377         if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19378                 write_phy_reg(pi, 0x93, 0);
19379                 write_phy_reg(pi, 0x94, 0);
19380         }
19381
19382         and_phy_reg(pi, 0xa1, ~3);
19383
19384         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19385                 write_phy_reg(pi, 0x8f, 0);
19386                 write_phy_reg(pi, 0xa5, 0);
19387         } else {
19388                 write_phy_reg(pi, 0xa5, 0);
19389         }
19390
19391         if (NREV_IS(pi->pubpi.phy_rev, 2))
19392                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19393         else if (NREV_LT(pi->pubpi.phy_rev, 2))
19394                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19395
19396         write_phy_reg(pi, 0x203, 32);
19397         write_phy_reg(pi, 0x201, 32);
19398
19399         if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19400                 write_phy_reg(pi, 0x20d, 160);
19401         else
19402                 write_phy_reg(pi, 0x20d, 184);
19403
19404         write_phy_reg(pi, 0x13a, 200);
19405
19406         write_phy_reg(pi, 0x70, 80);
19407
19408         write_phy_reg(pi, 0x1ff, 48);
19409
19410         if (NREV_LT(pi->pubpi.phy_rev, 8))
19411                 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19412
19413         wlc_phy_stf_chain_upd_nphy(pi);
19414
19415         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19416                 write_phy_reg(pi, 0x180, 0xaa8);
19417                 write_phy_reg(pi, 0x181, 0x9a4);
19418         }
19419
19420         if (PHY_IPA(pi)) {
19421                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19422
19423                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19424                                     0x29b, (0x1 << 0), (1) << 0);
19425
19426                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19427                                     0x29c, (0x1ff << 7),
19428                                     (pi->nphy_papd_epsilon_offset[core]) << 7);
19429
19430                 }
19431
19432                 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19433         } else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19434                 wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19435         }
19436
19437         wlc_phy_workarounds_nphy(pi);
19438
19439         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19440
19441         val = read_phy_reg(pi, 0x01);
19442         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19443         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19444         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19445
19446         wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19447
19448         wlc_phy_pa_override_nphy(pi, OFF);
19449         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19450         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19451         wlc_phy_pa_override_nphy(pi, ON);
19452
19453         wlc_phy_classifier_nphy(pi, 0, 0);
19454         wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19455
19456         if (CHSPEC_IS2G(pi->radio_chanspec))
19457                 wlc_phy_bphy_init_nphy(pi);
19458
19459         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19460         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19461
19462         wlc_phy_txpwr_fixpower_nphy(pi);
19463
19464         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19465
19466         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19467
19468         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19469                 u32 *tx_pwrctrl_tbl = NULL;
19470                 u16 idx;
19471                 s16 pga_gn = 0;
19472                 s16 pad_gn = 0;
19473                 s32 rfpwr_offset;
19474
19475                 if (PHY_IPA(pi)) {
19476                         tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19477                 } else {
19478                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
19479                                 if (NREV_IS(pi->pubpi.phy_rev, 3))
19480                                         tx_pwrctrl_tbl =
19481                                                 nphy_tpc_5GHz_txgain_rev3;
19482                                 else if (NREV_IS(pi->pubpi.phy_rev, 4))
19483                                         tx_pwrctrl_tbl =
19484                                                 (pi->srom_fem5g.extpagain ==
19485                                                  3) ?
19486                                                 nphy_tpc_5GHz_txgain_HiPwrEPA :
19487                                                 nphy_tpc_5GHz_txgain_rev4;
19488                                 else
19489                                         tx_pwrctrl_tbl =
19490                                                 nphy_tpc_5GHz_txgain_rev5;
19491                         } else {
19492                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19493                                         if (pi->pubpi.radiorev == 5)
19494                                                 tx_pwrctrl_tbl =
19495                                                    nphy_tpc_txgain_epa_2057rev5;
19496                                         else if (pi->pubpi.radiorev == 3)
19497                                                 tx_pwrctrl_tbl =
19498                                                    nphy_tpc_txgain_epa_2057rev3;
19499                                 } else {
19500                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19501                                             (pi->srom_fem2g.extpagain == 3))
19502                                                 tx_pwrctrl_tbl =
19503                                                        nphy_tpc_txgain_HiPwrEPA;
19504                                         else
19505                                                 tx_pwrctrl_tbl =
19506                                                         nphy_tpc_txgain_rev3;
19507                                 }
19508                         }
19509                 }
19510
19511                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19512                                          192, 32, tx_pwrctrl_tbl);
19513                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19514                                          192, 32, tx_pwrctrl_tbl);
19515
19516                 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19517
19518                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19519
19520                         for (idx = 0; idx < 128; idx++) {
19521                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19522                                 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19523                                 rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19524                                                                  pad_gn);
19525                                 wlc_phy_table_write_nphy(
19526                                         pi,
19527                                         NPHY_TBL_ID_CORE1TXPWRCTL,
19528                                         1, 576 + idx, 32,
19529                                         &rfpwr_offset);
19530                                 wlc_phy_table_write_nphy(
19531                                         pi,
19532                                         NPHY_TBL_ID_CORE2TXPWRCTL,
19533                                         1, 576 + idx, 32,
19534                                         &rfpwr_offset);
19535                         }
19536                 } else {
19537
19538                         for (idx = 0; idx < 128; idx++) {
19539                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19540                                 if (CHSPEC_IS2G(pi->radio_chanspec))
19541                                         rfpwr_offset = (s16)
19542                                                  nphy_papd_pga_gain_delta_ipa_2g
19543                                                                        [pga_gn];
19544                                 else
19545                                         rfpwr_offset = (s16)
19546                                                  nphy_papd_pga_gain_delta_ipa_5g
19547                                                                        [pga_gn];
19548
19549                                 wlc_phy_table_write_nphy(
19550                                         pi,
19551                                         NPHY_TBL_ID_CORE1TXPWRCTL,
19552                                         1, 576 + idx, 32,
19553                                         &rfpwr_offset);
19554                                 wlc_phy_table_write_nphy(
19555                                         pi,
19556                                         NPHY_TBL_ID_CORE2TXPWRCTL,
19557                                         1, 576 + idx, 32,
19558                                         &rfpwr_offset);
19559                         }
19560
19561                 }
19562         } else {
19563
19564                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19565                                          192, 32, nphy_tpc_txgain);
19566                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19567                                          192, 32, nphy_tpc_txgain);
19568         }
19569
19570         if (pi->sh->phyrxchain != 0x3)
19571                 wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19572                                              pi->sh->phyrxchain);
19573
19574         if (PHY_PERICAL_MPHASE_PENDING(pi))
19575                 wlc_phy_cal_perical_mphase_restart(pi);
19576
19577         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19578                 do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19579                               (pi->nphy_rssical_chanspec_2G == 0) :
19580                               (pi->nphy_rssical_chanspec_5G == 0);
19581
19582                 if (do_rssi_cal)
19583                         wlc_phy_rssi_cal_nphy(pi);
19584                 else
19585                         wlc_phy_restore_rssical_nphy(pi);
19586         } else {
19587                 wlc_phy_rssi_cal_nphy(pi);
19588         }
19589
19590         if (!SCAN_RM_IN_PROGRESS(pi))
19591                 do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19592                               (pi->nphy_iqcal_chanspec_2G == 0) :
19593                               (pi->nphy_iqcal_chanspec_5G == 0);
19594
19595         if (!pi->do_initcal)
19596                 do_nphy_cal = false;
19597
19598         if (do_nphy_cal) {
19599
19600                 target_gain = wlc_phy_get_tx_gain_nphy(pi);
19601
19602                 if (pi->antsel_type == ANTSEL_2x3)
19603                         wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19604                                             true);
19605
19606                 if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19607                         wlc_phy_rssi_cal_nphy(pi);
19608
19609                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19610                                 pi->nphy_cal_orig_pwr_idx[0] =
19611                                         pi->nphy_txpwrindex[PHY_CORE_0]
19612                                         .
19613                                         index_internal;
19614                                 pi->nphy_cal_orig_pwr_idx[1] =
19615                                         pi->nphy_txpwrindex[PHY_CORE_1]
19616                                         .
19617                                         index_internal;
19618
19619                                 wlc_phy_precal_txgain_nphy(pi);
19620                                 target_gain =
19621                                         wlc_phy_get_tx_gain_nphy(pi);
19622                         }
19623
19624                         if (wlc_phy_cal_txiqlo_nphy
19625                                     (pi, target_gain, true,
19626                                     false) == 0) {
19627                                 if (wlc_phy_cal_rxiq_nphy
19628                                             (pi, target_gain, 2,
19629                                             false) == 0)
19630                                         wlc_phy_savecal_nphy(pi);
19631
19632                         }
19633                 } else if (pi->mphase_cal_phase_id ==
19634                            MPHASE_CAL_STATE_IDLE) {
19635                         wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19636                                             PHY_PERICAL_PHYINIT);
19637                 }
19638         } else {
19639                 wlc_phy_restorecal_nphy(pi);
19640         }
19641
19642         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19643
19644         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19645
19646         wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19647
19648         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19649
19650                 write_phy_reg(pi, 0x70, 50);
19651
19652         wlc_phy_txlpfbw_nphy(pi);
19653
19654         wlc_phy_spurwar_nphy(pi);
19655
19656 }
19657
19658 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19659 {
19660         u16 val;
19661
19662         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19663
19664         val = read_phy_reg(pi, 0x01);
19665         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19666         udelay(1);
19667         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19668
19669         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19670
19671         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19672 }
19673
19674 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19675 {
19676         u16 rfctrlintc_override_val;
19677
19678         if (!en) {
19679
19680                 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19681                 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19682
19683                 if (NREV_GE(pi->pubpi.phy_rev, 7))
19684                         rfctrlintc_override_val = 0x1480;
19685                 else if (NREV_GE(pi->pubpi.phy_rev, 3))
19686                         rfctrlintc_override_val =
19687                                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19688                 else
19689                         rfctrlintc_override_val =
19690                                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19691
19692                 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19693                 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19694         } else {
19695                 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19696                 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19697         }
19698
19699 }
19700
19701 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19702 {
19703
19704         u16 txrx_chain =
19705                 (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19706         bool CoreActv_override = false;
19707
19708         if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19709                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19710                 CoreActv_override = true;
19711
19712                 if (NREV_LE(pi->pubpi.phy_rev, 2))
19713                         and_phy_reg(pi, 0xa0, ~0x20);
19714         } else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19715                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19716                 CoreActv_override = true;
19717
19718                 if (NREV_LE(pi->pubpi.phy_rev, 2))
19719                         or_phy_reg(pi, 0xa0, 0x20);
19720         }
19721
19722         mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19723
19724         if (CoreActv_override) {
19725                 pi->nphy_perical = PHY_PERICAL_DISABLE;
19726                 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19727         } else {
19728                 pi->nphy_perical = PHY_PERICAL_MPHASE;
19729                 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19730         }
19731 }
19732
19733 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19734 {
19735         u16 regval;
19736         u16 tbl_buf[16];
19737         uint i;
19738         struct brcms_phy *pi = (struct brcms_phy *) pih;
19739         u16 tbl_opcode;
19740         bool suspend;
19741
19742         pi->sh->phyrxchain = rxcore_bitmask;
19743
19744         if (!pi->sh->clk)
19745                 return;
19746
19747         suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19748                          MCTL_EN_MAC));
19749         if (!suspend)
19750                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
19751
19752         if (pi->phyhang_avoid)
19753                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19754
19755         regval = read_phy_reg(pi, 0xa2);
19756         regval &= ~(0xf << 4);
19757         regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19758         write_phy_reg(pi, 0xa2, regval);
19759
19760         if ((rxcore_bitmask & 0x3) != 0x3) {
19761
19762                 write_phy_reg(pi, 0x20e, 1);
19763
19764                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19765                         if (pi->rx2tx_biasentry == -1) {
19766                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19767                                                         ARRAY_SIZE(tbl_buf), 80,
19768                                                         16, tbl_buf);
19769
19770                                 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19771                                         if (tbl_buf[i] ==
19772                                             NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19773                                                 pi->rx2tx_biasentry = (u8) i;
19774                                                 tbl_opcode =
19775                                                         NPHY_REV3_RFSEQ_CMD_NOP;
19776                                                 wlc_phy_table_write_nphy(
19777                                                         pi,
19778                                                         NPHY_TBL_ID_RFSEQ,
19779                                                         1, i,
19780                                                         16,
19781                                                         &tbl_opcode);
19782                                                 break;
19783                                         } else if (tbl_buf[i] ==
19784                                                    NPHY_REV3_RFSEQ_CMD_END)
19785                                                 break;
19786                                 }
19787                         }
19788                 }
19789         } else {
19790
19791                 write_phy_reg(pi, 0x20e, 30);
19792
19793                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19794                         if (pi->rx2tx_biasentry != -1) {
19795                                 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19796                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19797                                                          1, pi->rx2tx_biasentry,
19798                                                          16, &tbl_opcode);
19799                                 pi->rx2tx_biasentry = -1;
19800                         }
19801                 }
19802         }
19803
19804         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19805
19806         if (pi->phyhang_avoid)
19807                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19808
19809         if (!suspend)
19810                 wlapi_enable_mac(pi->sh->physhim);
19811 }
19812
19813 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19814 {
19815         u16 regval, rxen_bits;
19816         struct brcms_phy *pi = (struct brcms_phy *) pih;
19817
19818         regval = read_phy_reg(pi, 0xa2);
19819         rxen_bits = (regval >> 4) & 0xf;
19820
19821         return (u8) rxen_bits;
19822 }
19823
19824 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19825 {
19826         return PHY_IPA(pi);
19827 }
19828
19829 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19830 {
19831 }
19832
19833 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19834 {
19835
19836         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19837         and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19838
19839         or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19840         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19841
19842 }
19843
19844 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19845 {
19846         struct radio_20xx_regs *regs_2057_ptr = NULL;
19847
19848         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19849                 regs_2057_ptr = regs_2057_rev4;
19850         } else if (NREV_IS(pi->pubpi.phy_rev, 8)
19851                    || NREV_IS(pi->pubpi.phy_rev, 9)) {
19852                 switch (pi->pubpi.radiorev) {
19853                 case 5:
19854
19855                         if (NREV_IS(pi->pubpi.phy_rev, 8))
19856                                 regs_2057_ptr = regs_2057_rev5;
19857                         else if (NREV_IS(pi->pubpi.phy_rev, 9))
19858                                 regs_2057_ptr = regs_2057_rev5v1;
19859                         break;
19860
19861                 case 7:
19862
19863                         regs_2057_ptr = regs_2057_rev7;
19864                         break;
19865
19866                 case 8:
19867
19868                         regs_2057_ptr = regs_2057_rev8;
19869                         break;
19870
19871                 default:
19872                         break;
19873                 }
19874         }
19875
19876         wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19877 }
19878
19879 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19880 {
19881         u16 rcal_reg = 0;
19882         int i;
19883
19884         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19885
19886                 if (pi->pubpi.radiorev == 5) {
19887
19888                         and_phy_reg(pi, 0x342, ~(0x1 << 1));
19889
19890                         udelay(10);
19891
19892                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
19893                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19894                                       0x1);
19895                 }
19896                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
19897
19898                 udelay(10);
19899
19900                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
19901
19902                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19903                         rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
19904                         if (rcal_reg & 0x1)
19905                                 break;
19906
19907                         udelay(100);
19908                 }
19909
19910                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19911                          "HW error: radio calib2"))
19912                         return 0;
19913
19914                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
19915
19916                 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
19917
19918                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
19919                 if (pi->pubpi.radiorev == 5) {
19920
19921                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
19922                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19923                                       0x0);
19924                 }
19925
19926                 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
19927
19928                         mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
19929                                       rcal_reg);
19930                         mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
19931                                       rcal_reg << 2);
19932                 }
19933
19934         } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19935                 u16 savereg;
19936
19937                 savereg =
19938                         read_radio_reg(
19939                                 pi,
19940                                 RADIO_2056_SYN_PLL_MAST2 |
19941                                 RADIO_2056_SYN);
19942                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19943                                 savereg | 0x7);
19944                 udelay(10);
19945
19946                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19947                                 0x1);
19948                 udelay(10);
19949
19950                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19951                                 0x9);
19952
19953                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19954                         rcal_reg = read_radio_reg(
19955                                 pi,
19956                                 RADIO_2056_SYN_RCAL_CODE_OUT |
19957                                 RADIO_2056_SYN);
19958                         if (rcal_reg & 0x80)
19959                                 break;
19960
19961                         udelay(100);
19962                 }
19963
19964                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19965                          "HW error: radio calib3"))
19966                         return 0;
19967
19968                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19969                                 0x1);
19970
19971                 rcal_reg =
19972                         read_radio_reg(pi,
19973                                        RADIO_2056_SYN_RCAL_CODE_OUT |
19974                                        RADIO_2056_SYN);
19975
19976                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19977                                 0x0);
19978
19979                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19980                                 savereg);
19981
19982                 return rcal_reg & 0x1f;
19983         }
19984         return rcal_reg & 0x3e;
19985 }
19986
19987 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
19988 {
19989         u16 rccal_valid;
19990         int i;
19991         bool chip43226_6362A0;
19992
19993         chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
19994                             || (pi->pubpi.radiorev == 4)
19995                             || (pi->pubpi.radiorev == 6));
19996
19997         rccal_valid = 0;
19998         if (chip43226_6362A0) {
19999                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
20000                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
20001         } else {
20002                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
20003
20004                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
20005         }
20006         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20007         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20008
20009         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20010                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20011                 if (rccal_valid & 0x2)
20012                         break;
20013
20014                 udelay(500);
20015         }
20016
20017         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20018
20019         rccal_valid = 0;
20020         if (chip43226_6362A0) {
20021                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
20022                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20023         } else {
20024                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
20025
20026                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
20027         }
20028         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20029         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20030
20031         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20032                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20033                 if (rccal_valid & 0x2)
20034                         break;
20035
20036                 udelay(500);
20037         }
20038
20039         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20040
20041         rccal_valid = 0;
20042         if (chip43226_6362A0) {
20043                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
20044
20045                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
20046                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20047         } else {
20048                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
20049                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20050                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
20051         }
20052         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20053
20054         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20055                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20056                 if (rccal_valid & 0x2)
20057                         break;
20058
20059                 udelay(500);
20060         }
20061
20062         if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
20063                 return 0;
20064
20065         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20066
20067         return rccal_valid;
20068 }
20069
20070 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
20071 {
20072
20073         mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
20074
20075         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
20076         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
20077         mdelay(2);
20078         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
20079         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
20080
20081         if (pi->phy_init_por) {
20082                 wlc_phy_radio205x_rcal(pi);
20083                 wlc_phy_radio2057_rccal(pi);
20084         }
20085
20086         mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
20087 }
20088
20089 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
20090 {
20091         const struct radio_regs *regs_SYN_2056_ptr = NULL;
20092         const struct radio_regs *regs_TX_2056_ptr = NULL;
20093         const struct radio_regs *regs_RX_2056_ptr = NULL;
20094
20095         if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20096                 regs_SYN_2056_ptr = regs_SYN_2056;
20097                 regs_TX_2056_ptr = regs_TX_2056;
20098                 regs_RX_2056_ptr = regs_RX_2056;
20099         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20100                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20101                 regs_TX_2056_ptr = regs_TX_2056_A1;
20102                 regs_RX_2056_ptr = regs_RX_2056_A1;
20103         } else {
20104                 switch (pi->pubpi.radiorev) {
20105                 case 5:
20106                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20107                         regs_TX_2056_ptr = regs_TX_2056_rev5;
20108                         regs_RX_2056_ptr = regs_RX_2056_rev5;
20109                         break;
20110
20111                 case 6:
20112                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20113                         regs_TX_2056_ptr = regs_TX_2056_rev6;
20114                         regs_RX_2056_ptr = regs_RX_2056_rev6;
20115                         break;
20116
20117                 case 7:
20118                 case 9:
20119                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20120                         regs_TX_2056_ptr = regs_TX_2056_rev7;
20121                         regs_RX_2056_ptr = regs_RX_2056_rev7;
20122                         break;
20123
20124                 case 8:
20125                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20126                         regs_TX_2056_ptr = regs_TX_2056_rev8;
20127                         regs_RX_2056_ptr = regs_RX_2056_rev8;
20128                         break;
20129
20130                 case 11:
20131                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20132                         regs_TX_2056_ptr = regs_TX_2056_rev11;
20133                         regs_RX_2056_ptr = regs_RX_2056_rev11;
20134                         break;
20135
20136                 default:
20137                         break;
20138                 }
20139         }
20140
20141         wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20142
20143         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20144
20145         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20146
20147         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20148
20149         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20150 }
20151
20152 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20153 {
20154         mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20155
20156         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20157         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20158         udelay(1000);
20159         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20160
20161         if ((pi->sh->boardflags2 & BFL2_LEGACY)
20162             || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20163                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20164         else
20165                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20166
20167         mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20168
20169         if (pi->phy_init_por)
20170                 wlc_phy_radio205x_rcal(pi);
20171 }
20172
20173 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20174 {
20175
20176         and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20177         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20178
20179         or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20180 }
20181
20182 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20183 {
20184         wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20185 }
20186
20187 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20188 {
20189
20190         and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20191                       ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20192
20193         if (((pi->sh->sromrev >= 4)
20194              && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20195             || ((pi->sh->sromrev < 4))) {
20196                 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20197                 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20198         }
20199
20200         mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20201         write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20202
20203         and_radio_reg(pi, RADIO_2055_CAL_MISC,
20204                       ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20205
20206         or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20207
20208         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20209
20210         udelay(1000);
20211
20212         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20213
20214         SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20215                    RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20216
20217         if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20218                   RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20219                  "HW error: radio calibration1\n"))
20220                 return;
20221
20222         and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20223                       ~(RADIO_2055_CAL_LPO_ENABLE));
20224
20225         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20226
20227         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20228         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20229
20230         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20231         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20232
20233         mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20234                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20235         mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20236                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20237         if (pi->nphy_gain_boost) {
20238                 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20239                               ~(RADIO_2055_GAINBST_DISABLE));
20240                 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20241                               ~(RADIO_2055_GAINBST_DISABLE));
20242         } else {
20243                 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20244                              RADIO_2055_GAINBST_DISABLE);
20245                 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20246                              RADIO_2055_GAINBST_DISABLE);
20247         }
20248
20249         udelay(2);
20250 }
20251
20252 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20253 {
20254         if (on) {
20255                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20256                         if (!pi->radio_is_on) {
20257                                 wlc_phy_radio_preinit_205x(pi);
20258                                 wlc_phy_radio_init_2057(pi);
20259                                 wlc_phy_radio_postinit_2057(pi);
20260                         }
20261
20262                         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20263                                              pi->radio_chanspec);
20264                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20265                         wlc_phy_radio_preinit_205x(pi);
20266                         wlc_phy_radio_init_2056(pi);
20267                         wlc_phy_radio_postinit_2056(pi);
20268
20269                         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20270                                              pi->radio_chanspec);
20271                 } else {
20272                         wlc_phy_radio_preinit_2055(pi);
20273                         wlc_phy_radio_init_2055(pi);
20274                         wlc_phy_radio_postinit_2055(pi);
20275                 }
20276
20277                 pi->radio_is_on = true;
20278
20279         } else {
20280
20281                 if (NREV_GE(pi->pubpi.phy_rev, 3)
20282                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
20283                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20284                         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20285
20286                         write_radio_reg(pi,
20287                                         RADIO_2056_TX_PADA_BOOST_TUNE |
20288                                         RADIO_2056_TX0, 0);
20289                         write_radio_reg(pi,
20290                                         RADIO_2056_TX_PADG_BOOST_TUNE |
20291                                         RADIO_2056_TX0, 0);
20292                         write_radio_reg(pi,
20293                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
20294                                         RADIO_2056_TX0, 0);
20295                         write_radio_reg(pi,
20296                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
20297                                         RADIO_2056_TX0, 0);
20298                         mod_radio_reg(pi,
20299                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20300                                       RADIO_2056_TX0, 0xf0, 0);
20301                         write_radio_reg(pi,
20302                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
20303                                         RADIO_2056_TX0, 0);
20304
20305                         write_radio_reg(pi,
20306                                         RADIO_2056_TX_PADA_BOOST_TUNE |
20307                                         RADIO_2056_TX1, 0);
20308                         write_radio_reg(pi,
20309                                         RADIO_2056_TX_PADG_BOOST_TUNE |
20310                                         RADIO_2056_TX1, 0);
20311                         write_radio_reg(pi,
20312                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
20313                                         RADIO_2056_TX1, 0);
20314                         write_radio_reg(pi,
20315                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
20316                                         RADIO_2056_TX1, 0);
20317                         mod_radio_reg(pi,
20318                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20319                                       RADIO_2056_TX1, 0xf0, 0);
20320                         write_radio_reg(pi,
20321                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
20322                                         RADIO_2056_TX1, 0);
20323
20324                         pi->radio_is_on = false;
20325                 }
20326
20327                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20328                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20329                         pi->radio_is_on = false;
20330                 }
20331
20332         }
20333 }
20334
20335 static bool
20336 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20337                        const struct chan_info_nphy_radio2057 **t0,
20338                        const struct chan_info_nphy_radio205x **t1,
20339                        const struct chan_info_nphy_radio2057_rev5 **t2,
20340                        const struct chan_info_nphy_2055 **t3)
20341 {
20342         uint i;
20343         const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20344         const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20345         const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20346         u32 tbl_len = 0;
20347
20348         int freq = 0;
20349
20350         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20351
20352                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20353
20354                         chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20355                         tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20356
20357                 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20358                            || NREV_IS(pi->pubpi.phy_rev, 9)) {
20359                         switch (pi->pubpi.radiorev) {
20360
20361                         case 5:
20362
20363                                 if (pi->pubpi.radiover == 0x0) {
20364
20365                                         chan_info_tbl_p_2 =
20366                                                 chan_info_nphyrev8_2057_rev5;
20367                                         tbl_len = ARRAY_SIZE(
20368                                                   chan_info_nphyrev8_2057_rev5);
20369
20370                                 } else if (pi->pubpi.radiover == 0x1) {
20371
20372                                         chan_info_tbl_p_2 =
20373                                                 chan_info_nphyrev9_2057_rev5v1;
20374                                         tbl_len = ARRAY_SIZE(
20375                                                 chan_info_nphyrev9_2057_rev5v1);
20376
20377                                 }
20378                                 break;
20379
20380                         case 7:
20381                                 chan_info_tbl_p_0 =
20382                                         chan_info_nphyrev8_2057_rev7;
20383                                 tbl_len = ARRAY_SIZE(
20384                                                   chan_info_nphyrev8_2057_rev7);
20385                                 break;
20386
20387                         case 8:
20388                                 chan_info_tbl_p_0 =
20389                                         chan_info_nphyrev8_2057_rev8;
20390                                 tbl_len = ARRAY_SIZE(
20391                                                   chan_info_nphyrev8_2057_rev8);
20392                                 break;
20393
20394                         default:
20395                                 break;
20396                         }
20397                 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20398
20399                         chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20400                         tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20401                 } else {
20402                         goto fail;
20403                 }
20404
20405                 for (i = 0; i < tbl_len; i++) {
20406                         if (pi->pubpi.radiorev == 5) {
20407
20408                                 if (chan_info_tbl_p_2[i].chan == channel)
20409                                         break;
20410                         } else {
20411
20412                                 if (chan_info_tbl_p_0[i].chan == channel)
20413                                         break;
20414                         }
20415                 }
20416
20417                 if (i >= tbl_len)
20418                         goto fail;
20419
20420                 if (pi->pubpi.radiorev == 5) {
20421                         *t2 = &chan_info_tbl_p_2[i];
20422                         freq = chan_info_tbl_p_2[i].freq;
20423                 } else {
20424                         *t0 = &chan_info_tbl_p_0[i];
20425                         freq = chan_info_tbl_p_0[i].freq;
20426                 }
20427
20428         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20429                 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20430                         chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20431                         tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20432                 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20433                         chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20434                         tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20435                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
20436                            || NREV_IS(pi->pubpi.phy_rev, 6)) {
20437                         switch (pi->pubpi.radiorev) {
20438                         case 5:
20439                                 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20440                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20441                                 break;
20442                         case 6:
20443                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20444                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20445                                 break;
20446                         case 7:
20447                         case 9:
20448                                 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20449                                 tbl_len =
20450                                         ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20451                                 break;
20452                         case 8:
20453                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20454                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20455                                 break;
20456                         case 11:
20457                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20458                                 tbl_len = ARRAY_SIZE(
20459                                                     chan_info_nphyrev6_2056v11);
20460                                 break;
20461                         default:
20462                                 break;
20463                         }
20464                 }
20465
20466                 for (i = 0; i < tbl_len; i++) {
20467                         if (chan_info_tbl_p_1[i].chan == channel)
20468                                 break;
20469                 }
20470
20471                 if (i >= tbl_len)
20472                         goto fail;
20473
20474                 *t1 = &chan_info_tbl_p_1[i];
20475                 freq = chan_info_tbl_p_1[i].freq;
20476
20477         } else {
20478                 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20479                         if (chan_info_nphy_2055[i].chan == channel)
20480                                 break;
20481
20482                 if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20483                         goto fail;
20484
20485                 *t3 = &chan_info_nphy_2055[i];
20486                 freq = chan_info_nphy_2055[i].freq;
20487         }
20488
20489         *f = freq;
20490         return true;
20491
20492 fail:
20493         *f = WL_CHAN_FREQ_RANGE_2G;
20494         return false;
20495 }
20496
20497 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20498 {
20499         int freq;
20500         const struct chan_info_nphy_radio2057 *t0 = NULL;
20501         const struct chan_info_nphy_radio205x *t1 = NULL;
20502         const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20503         const struct chan_info_nphy_2055 *t3 = NULL;
20504
20505         if (channel == 0)
20506                 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20507
20508         wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20509
20510         if (CHSPEC_IS2G(pi->radio_chanspec))
20511                 return WL_CHAN_FREQ_RANGE_2G;
20512
20513         if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20514                 return WL_CHAN_FREQ_RANGE_5GL;
20515         else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20516                 return WL_CHAN_FREQ_RANGE_5GM;
20517         else
20518                 return WL_CHAN_FREQ_RANGE_5GH;
20519 }
20520
20521 static void
20522 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20523                                  const struct chan_info_nphy_2055 *ci)
20524 {
20525
20526         write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20527         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20528         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20529         write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20530
20531         BRCMS_PHY_WAR_PR51571(pi);
20532
20533         write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20534         write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20535         write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20536         write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20537
20538         BRCMS_PHY_WAR_PR51571(pi);
20539
20540         write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20541         write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20542         write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20543         write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20544
20545         BRCMS_PHY_WAR_PR51571(pi);
20546
20547         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20548                         ci->RF_core1_lgbuf_a_tune);
20549         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20550                         ci->RF_core1_lgbuf_g_tune);
20551         write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20552         write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20553                         ci->RF_core1_tx_pga_pad_tn);
20554
20555         BRCMS_PHY_WAR_PR51571(pi);
20556
20557         write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20558                         ci->RF_core1_tx_mx_bgtrim);
20559         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20560                         ci->RF_core2_lgbuf_a_tune);
20561         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20562                         ci->RF_core2_lgbuf_g_tune);
20563         write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20564
20565         BRCMS_PHY_WAR_PR51571(pi);
20566
20567         write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20568                         ci->RF_core2_tx_pga_pad_tn);
20569         write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20570                         ci->RF_core2_tx_mx_bgtrim);
20571
20572         udelay(50);
20573
20574         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20575         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20576
20577         BRCMS_PHY_WAR_PR51571(pi);
20578
20579         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20580
20581         udelay(300);
20582 }
20583
20584 static void
20585 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20586                                  const struct chan_info_nphy_radio205x *ci)
20587 {
20588         const struct radio_regs *regs_SYN_2056_ptr = NULL;
20589
20590         write_radio_reg(pi,
20591                         RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20592                         ci->RF_SYN_pll_vcocal1);
20593         write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20594                         ci->RF_SYN_pll_vcocal2);
20595         write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20596                         ci->RF_SYN_pll_refdiv);
20597         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20598                         ci->RF_SYN_pll_mmd2);
20599         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20600                         ci->RF_SYN_pll_mmd1);
20601         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20602                         ci->RF_SYN_pll_loopfilter1);
20603         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20604                         ci->RF_SYN_pll_loopfilter2);
20605         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20606                         ci->RF_SYN_pll_loopfilter3);
20607         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20608                         ci->RF_SYN_pll_loopfilter4);
20609         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20610                         ci->RF_SYN_pll_loopfilter5);
20611         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20612                         ci->RF_SYN_reserved_addr27);
20613         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20614                         ci->RF_SYN_reserved_addr28);
20615         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20616                         ci->RF_SYN_reserved_addr29);
20617         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20618                         ci->RF_SYN_logen_VCOBUF1);
20619         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20620                         ci->RF_SYN_logen_MIXER2);
20621         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20622                         ci->RF_SYN_logen_BUF3);
20623         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20624                         ci->RF_SYN_logen_BUF4);
20625
20626         write_radio_reg(pi,
20627                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20628                         ci->RF_RX0_lnaa_tune);
20629         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20630                         ci->RF_RX0_lnag_tune);
20631         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20632                         ci->RF_TX0_intpaa_boost_tune);
20633         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20634                         ci->RF_TX0_intpag_boost_tune);
20635         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20636                         ci->RF_TX0_pada_boost_tune);
20637         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20638                         ci->RF_TX0_padg_boost_tune);
20639         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20640                         ci->RF_TX0_pgaa_boost_tune);
20641         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20642                         ci->RF_TX0_pgag_boost_tune);
20643         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20644                         ci->RF_TX0_mixa_boost_tune);
20645         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20646                         ci->RF_TX0_mixg_boost_tune);
20647
20648         write_radio_reg(pi,
20649                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20650                         ci->RF_RX1_lnaa_tune);
20651         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20652                         ci->RF_RX1_lnag_tune);
20653         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20654                         ci->RF_TX1_intpaa_boost_tune);
20655         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20656                         ci->RF_TX1_intpag_boost_tune);
20657         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20658                         ci->RF_TX1_pada_boost_tune);
20659         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20660                         ci->RF_TX1_padg_boost_tune);
20661         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20662                         ci->RF_TX1_pgaa_boost_tune);
20663         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20664                         ci->RF_TX1_pgag_boost_tune);
20665         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20666                         ci->RF_TX1_mixa_boost_tune);
20667         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20668                         ci->RF_TX1_mixg_boost_tune);
20669
20670         if (NREV_IS(pi->pubpi.phy_rev, 3))
20671                 regs_SYN_2056_ptr = regs_SYN_2056;
20672         else if (NREV_IS(pi->pubpi.phy_rev, 4))
20673                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20674         else {
20675                 switch (pi->pubpi.radiorev) {
20676                 case 5:
20677                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20678                         break;
20679                 case 6:
20680                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20681                         break;
20682                 case 7:
20683                 case 9:
20684                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20685                         break;
20686                 case 8:
20687                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20688                         break;
20689                 case 11:
20690                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20691                         break;
20692                 }
20693         }
20694         if (CHSPEC_IS2G(pi->radio_chanspec))
20695                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20696                                 RADIO_2056_SYN,
20697                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20698         else
20699                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20700                                 RADIO_2056_SYN,
20701                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20702
20703         if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20704                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20705                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20706                                         RADIO_2056_SYN, 0x1f);
20707                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20708                                         RADIO_2056_SYN, 0x1f);
20709
20710                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20711                             (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20712                                 write_radio_reg(pi,
20713                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20714                                                 RADIO_2056_SYN, 0x14);
20715                                 write_radio_reg(pi,
20716                                                 RADIO_2056_SYN_PLL_CP2 |
20717                                                 RADIO_2056_SYN, 0x00);
20718                         } else {
20719                                 write_radio_reg(pi,
20720                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20721                                                 RADIO_2056_SYN, 0xb);
20722                                 write_radio_reg(pi,
20723                                                 RADIO_2056_SYN_PLL_CP2 |
20724                                                 RADIO_2056_SYN, 0x14);
20725                         }
20726                 }
20727         }
20728
20729         if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20730             (CHSPEC_IS2G(pi->radio_chanspec))) {
20731                 write_radio_reg(pi,
20732                                 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20733                                 0x1f);
20734                 write_radio_reg(pi,
20735                                 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20736                                 0x1f);
20737                 write_radio_reg(pi,
20738                                 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20739                                 0xb);
20740                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20741                                 0x20);
20742         }
20743
20744         if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20745                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
20746                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20747                                         RADIO_2056_SYN, 0x1f);
20748                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20749                                         RADIO_2056_SYN, 0x1f);
20750                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20751                                         RADIO_2056_SYN, 0x5);
20752                         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20753                                         RADIO_2056_SYN, 0xc);
20754                 }
20755         }
20756
20757         if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20758                 u16 pag_boost_tune;
20759                 u16 padg_boost_tune;
20760                 u16 pgag_boost_tune;
20761                 u16 mixg_boost_tune;
20762                 u16 bias, cascbias;
20763                 uint core;
20764
20765                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20766
20767                         if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20768
20769                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20770                                                  PADG_IDAC, 0xcc);
20771
20772                                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20773                                     (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20774                                         bias = 0x40;
20775                                         cascbias = 0x45;
20776                                         pag_boost_tune = 0x5;
20777                                         pgag_boost_tune = 0x33;
20778                                         padg_boost_tune = 0x77;
20779                                         mixg_boost_tune = 0x55;
20780                                 } else {
20781                                         bias = 0x25;
20782                                         cascbias = 0x20;
20783
20784                                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20785                                              pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20786                                             pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC) {
20787                                                 bias = 0x2a;
20788                                                 cascbias = 0x38;
20789                                         }
20790
20791                                         pag_boost_tune = 0x4;
20792                                         pgag_boost_tune = 0x03;
20793                                         padg_boost_tune = 0x77;
20794                                         mixg_boost_tune = 0x65;
20795                                 }
20796
20797                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20798                                                  INTPAG_IMAIN_STAT, bias);
20799                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20800                                                  INTPAG_IAUX_STAT, bias);
20801                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20802                                                  INTPAG_CASCBIAS, cascbias);
20803
20804                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20805                                                  INTPAG_BOOST_TUNE,
20806                                                  pag_boost_tune);
20807                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20808                                                  PGAG_BOOST_TUNE,
20809                                                  pgag_boost_tune);
20810                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20811                                                  PADG_BOOST_TUNE,
20812                                                  padg_boost_tune);
20813                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20814                                                  MIXG_BOOST_TUNE,
20815                                                  mixg_boost_tune);
20816                         } else {
20817
20818                                 bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20819                                        0x40 : 0x20;
20820
20821                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20822                                                  INTPAG_IMAIN_STAT, bias);
20823                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20824                                                  INTPAG_IAUX_STAT, bias);
20825                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20826                                                  INTPAG_CASCBIAS, 0x30);
20827                         }
20828                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20829                                          0xee);
20830                 }
20831         }
20832
20833         if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20834             && CHSPEC_IS5G(pi->radio_chanspec)) {
20835                 u16 paa_boost_tune;
20836                 u16 pada_boost_tune;
20837                 u16 pgaa_boost_tune;
20838                 u16 mixa_boost_tune;
20839                 u16 freq, pabias, cascbias;
20840                 uint core;
20841
20842                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20843
20844                 if (freq < 5150) {
20845
20846                         paa_boost_tune = 0xa;
20847                         pada_boost_tune = 0x77;
20848                         pgaa_boost_tune = 0xf;
20849                         mixa_boost_tune = 0xf;
20850                 } else if (freq < 5340) {
20851
20852                         paa_boost_tune = 0x8;
20853                         pada_boost_tune = 0x77;
20854                         pgaa_boost_tune = 0xfb;
20855                         mixa_boost_tune = 0xf;
20856                 } else if (freq < 5650) {
20857
20858                         paa_boost_tune = 0x0;
20859                         pada_boost_tune = 0x77;
20860                         pgaa_boost_tune = 0xb;
20861                         mixa_boost_tune = 0xf;
20862                 } else {
20863
20864                         paa_boost_tune = 0x0;
20865                         pada_boost_tune = 0x77;
20866                         if (freq != 5825)
20867                                 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20868                         else
20869                                 pgaa_boost_tune = 6;
20870
20871                         mixa_boost_tune = 0xf;
20872                 }
20873
20874                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20875                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20876                                          INTPAA_BOOST_TUNE, paa_boost_tune);
20877                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20878                                          PADA_BOOST_TUNE, pada_boost_tune);
20879                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20880                                          PGAA_BOOST_TUNE, pgaa_boost_tune);
20881                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20882                                          MIXA_BOOST_TUNE, mixa_boost_tune);
20883
20884                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20885                                          TXSPARE1, 0x30);
20886                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20887                                          PA_SPARE2, 0xee);
20888
20889                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20890                                          PADA_CASCBIAS, 0x3);
20891
20892                         cascbias = 0x30;
20893
20894                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20895                              pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20896                             pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC)
20897                                 cascbias = 0x35;
20898
20899                         pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
20900
20901                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20902                                          INTPAA_IAUX_STAT, pabias);
20903                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20904                                          INTPAA_IMAIN_STAT, pabias);
20905                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20906                                          INTPAA_CASCBIAS, cascbias);
20907                 }
20908         }
20909
20910         udelay(50);
20911
20912         wlc_phy_radio205x_vcocal_nphy(pi);
20913 }
20914
20915 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
20916 {
20917         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20918                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
20919                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
20920                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
20921                               (1 << 2));
20922                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
20923         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20924                 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
20925                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20926                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
20927                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20928                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
20929         }
20930
20931         udelay(300);
20932 }
20933
20934 static void
20935 wlc_phy_chanspec_radio2057_setup(
20936         struct brcms_phy *pi,
20937         const struct chan_info_nphy_radio2057 *ci,
20938         const struct chan_info_nphy_radio2057_rev5 *
20939         ci2)
20940 {
20941         int coreNum;
20942         u16 txmix2g_tune_boost_pu = 0;
20943         u16 pad2g_tune_pus = 0;
20944
20945         if (pi->pubpi.radiorev == 5) {
20946
20947                 write_radio_reg(pi,
20948                                 RADIO_2057_VCOCAL_COUNTVAL0,
20949                                 ci2->RF_vcocal_countval0);
20950                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20951                                 ci2->RF_vcocal_countval1);
20952                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20953                                 ci2->RF_rfpll_refmaster_sparextalsize);
20954                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20955                                 ci2->RF_rfpll_loopfilter_r1);
20956                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20957                                 ci2->RF_rfpll_loopfilter_c2);
20958                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20959                                 ci2->RF_rfpll_loopfilter_c1);
20960                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
20961                                 ci2->RF_cp_kpd_idac);
20962                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
20963                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
20964                 write_radio_reg(pi,
20965                                 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
20966                 write_radio_reg(pi,
20967                                 RADIO_2057_LOGEN_MX2G_TUNE,
20968                                 ci2->RF_logen_mx2g_tune);
20969                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20970                                 ci2->RF_logen_indbuf2g_tune);
20971
20972                 write_radio_reg(pi,
20973                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20974                                 ci2->RF_txmix2g_tune_boost_pu_core0);
20975                 write_radio_reg(pi,
20976                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20977                                 ci2->RF_pad2g_tune_pus_core0);
20978                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20979                                 ci2->RF_lna2g_tune_core0);
20980
20981                 write_radio_reg(pi,
20982                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20983                                 ci2->RF_txmix2g_tune_boost_pu_core1);
20984                 write_radio_reg(pi,
20985                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20986                                 ci2->RF_pad2g_tune_pus_core1);
20987                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20988                                 ci2->RF_lna2g_tune_core1);
20989
20990         } else {
20991
20992                 write_radio_reg(pi,
20993                                 RADIO_2057_VCOCAL_COUNTVAL0,
20994                                 ci->RF_vcocal_countval0);
20995                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20996                                 ci->RF_vcocal_countval1);
20997                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20998                                 ci->RF_rfpll_refmaster_sparextalsize);
20999                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21000                                 ci->RF_rfpll_loopfilter_r1);
21001                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21002                                 ci->RF_rfpll_loopfilter_c2);
21003                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21004                                 ci->RF_rfpll_loopfilter_c1);
21005                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
21006                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
21007                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
21008                 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
21009                 write_radio_reg(pi,
21010                                 RADIO_2057_LOGEN_MX2G_TUNE,
21011                                 ci->RF_logen_mx2g_tune);
21012                 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
21013                                 ci->RF_logen_mx5g_tune);
21014                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21015                                 ci->RF_logen_indbuf2g_tune);
21016                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
21017                                 ci->RF_logen_indbuf5g_tune);
21018
21019                 write_radio_reg(pi,
21020                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21021                                 ci->RF_txmix2g_tune_boost_pu_core0);
21022                 write_radio_reg(pi,
21023                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21024                                 ci->RF_pad2g_tune_pus_core0);
21025                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
21026                                 ci->RF_pga_boost_tune_core0);
21027                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
21028                                 ci->RF_txmix5g_boost_tune_core0);
21029                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
21030                                 ci->RF_pad5g_tune_misc_pus_core0);
21031                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21032                                 ci->RF_lna2g_tune_core0);
21033                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
21034                                 ci->RF_lna5g_tune_core0);
21035
21036                 write_radio_reg(pi,
21037                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21038                                 ci->RF_txmix2g_tune_boost_pu_core1);
21039                 write_radio_reg(pi,
21040                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21041                                 ci->RF_pad2g_tune_pus_core1);
21042                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
21043                                 ci->RF_pga_boost_tune_core1);
21044                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
21045                                 ci->RF_txmix5g_boost_tune_core1);
21046                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
21047                                 ci->RF_pad5g_tune_misc_pus_core1);
21048                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21049                                 ci->RF_lna2g_tune_core1);
21050                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
21051                                 ci->RF_lna5g_tune_core1);
21052         }
21053
21054         if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
21055
21056                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21057                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21058                                         0x3f);
21059                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21060                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21061                                         0x8);
21062                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21063                                         0x8);
21064                 } else {
21065                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21066                                         0x1f);
21067                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21068                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21069                                         0x8);
21070                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21071                                         0x8);
21072                 }
21073         } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
21074                    (pi->pubpi.radiorev == 8)) {
21075
21076                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21077                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21078                                         0x1b);
21079                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
21080                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21081                                         0xa);
21082                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21083                                         0xa);
21084                 } else {
21085                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21086                                         0x1f);
21087                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21088                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21089                                         0x8);
21090                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21091                                         0x8);
21092                 }
21093
21094         }
21095
21096         if (CHSPEC_IS2G(pi->radio_chanspec)) {
21097                 if (PHY_IPA(pi)) {
21098                         if (pi->pubpi.radiorev == 3)
21099                                 txmix2g_tune_boost_pu = 0x6b;
21100
21101                         if (pi->pubpi.radiorev == 5)
21102                                 pad2g_tune_pus = 0x73;
21103
21104                 } else {
21105                         if (pi->pubpi.radiorev != 5) {
21106                                 pad2g_tune_pus = 0x3;
21107
21108                                 txmix2g_tune_boost_pu = 0x61;
21109                         }
21110                 }
21111
21112                 for (coreNum = 0; coreNum <= 1; coreNum++) {
21113
21114                         if (txmix2g_tune_boost_pu != 0)
21115                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21116                                                  TXMIX2G_TUNE_BOOST_PU,
21117                                                  txmix2g_tune_boost_pu);
21118
21119                         if (pad2g_tune_pus != 0)
21120                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21121                                                  PAD2G_TUNE_PUS,
21122                                                  pad2g_tune_pus);
21123                 }
21124         }
21125
21126         udelay(50);
21127
21128         wlc_phy_radio205x_vcocal_nphy(pi);
21129 }
21130
21131 static void
21132 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21133                             const struct nphy_sfo_cfg *ci)
21134 {
21135         u16 val;
21136         struct si_info *sii = container_of(pi->sh->sih, struct si_info, pub);
21137
21138         val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21139         if (CHSPEC_IS5G(chanspec) && !val) {
21140
21141                 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21142                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21143                       (val | MAC_PHY_FORCE_CLK));
21144
21145                 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21146                            (BBCFG_RESETCCA | BBCFG_RESETRX));
21147
21148                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21149
21150                 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21151         } else if (!CHSPEC_IS5G(chanspec) && val) {
21152
21153                 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21154
21155                 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21156                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21157                       (val | MAC_PHY_FORCE_CLK));
21158
21159                 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21160                             (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21161
21162                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21163         }
21164
21165         write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21166         write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21167         write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21168
21169         write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21170         write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21171         write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21172
21173         if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21174                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21175
21176                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21177         } else {
21178                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21179                                         NPHY_ClassifierCtrl_ofdm_en);
21180
21181                 if (CHSPEC_IS2G(chanspec))
21182                         and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21183         }
21184
21185         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21186                 wlc_phy_txpwr_fixpower_nphy(pi);
21187
21188         if (NREV_LT(pi->pubpi.phy_rev, 3))
21189                 wlc_phy_adjust_lnagaintbl_nphy(pi);
21190
21191         wlc_phy_txlpfbw_nphy(pi);
21192
21193         if (NREV_GE(pi->pubpi.phy_rev, 3)
21194             && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21195                 u8 spuravoid = 0;
21196
21197                 val = CHSPEC_CHANNEL(chanspec);
21198                 if (!CHSPEC_IS40(pi->radio_chanspec)) {
21199                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21200                                 if ((val == 13) || (val == 14) || (val == 153))
21201                                         spuravoid = 1;
21202                         } else if (((val >= 5) && (val <= 8)) || (val == 13)
21203                                    || (val == 14)) {
21204                                 spuravoid = 1;
21205                         }
21206                 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21207                         if (val == 54)
21208                                 spuravoid = 1;
21209                 } else if (pi->nphy_aband_spurwar_en &&
21210                     ((val == 38) || (val == 102) || (val == 118))) {
21211                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716)
21212                             && (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
21213                                 spuravoid = 0;
21214                         } else {
21215                                 spuravoid = 1;
21216                         }
21217                 }
21218
21219                 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21220                         spuravoid = 1;
21221
21222                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21223                     (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21224                         bcma_pmu_spuravoid_pllupdate(&sii->icbus->drv_cc,
21225                                                      spuravoid);
21226                 } else {
21227                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21228                         bcma_pmu_spuravoid_pllupdate(&sii->icbus->drv_cc,
21229                                                      spuravoid);
21230                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21231                 }
21232
21233                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224) ||
21234                     (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21235                         if (spuravoid == 1) {
21236                                 bcma_write16(pi->d11core,
21237                                              D11REGOFFS(tsf_clk_frac_l),
21238                                              0x5341);
21239                                 bcma_write16(pi->d11core,
21240                                              D11REGOFFS(tsf_clk_frac_h), 0x8);
21241                         } else {
21242                                 bcma_write16(pi->d11core,
21243                                              D11REGOFFS(tsf_clk_frac_l),
21244                                              0x8889);
21245                                 bcma_write16(pi->d11core,
21246                                              D11REGOFFS(tsf_clk_frac_h), 0x8);
21247                         }
21248                 }
21249
21250                 if (!((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21251                       (pi->sh->chip == BCMA_CHIP_ID_BCM47162)))
21252                         wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21253
21254                 mod_phy_reg(pi, 0x01, (0x1 << 15),
21255                             ((spuravoid > 0) ? (0x1 << 15) : 0));
21256
21257                 wlc_phy_resetcca_nphy(pi);
21258
21259                 pi->phy_isspuravoid = (spuravoid > 0);
21260         }
21261
21262         if (NREV_LT(pi->pubpi.phy_rev, 7))
21263                 write_phy_reg(pi, 0x17e, 0x3830);
21264
21265         wlc_phy_spurwar_nphy(pi);
21266 }
21267
21268 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21269 {
21270         int freq;
21271         const struct chan_info_nphy_radio2057 *t0 = NULL;
21272         const struct chan_info_nphy_radio205x *t1 = NULL;
21273         const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21274         const struct chan_info_nphy_2055 *t3 = NULL;
21275
21276         if (!wlc_phy_chan2freq_nphy
21277                     (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21278                 return;
21279
21280         wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21281
21282         if (CHSPEC_BW(chanspec) != pi->bw)
21283                 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21284
21285         if (CHSPEC_IS40(chanspec)) {
21286                 if (CHSPEC_SB_UPPER(chanspec)) {
21287                         or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21288                         if (NREV_GE(pi->pubpi.phy_rev, 7))
21289                                 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21290                 } else {
21291                         and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21292                         if (NREV_GE(pi->pubpi.phy_rev, 7))
21293                                 and_phy_reg(pi, 0x310,
21294                                             (~PRIM_SEL_UP20 & 0xffff));
21295                 }
21296         }
21297
21298         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21299                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21300
21301                         if ((pi->pubpi.radiorev <= 4)
21302                             || (pi->pubpi.radiorev == 6)) {
21303                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21304                                               0x2,
21305                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
21306                                                : 0));
21307                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21308                                               0x2,
21309                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
21310                                                : 0));
21311                         }
21312
21313                         wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21314                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
21315                                 (pi->pubpi.radiorev == 5) ?
21316                                 (const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21317                                 (const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21318
21319                 } else {
21320
21321                         mod_radio_reg(pi,
21322                                       RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21323                                       0x4,
21324                                       (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21325                         wlc_phy_chanspec_radio2056_setup(pi, t1);
21326
21327                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
21328                                 (const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21329                 }
21330
21331         } else {
21332
21333                 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21334                               (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21335                                : (0x05 << 4)));
21336
21337                 wlc_phy_chanspec_radio2055_setup(pi, t3);
21338                 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21339                                             (const struct nphy_sfo_cfg *)
21340                                              &(t3->PHY_BW1a));
21341         }
21342
21343 }
21344
21345 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21346 {
21347         struct brcms_phy *pi = (struct brcms_phy *) ppi;
21348         u16 mask = 0xfc00;
21349         u32 mc = 0;
21350
21351         if (NREV_GE(pi->pubpi.phy_rev, 7))
21352                 return;
21353
21354         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21355                 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21356
21357                 if (!lut_init)
21358                         return;
21359
21360                 if (pi->srom_fem2g.antswctrllut == 0) {
21361                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21362                                                  1, 0x02, 16, &v0);
21363                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21364                                                  1, 0x03, 16, &v1);
21365                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21366                                                  1, 0x08, 16, &v2);
21367                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21368                                                  1, 0x0C, 16, &v3);
21369                 }
21370
21371                 if (pi->srom_fem5g.antswctrllut == 0) {
21372                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21373                                                  1, 0x12, 16, &v0);
21374                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21375                                                  1, 0x13, 16, &v1);
21376                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21377                                                  1, 0x18, 16, &v2);
21378                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21379                                                  1, 0x1C, 16, &v3);
21380                 }
21381         } else {
21382
21383                 write_phy_reg(pi, 0xc8, 0x0);
21384                 write_phy_reg(pi, 0xc9, 0x0);
21385
21386                 bcma_chipco_gpio_control(&pi->d11core->bus->drv_cc, mask, mask);
21387
21388                 mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
21389                 mc &= ~MCTL_GPOUT_SEL_MASK;
21390                 bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
21391
21392                 bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
21393
21394                 bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out), ~mask);
21395
21396                 if (lut_init) {
21397                         write_phy_reg(pi, 0xf8, 0x02d8);
21398                         write_phy_reg(pi, 0xf9, 0x0301);
21399                         write_phy_reg(pi, 0xfa, 0x02d8);
21400                         write_phy_reg(pi, 0xfb, 0x0301);
21401                 }
21402         }
21403 }
21404
21405 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21406 {
21407         u16 curr_ctl, new_ctl;
21408         bool suspended = false;
21409
21410         if (D11REV_IS(pi->sh->corerev, 16)) {
21411                 suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21412                              MCTL_EN_MAC) ? false : true;
21413                 if (!suspended)
21414                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
21415         }
21416
21417         curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21418
21419         new_ctl = (curr_ctl & (~mask)) | (val & mask);
21420
21421         mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21422
21423         if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21424                 wlapi_enable_mac(pi->sh->physhim);
21425
21426         return new_ctl;
21427 }
21428
21429 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21430 {
21431         u16 trigger_mask, status_mask;
21432         u16 orig_RfseqCoreActv;
21433
21434         switch (cmd) {
21435         case NPHY_RFSEQ_RX2TX:
21436                 trigger_mask = NPHY_RfseqTrigger_rx2tx;
21437                 status_mask = NPHY_RfseqStatus_rx2tx;
21438                 break;
21439         case NPHY_RFSEQ_TX2RX:
21440                 trigger_mask = NPHY_RfseqTrigger_tx2rx;
21441                 status_mask = NPHY_RfseqStatus_tx2rx;
21442                 break;
21443         case NPHY_RFSEQ_RESET2RX:
21444                 trigger_mask = NPHY_RfseqTrigger_reset2rx;
21445                 status_mask = NPHY_RfseqStatus_reset2rx;
21446                 break;
21447         case NPHY_RFSEQ_UPDATEGAINH:
21448                 trigger_mask = NPHY_RfseqTrigger_updategainh;
21449                 status_mask = NPHY_RfseqStatus_updategainh;
21450                 break;
21451         case NPHY_RFSEQ_UPDATEGAINL:
21452                 trigger_mask = NPHY_RfseqTrigger_updategainl;
21453                 status_mask = NPHY_RfseqStatus_updategainl;
21454                 break;
21455         case NPHY_RFSEQ_UPDATEGAINU:
21456                 trigger_mask = NPHY_RfseqTrigger_updategainu;
21457                 status_mask = NPHY_RfseqStatus_updategainu;
21458                 break;
21459         default:
21460                 return;
21461         }
21462
21463         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21464         or_phy_reg(pi, 0xa1,
21465                    (NPHY_RfseqMode_CoreActv_override |
21466                     NPHY_RfseqMode_Trigger_override));
21467         or_phy_reg(pi, 0xa3, trigger_mask);
21468         SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21469         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21470         WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21471 }
21472
21473 static void
21474 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21475                                      u8 core_mask, u8 off)
21476 {
21477         u16 rfmxgain = 0, lpfgain = 0;
21478         u16 tgain = 0;
21479
21480         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21481
21482                 switch (cmd) {
21483                 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21484                         wlc_phy_rfctrl_override_nphy_rev7(
21485                                 pi, (0x1 << 5),
21486                                 value, core_mask, off,
21487                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21488                         wlc_phy_rfctrl_override_nphy_rev7(
21489                                 pi, (0x1 << 4), value,
21490                                 core_mask, off,
21491                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21492                         wlc_phy_rfctrl_override_nphy_rev7(
21493                                 pi, (0x1 << 3), value,
21494                                 core_mask, off,
21495                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21496                         break;
21497                 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21498                         wlc_phy_rfctrl_override_nphy_rev7(
21499                                 pi, (0x1 << 2),
21500                                 value, core_mask, off,
21501                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21502                         wlc_phy_rfctrl_override_nphy_rev7(
21503                                 pi, (0x1 << 1), value,
21504                                 core_mask, off,
21505                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21506                         wlc_phy_rfctrl_override_nphy_rev7(
21507                                 pi, (0x1 << 0), value,
21508                                 core_mask, off,
21509                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21510                         wlc_phy_rfctrl_override_nphy_rev7(
21511                                 pi, (0x1 << 1), value,
21512                                 core_mask, off,
21513                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21514                         wlc_phy_rfctrl_override_nphy_rev7(
21515                                 pi, (0x1 << 11), 0,
21516                                 core_mask, off,
21517                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21518                         break;
21519                 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21520                         wlc_phy_rfctrl_override_nphy_rev7(
21521                                 pi, (0x1 << 2),
21522                                 value, core_mask, off,
21523                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21524                         wlc_phy_rfctrl_override_nphy_rev7(
21525                                 pi, (0x1 << 1), value,
21526                                 core_mask, off,
21527                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21528                         wlc_phy_rfctrl_override_nphy_rev7(
21529                                 pi, (0x1 << 0), value,
21530                                 core_mask, off,
21531                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21532                         wlc_phy_rfctrl_override_nphy_rev7(
21533                                 pi, (0x1 << 2), value,
21534                                 core_mask, off,
21535                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21536                         wlc_phy_rfctrl_override_nphy_rev7(
21537                                 pi, (0x1 << 11), 1,
21538                                 core_mask, off,
21539                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21540                         break;
21541                 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21542                         rfmxgain = value & 0x000ff;
21543                         lpfgain = value & 0x0ff00;
21544                         lpfgain = lpfgain >> 8;
21545
21546                         wlc_phy_rfctrl_override_nphy_rev7(
21547                                 pi, (0x1 << 11),
21548                                 rfmxgain, core_mask,
21549                                 off,
21550                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21551                         wlc_phy_rfctrl_override_nphy_rev7(
21552                                 pi, (0x3 << 13),
21553                                 lpfgain, core_mask,
21554                                 off,
21555                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21556                         break;
21557                 case NPHY_REV7_RfctrlOverride_cmd_txgain:
21558                         tgain = value & 0x7fff;
21559                         lpfgain = value & 0x8000;
21560                         lpfgain = lpfgain >> 14;
21561
21562                         wlc_phy_rfctrl_override_nphy_rev7(
21563                                 pi, (0x1 << 12),
21564                                 tgain, core_mask, off,
21565                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21566                         wlc_phy_rfctrl_override_nphy_rev7(
21567                                 pi, (0x1 << 13),
21568                                 lpfgain, core_mask,
21569                                 off,
21570                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21571                         break;
21572                 }
21573         }
21574 }
21575
21576 static void
21577 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21578                                u8 coresel, u8 rail, u8 rssi_type)
21579 {
21580         u16 valuetostuff;
21581
21582         offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21583                  NPHY_RSSICAL_MAXREAD : offset;
21584         offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21585                  -NPHY_RSSICAL_MAXREAD - 1 : offset;
21586
21587         valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21588
21589         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21590              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21591             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21592                 write_phy_reg(pi, 0x1a6, valuetostuff);
21593
21594         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21595              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21596             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21597                 write_phy_reg(pi, 0x1ac, valuetostuff);
21598
21599         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21600              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21601             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21602                 write_phy_reg(pi, 0x1b2, valuetostuff);
21603
21604         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21605              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21606             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21607                 write_phy_reg(pi, 0x1b8, valuetostuff);
21608
21609         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21610              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21611             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21612                 write_phy_reg(pi, 0x1a4, valuetostuff);
21613
21614         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21615              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21616             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21617                 write_phy_reg(pi, 0x1aa, valuetostuff);
21618
21619         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21620              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21621             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21622                 write_phy_reg(pi, 0x1b0, valuetostuff);
21623
21624         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21625              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21626             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21627                 write_phy_reg(pi, 0x1b6, valuetostuff);
21628
21629         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21630              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21631             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21632                 write_phy_reg(pi, 0x1a5, valuetostuff);
21633         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21634              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21635             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21636                 write_phy_reg(pi, 0x1ab, valuetostuff);
21637
21638         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21639              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21640             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21641                 write_phy_reg(pi, 0x1b1, valuetostuff);
21642
21643         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21644              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21645             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21646                 write_phy_reg(pi, 0x1b7, valuetostuff);
21647
21648         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21649              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21650             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21651                 write_phy_reg(pi, 0x1a7, valuetostuff);
21652         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21653              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21654             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21655                 write_phy_reg(pi, 0x1ad, valuetostuff);
21656         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21657              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21658             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21659                 write_phy_reg(pi, 0x1b3, valuetostuff);
21660         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21661              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21662             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21663                 write_phy_reg(pi, 0x1b9, valuetostuff);
21664
21665         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21666              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21667             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21668                 write_phy_reg(pi, 0x1a8, valuetostuff);
21669
21670         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21671              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21672             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21673                 write_phy_reg(pi, 0x1ae, valuetostuff);
21674
21675         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21676              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21677             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21678                 write_phy_reg(pi, 0x1b4, valuetostuff);
21679
21680         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21681              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21682             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21683                 write_phy_reg(pi, 0x1ba, valuetostuff);
21684
21685         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21686              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21687             (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21688                 write_phy_reg(pi, 0x1a9, valuetostuff);
21689         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21690              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21691             (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21692                 write_phy_reg(pi, 0x1b5, valuetostuff);
21693
21694         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21695              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21696             (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21697                 write_phy_reg(pi, 0x1af, valuetostuff);
21698
21699         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21700              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21701             (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21702                 write_phy_reg(pi, 0x1bb, valuetostuff);
21703 }
21704
21705 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21706 {
21707         if (PHY_IPA(pi)) {
21708                 if (NREV_GE(pi->pubpi.phy_rev, 7))
21709                         write_radio_reg(pi,
21710                                         ((core == PHY_CORE_0) ?
21711                                          RADIO_2057_TX0_TX_SSI_MUX :
21712                                          RADIO_2057_TX1_TX_SSI_MUX),
21713                                         (CHSPEC_IS5G(pi->radio_chanspec) ?
21714                                         0xc : 0xe));
21715                 else
21716                         write_radio_reg(pi,
21717                                         RADIO_2056_TX_TX_SSI_MUX |
21718                                         ((core == PHY_CORE_0) ?
21719                                          RADIO_2056_TX0 : RADIO_2056_TX1),
21720                                         (CHSPEC_IS5G(pi->radio_chanspec) ?
21721                                         0xc : 0xe));
21722         } else {
21723                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21724                         write_radio_reg(pi,
21725                                         ((core == PHY_CORE_0) ?
21726                                          RADIO_2057_TX0_TX_SSI_MUX :
21727                                          RADIO_2057_TX1_TX_SSI_MUX),
21728                                         0x11);
21729
21730                         if (pi->pubpi.radioid == BCM2057_ID)
21731                                 write_radio_reg(pi,
21732                                                 RADIO_2057_IQTEST_SEL_PU, 0x1);
21733
21734                 } else {
21735                         write_radio_reg(pi,
21736                                         RADIO_2056_TX_TX_SSI_MUX |
21737                                         ((core == PHY_CORE_0) ?
21738                                          RADIO_2056_TX0 : RADIO_2056_TX1),
21739                                         0x11);
21740                 }
21741         }
21742 }
21743
21744 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21745 {
21746         u16 mask, val;
21747         u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21748             startseq;
21749         u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21750             rfctrlovr_trigger_val;
21751         u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21752         u16 rfctrlcmd_val, rfctrlovr_val;
21753         u8 core;
21754
21755         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21756                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21757                         mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21758                         mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21759
21760                         mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21761                         mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21762
21763                         mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21764                         mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21765
21766                         mask = (0x1 << 2) |
21767                                (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21768                         mod_phy_reg(pi, 0xf9, mask, 0);
21769                         mod_phy_reg(pi, 0xfb, mask, 0);
21770
21771                 } else {
21772                         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21773                                 if (core_code == RADIO_MIMO_CORESEL_CORE1
21774                                     && core == PHY_CORE_1)
21775                                         continue;
21776                                 else if (core_code == RADIO_MIMO_CORESEL_CORE2
21777                                          && core == PHY_CORE_0)
21778                                         continue;
21779
21780                                 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21781                                             0x8f : 0xa5, (0x1 << 9), 1 << 9);
21782
21783                                 if (rssi_type == NPHY_RSSI_SEL_W1 ||
21784                                     rssi_type == NPHY_RSSI_SEL_W2 ||
21785                                     rssi_type == NPHY_RSSI_SEL_NB) {
21786                                         mod_phy_reg(pi,
21787                                                     (core ==
21788                                                      PHY_CORE_0) ? 0xa6 : 0xa7,
21789                                                     (0x3 << 8), 0);
21790
21791                                         mask = (0x1 << 2) |
21792                                                (0x1 << 3) |
21793                                                (0x1 << 4) | (0x1 << 5);
21794                                         mod_phy_reg(pi,
21795                                                     (core ==
21796                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
21797                                                     mask, 0);
21798
21799                                         if (rssi_type == NPHY_RSSI_SEL_W1) {
21800                                                 if (CHSPEC_IS5G(
21801                                                           pi->radio_chanspec)) {
21802                                                         mask = (0x1 << 2);
21803                                                         val = 1 << 2;
21804                                                 } else {
21805                                                         mask = (0x1 << 3);
21806                                                         val = 1 << 3;
21807                                                 }
21808                                         } else if (rssi_type ==
21809                                                    NPHY_RSSI_SEL_W2) {
21810                                                 mask = (0x1 << 4);
21811                                                 val = 1 << 4;
21812                                         } else {
21813                                                 mask = (0x1 << 5);
21814                                                 val = 1 << 5;
21815                                         }
21816                                         mod_phy_reg(pi,
21817                                                     (core ==
21818                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
21819                                                     mask, val);
21820
21821                                         mask = (0x1 << 5);
21822                                         val = 1 << 5;
21823                                         mod_phy_reg(pi, (core == PHY_CORE_0) ?
21824                                                     0xe5 : 0xe6, mask, val);
21825                                 } else {
21826                                         if (rssi_type == NPHY_RSSI_SEL_TBD) {
21827                                                 mask = (0x3 << 8);
21828                                                 val = 1 << 8;
21829                                                 mod_phy_reg(pi,
21830                                                             (core ==
21831                                                              PHY_CORE_0) ? 0xa6
21832                                                             : 0xa7, mask, val);
21833                                                 mask = (0x3 << 10);
21834                                                 val = 1 << 10;
21835                                                 mod_phy_reg(pi,
21836                                                             (core ==
21837                                                              PHY_CORE_0) ? 0xa6
21838                                                             : 0xa7, mask, val);
21839                                         } else if (rssi_type ==
21840                                                    NPHY_RSSI_SEL_IQ) {
21841                                                 mask = (0x3 << 8);
21842                                                 val = 2 << 8;
21843                                                 mod_phy_reg(pi,
21844                                                             (core ==
21845                                                              PHY_CORE_0) ? 0xa6
21846                                                             : 0xa7, mask, val);
21847                                                 mask = (0x3 << 10);
21848                                                 val = 2 << 10;
21849                                                 mod_phy_reg(pi,
21850                                                             (core ==
21851                                                              PHY_CORE_0) ? 0xa6
21852                                                             : 0xa7, mask, val);
21853                                         } else {
21854                                                 mask = (0x3 << 8);
21855                                                 val = 3 << 8;
21856                                                 mod_phy_reg(pi,
21857                                                             (core ==
21858                                                              PHY_CORE_0) ? 0xa6
21859                                                             : 0xa7, mask, val);
21860                                                 mask = (0x3 << 10);
21861                                                 val = 3 << 10;
21862                                                 mod_phy_reg(pi,
21863                                                             (core ==
21864                                                              PHY_CORE_0) ? 0xa6
21865                                                             : 0xa7, mask, val);
21866                                                 brcms_phy_wr_tx_mux(pi, core);
21867                                                 afectrlovr_rssi_val = 1 << 9;
21868                                                 mod_phy_reg(pi,
21869                                                            (core ==
21870                                                             PHY_CORE_0) ? 0x8f
21871                                                            : 0xa5, (0x1 << 9),
21872                                                            afectrlovr_rssi_val);
21873                                         }
21874                                 }
21875                         }
21876                 }
21877         } else {
21878
21879                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21880                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21881                     (rssi_type == NPHY_RSSI_SEL_NB))
21882                         val = 0x0;
21883                 else if (rssi_type == NPHY_RSSI_SEL_TBD)
21884                         val = 0x1;
21885                 else if (rssi_type == NPHY_RSSI_SEL_IQ)
21886                         val = 0x2;
21887                 else
21888                         val = 0x3;
21889
21890                 mask = ((0x3 << 12) | (0x3 << 14));
21891                 val = (val << 12) | (val << 14);
21892                 mod_phy_reg(pi, 0xa6, mask, val);
21893                 mod_phy_reg(pi, 0xa7, mask, val);
21894
21895                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21896                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21897                     (rssi_type == NPHY_RSSI_SEL_NB)) {
21898                         if (rssi_type == NPHY_RSSI_SEL_W1)
21899                                 val = 0x1;
21900                         if (rssi_type == NPHY_RSSI_SEL_W2)
21901                                 val = 0x2;
21902                         if (rssi_type == NPHY_RSSI_SEL_NB)
21903                                 val = 0x3;
21904
21905                         mask = (0x3 << 4);
21906                         val = (val << 4);
21907                         mod_phy_reg(pi, 0x7a, mask, val);
21908                         mod_phy_reg(pi, 0x7d, mask, val);
21909                 }
21910
21911                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21912                         afectrlovr_rssi_val = 0;
21913                         rfctrlcmd_rxen_val = 0;
21914                         rfctrlcmd_coresel_val = 0;
21915                         rfctrlovr_rssi_val = 0;
21916                         rfctrlovr_rxen_val = 0;
21917                         rfctrlovr_coresel_val = 0;
21918                         rfctrlovr_trigger_val = 0;
21919                         startseq = 0;
21920                 } else {
21921                         afectrlovr_rssi_val = 1;
21922                         rfctrlcmd_rxen_val = 1;
21923                         rfctrlcmd_coresel_val = core_code;
21924                         rfctrlovr_rssi_val = 1;
21925                         rfctrlovr_rxen_val = 1;
21926                         rfctrlovr_coresel_val = 1;
21927                         rfctrlovr_trigger_val = 1;
21928                         startseq = 1;
21929                 }
21930
21931                 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
21932                 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
21933                                        12) | (afectrlovr_rssi_val << 13);
21934                 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
21935                             afectrlovr_rssi_val);
21936
21937                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21938                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21939                     (rssi_type == NPHY_RSSI_SEL_NB)) {
21940                         rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
21941                         rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
21942                                         (rfctrlcmd_coresel_val << 3);
21943
21944                         rfctrlovr_mask = ((0x1 << 5) |
21945                                           (0x1 << 12) |
21946                                           (0x1 << 1) | (0x1 << 0));
21947                         rfctrlovr_val = (rfctrlovr_rssi_val <<
21948                                          5) |
21949                                         (rfctrlovr_rxen_val << 12) |
21950                                         (rfctrlovr_coresel_val << 1) |
21951                                         (rfctrlovr_trigger_val << 0);
21952
21953                         mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
21954                         mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
21955
21956                         mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
21957                         udelay(20);
21958
21959                         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
21960                 }
21961         }
21962 }
21963
21964 int
21965 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
21966                        u8 nsamps)
21967 {
21968         s16 rssi0, rssi1;
21969         u16 afectrlCore1_save = 0;
21970         u16 afectrlCore2_save = 0;
21971         u16 afectrlOverride1_save = 0;
21972         u16 afectrlOverride2_save = 0;
21973         u16 rfctrlOverrideAux0_save = 0;
21974         u16 rfctrlOverrideAux1_save = 0;
21975         u16 rfctrlMiscReg1_save = 0;
21976         u16 rfctrlMiscReg2_save = 0;
21977         u16 rfctrlcmd_save = 0;
21978         u16 rfctrloverride_save = 0;
21979         u16 rfctrlrssiothers1_save = 0;
21980         u16 rfctrlrssiothers2_save = 0;
21981         s8 tmp_buf[4];
21982         u8 ctr = 0, samp = 0;
21983         s32 rssi_out_val;
21984         u16 gpiosel_orig;
21985
21986         afectrlCore1_save = read_phy_reg(pi, 0xa6);
21987         afectrlCore2_save = read_phy_reg(pi, 0xa7);
21988         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21989                 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21990                 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21991                 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
21992                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21993                 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21994                 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21995         } else {
21996                 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
21997                 rfctrlcmd_save = read_phy_reg(pi, 0x78);
21998                 rfctrloverride_save = read_phy_reg(pi, 0xec);
21999                 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
22000                 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
22001         }
22002
22003         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22004
22005         gpiosel_orig = read_phy_reg(pi, 0xca);
22006         if (NREV_LT(pi->pubpi.phy_rev, 2))
22007                 write_phy_reg(pi, 0xca, 5);
22008
22009         for (ctr = 0; ctr < 4; ctr++)
22010                 rssi_buf[ctr] = 0;
22011
22012         for (samp = 0; samp < nsamps; samp++) {
22013                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
22014                         rssi0 = read_phy_reg(pi, 0x1c9);
22015                         rssi1 = read_phy_reg(pi, 0x1ca);
22016                 } else {
22017                         rssi0 = read_phy_reg(pi, 0x219);
22018                         rssi1 = read_phy_reg(pi, 0x21a);
22019                 }
22020
22021                 ctr = 0;
22022                 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
22023                 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
22024                 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
22025                 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
22026
22027                 for (ctr = 0; ctr < 4; ctr++)
22028                         rssi_buf[ctr] += tmp_buf[ctr];
22029
22030         }
22031
22032         rssi_out_val = rssi_buf[3] & 0xff;
22033         rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
22034         rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
22035         rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
22036
22037         if (NREV_LT(pi->pubpi.phy_rev, 2))
22038                 write_phy_reg(pi, 0xca, gpiosel_orig);
22039
22040         write_phy_reg(pi, 0xa6, afectrlCore1_save);
22041         write_phy_reg(pi, 0xa7, afectrlCore2_save);
22042         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22043                 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
22044                 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
22045                 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
22046                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22047                 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
22048                 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
22049         } else {
22050                 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
22051                 write_phy_reg(pi, 0x78, rfctrlcmd_save);
22052                 write_phy_reg(pi, 0xec, rfctrloverride_save);
22053                 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
22054                 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
22055         }
22056
22057         return rssi_out_val;
22058 }
22059
22060 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
22061 {
22062         u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
22063         u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
22064         u16 pwrdet_rxtx_core1_save;
22065         u16 pwrdet_rxtx_core2_save;
22066         u16 afectrlCore1_save;
22067         u16 afectrlCore2_save;
22068         u16 afectrlOverride_save;
22069         u16 afectrlOverride2_save;
22070         u16 pd_pll_ts_save;
22071         u16 gpioSel_save;
22072         s32 radio_temp[4];
22073         s32 radio_temp2[4];
22074         u16 syn_tempprocsense_save;
22075         s16 offset = 0;
22076
22077         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22078                 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
22079                 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
22080                 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
22081                 s32 auxADC_Vl;
22082                 u16 RfctrlOverride5_save, RfctrlOverride6_save;
22083                 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
22084                 u16 RSSIMultCoef0QPowerDet_save;
22085                 u16 tempsense_Rcal;
22086
22087                 syn_tempprocsense_save =
22088                         read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
22089
22090                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22091                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22092                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22093                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22094                 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
22095                 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22096                 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22097                 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22098                 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22099
22100                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22101                                         &auxADC_Vmid_save);
22102                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22103                                         &auxADC_Av_save);
22104                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22105                                         &auxADC_rssi_ctrlL_save);
22106                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22107                                         &auxADC_rssi_ctrlH_save);
22108
22109                 write_phy_reg(pi, 0x1ae, 0x0);
22110
22111                 auxADC_rssi_ctrlL = 0x0;
22112                 auxADC_rssi_ctrlH = 0x20;
22113                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22114                                          &auxADC_rssi_ctrlL);
22115                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22116                                          &auxADC_rssi_ctrlH);
22117
22118                 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22119
22120                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22121                                 tempsense_Rcal | 0x01);
22122
22123                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22124                                                   1, 0, 0,
22125                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
22126                 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22127                 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22128                 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22129                 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22130
22131                 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22132                 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22133                 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22134                 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22135                 udelay(5);
22136                 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22137                 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22138                 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22139                 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22140                 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22141                 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22142                 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22143                 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22144                 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22145                 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22146
22147                 auxADC_Vmid = 0xA3;
22148                 auxADC_Av = 0x0;
22149                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22150                                          &auxADC_Vmid);
22151                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22152                                          &auxADC_Av);
22153
22154                 udelay(3);
22155
22156                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22157                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22158                                 tempsense_Rcal | 0x03);
22159
22160                 udelay(5);
22161                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22162
22163                 auxADC_Av = 0x7;
22164                 if (radio_temp[1] + radio_temp2[1] < -30) {
22165                         auxADC_Vmid = 0x45;
22166                         auxADC_Vl = 263;
22167                 } else if (radio_temp[1] + radio_temp2[1] < -9) {
22168                         auxADC_Vmid = 0x200;
22169                         auxADC_Vl = 467;
22170                 } else if (radio_temp[1] + radio_temp2[1] < 11) {
22171                         auxADC_Vmid = 0x266;
22172                         auxADC_Vl = 634;
22173                 } else {
22174                         auxADC_Vmid = 0x2D5;
22175                         auxADC_Vl = 816;
22176                 }
22177
22178                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22179                                          &auxADC_Vmid);
22180                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22181                                          &auxADC_Av);
22182
22183                 udelay(3);
22184
22185                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22186                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22187                                 tempsense_Rcal | 0x01);
22188
22189                 udelay(5);
22190                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22191
22192                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22193                                 syn_tempprocsense_save);
22194
22195                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22196                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22197                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22198                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22199                 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22200                 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22201                 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22202                 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22203                 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22204
22205                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22206                                          &auxADC_Vmid_save);
22207                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22208                                          &auxADC_Av_save);
22209                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22210                                          &auxADC_rssi_ctrlL_save);
22211                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22212                                          &auxADC_rssi_ctrlH_save);
22213
22214                 if (pi->sh->chip == BCMA_CHIP_ID_BCM5357) {
22215                         radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
22216                                          + 88 * (auxADC_Vl) - 27111 +
22217                                          128) / 256;
22218                 } else {
22219                         radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22220                                          + 82 * (auxADC_Vl) - 28861 +
22221                                          128) / 256;
22222                 }
22223
22224                 offset = (s16) pi->phy_tempsense_offset;
22225
22226         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22227                 syn_tempprocsense_save =
22228                         read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22229
22230                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22231                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22232                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22233                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22234                 gpioSel_save = read_phy_reg(pi, 0xca);
22235
22236                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22237
22238                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22239                 if (NREV_LT(pi->pubpi.phy_rev, 7))
22240                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22241
22242                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22243                 if (NREV_GE(pi->pubpi.phy_rev, 7))
22244                         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22245                 else
22246                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22247
22248                 radio_temp[0] =
22249                         (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22250
22251                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22252                                 syn_tempprocsense_save);
22253
22254                 write_phy_reg(pi, 0xca, gpioSel_save);
22255                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22256                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22257                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22258                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22259
22260                 offset = (s16) pi->phy_tempsense_offset;
22261         } else {
22262
22263                 pwrdet_rxtx_core1_save =
22264                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22265                 pwrdet_rxtx_core2_save =
22266                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22267                 core1_txrf_iqcal1_save =
22268                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22269                 core1_txrf_iqcal2_save =
22270                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22271                 core2_txrf_iqcal1_save =
22272                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22273                 core2_txrf_iqcal2_save =
22274                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22275                 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22276
22277                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22278                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22279                 afectrlOverride_save = read_phy_reg(pi, 0xa5);
22280                 gpioSel_save = read_phy_reg(pi, 0xca);
22281
22282                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22283                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22284                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22285                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22286                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22287                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22288                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22289
22290                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22291                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22292
22293                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22294                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22295
22296                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22297                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22298
22299                 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22300                 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22301                 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22302                 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22303
22304                 radio_temp[0] =
22305                         (radio_temp[0] + radio_temp[1] + radio_temp[2] +
22306                          radio_temp[3]);
22307
22308                 radio_temp[0] =
22309                         (radio_temp[0] +
22310                          (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22311
22312                 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22313
22314                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22315                                 pwrdet_rxtx_core1_save);
22316                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22317                                 pwrdet_rxtx_core2_save);
22318                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22319                                 core1_txrf_iqcal1_save);
22320                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22321                                 core2_txrf_iqcal1_save);
22322                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22323                                 core1_txrf_iqcal2_save);
22324                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22325                                 core2_txrf_iqcal2_save);
22326                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22327
22328                 write_phy_reg(pi, 0xca, gpioSel_save);
22329                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22330                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22331                 write_phy_reg(pi, 0xa5, afectrlOverride_save);
22332         }
22333
22334         return (s16) radio_temp[0] + offset;
22335 }
22336
22337 static void
22338 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22339 {
22340         u8 core;
22341
22342         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22343                 if (rssi_type == NPHY_RSSI_SEL_NB) {
22344                         if (core == PHY_CORE_0) {
22345                                 mod_radio_reg(pi,
22346                                               RADIO_2055_CORE1_B0_NBRSSI_VCM,
22347                                               RADIO_2055_NBRSSI_VCM_I_MASK,
22348                                               vcm_buf[2 *
22349                                                       core] <<
22350                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
22351                                 mod_radio_reg(pi,
22352                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22353                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
22354                                               vcm_buf[2 * core +
22355                                                       1] <<
22356                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22357                         } else {
22358                                 mod_radio_reg(pi,
22359                                               RADIO_2055_CORE2_B0_NBRSSI_VCM,
22360                                               RADIO_2055_NBRSSI_VCM_I_MASK,
22361                                               vcm_buf[2 *
22362                                                       core] <<
22363                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
22364                                 mod_radio_reg(pi,
22365                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22366                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
22367                                               vcm_buf[2 * core +
22368                                                       1] <<
22369                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22370                         }
22371                 } else {
22372                         if (core == PHY_CORE_0)
22373                                 mod_radio_reg(pi,
22374                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22375                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
22376                                               vcm_buf[2 *
22377                                                       core] <<
22378                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22379                         else
22380                                 mod_radio_reg(pi,
22381                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22382                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
22383                                               vcm_buf[2 *
22384                                                       core] <<
22385                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22386                 }
22387         }
22388 }
22389
22390 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22391 {
22392         u16 classif_state;
22393         u16 clip_state[2];
22394         u16 clip_off[] = { 0xffff, 0xffff };
22395         s32 target_code;
22396         u8 vcm, min_vcm;
22397         u8 vcm_final = 0;
22398         u8 result_idx;
22399         s32 poll_results[8][4] = {
22400                 {0, 0, 0, 0},
22401                 {0, 0, 0, 0},
22402                 {0, 0, 0, 0},
22403                 {0, 0, 0, 0},
22404                 {0, 0, 0, 0},
22405                 {0, 0, 0, 0},
22406                 {0, 0, 0, 0},
22407                 {0, 0, 0, 0}
22408         };
22409         s32 poll_result_core[4] = { 0, 0, 0, 0 };
22410         s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22411         s32 fine_digital_offset[4];
22412         s32 poll_results_min[4] = { 0, 0, 0, 0 };
22413         s32 min_poll;
22414         u8 vcm_level_max;
22415         u8 core;
22416         u8 wb_cnt;
22417         u8 rssi_type;
22418         u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22419         u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22420         u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22421         u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22422         u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22423         u16 NPHY_RfctrlCmd_save;
22424         u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22425         u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22426         u8 rxcore_state;
22427         u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22428         u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22429         u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22430         u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22431
22432         NPHY_REV7_RfctrlOverride3_save =
22433                 NPHY_REV7_RfctrlOverride4_save =
22434                 NPHY_REV7_RfctrlOverride5_save =
22435                 NPHY_REV7_RfctrlOverride6_save =
22436                 NPHY_REV7_RfctrlMiscReg3_save =
22437                 NPHY_REV7_RfctrlMiscReg4_save =
22438                 NPHY_REV7_RfctrlMiscReg5_save =
22439                 NPHY_REV7_RfctrlMiscReg6_save = 0;
22440
22441         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22442         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22443         wlc_phy_clip_det_nphy(pi, 0, clip_state);
22444         wlc_phy_clip_det_nphy(pi, 1, clip_off);
22445
22446         NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22447         NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22448         NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22449         NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22450         NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22451         NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22452         NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22453         NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22454         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22455                 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22456                 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22457                 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22458                 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22459         }
22460         NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22461         NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22462         NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22463         NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22464         NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22465         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22466                 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22467                 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22468                 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22469                 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22470         }
22471         NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22472         NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22473
22474         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22475                                          RADIO_MIMO_CORESEL_ALLRXTX);
22476         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22477                                          RADIO_MIMO_CORESEL_ALLRXTX);
22478
22479         if (NREV_GE(pi->pubpi.phy_rev, 7))
22480                 wlc_phy_rfctrl_override_1tomany_nphy(
22481                         pi,
22482                         NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22483                         0, 0, 0);
22484         else
22485                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22486
22487         if (NREV_GE(pi->pubpi.phy_rev, 7))
22488                 wlc_phy_rfctrl_override_1tomany_nphy(
22489                         pi,
22490                         NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22491                         1, 0, 0);
22492         else
22493                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22494
22495         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22496                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22497                                                   1, 0, 0,
22498                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
22499                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22500                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
22501         } else {
22502                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22503                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22504         }
22505
22506         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22507                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22508                         wlc_phy_rfctrl_override_nphy_rev7(
22509                                 pi, (0x1 << 5),
22510                                 0, 0, 0,
22511                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22512                         wlc_phy_rfctrl_override_nphy_rev7(
22513                                 pi, (0x1 << 4), 1, 0,
22514                                 0,
22515                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22516                 } else {
22517                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22518                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22519                 }
22520
22521         } else {
22522                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22523                         wlc_phy_rfctrl_override_nphy_rev7(
22524                                 pi, (0x1 << 4),
22525                                 0, 0, 0,
22526                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22527                         wlc_phy_rfctrl_override_nphy_rev7(
22528                                 pi, (0x1 << 5), 1, 0,
22529                                 0,
22530                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22531                 } else {
22532                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22533                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22534                 }
22535         }
22536
22537         rxcore_state = wlc_phy_rxcore_getstate_nphy(
22538                 (struct brcms_phy_pub *) pi);
22539
22540         vcm_level_max = 8;
22541
22542         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22543
22544                 if ((rxcore_state & (1 << core)) == 0)
22545                         continue;
22546
22547                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22548                                                core ==
22549                                                PHY_CORE_0 ?
22550                                                RADIO_MIMO_CORESEL_CORE1 :
22551                                                RADIO_MIMO_CORESEL_CORE2,
22552                                                NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22553                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22554                                                core ==
22555                                                PHY_CORE_0 ?
22556                                                RADIO_MIMO_CORESEL_CORE1 :
22557                                                RADIO_MIMO_CORESEL_CORE2,
22558                                                NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22559
22560                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22561                         if (NREV_GE(pi->pubpi.phy_rev, 7))
22562                                 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22563                                               RADIO_2057_NB_MASTER_CORE0 :
22564                                               RADIO_2057_NB_MASTER_CORE1,
22565                                               RADIO_2057_VCM_MASK, vcm);
22566                         else
22567                                 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22568                                               ((core ==
22569                                                 PHY_CORE_0) ? RADIO_2056_RX0 :
22570                                                RADIO_2056_RX1),
22571                                               RADIO_2056_VCM_MASK,
22572                                               vcm << RADIO_2056_RSSI_VCM_SHIFT);
22573
22574                         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22575                                                &poll_results[vcm][0],
22576                                                NPHY_RSSICAL_NPOLL);
22577                 }
22578
22579                 for (result_idx = 0; result_idx < 4; result_idx++) {
22580                         if ((core == result_idx / 2) &&
22581                             (result_idx % 2 == 0)) {
22582
22583                                 min_d = NPHY_RSSICAL_MAXD;
22584                                 min_vcm = 0;
22585                                 min_poll =
22586                                         NPHY_RSSICAL_MAXREAD *
22587                                         NPHY_RSSICAL_NPOLL + 1;
22588                                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22589                                         curr_d =
22590                                                 poll_results[vcm][result_idx] *
22591                                                 poll_results[vcm][result_idx] +
22592                                                 poll_results[vcm][result_idx +
22593                                                                   1] *
22594                                                 poll_results[vcm][result_idx +
22595                                                                   1];
22596                                         if (curr_d < min_d) {
22597                                                 min_d = curr_d;
22598                                                 min_vcm = vcm;
22599                                         }
22600                                         if (poll_results[vcm][result_idx] <
22601                                             min_poll)
22602                                                 min_poll =
22603                                                         poll_results[vcm]
22604                                                         [result_idx];
22605                                 }
22606                                 vcm_final = min_vcm;
22607                                 poll_results_min[result_idx] = min_poll;
22608                         }
22609                 }
22610
22611                 if (NREV_GE(pi->pubpi.phy_rev, 7))
22612                         mod_radio_reg(pi, (core == PHY_CORE_0) ?
22613                                       RADIO_2057_NB_MASTER_CORE0 :
22614                                       RADIO_2057_NB_MASTER_CORE1,
22615                                       RADIO_2057_VCM_MASK, vcm_final);
22616                 else
22617                         mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22618                                       ((core ==
22619                                         PHY_CORE_0) ? RADIO_2056_RX0 :
22620                                        RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22621                                       vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22622
22623                 for (result_idx = 0; result_idx < 4; result_idx++) {
22624                         if (core == result_idx / 2) {
22625                                 fine_digital_offset[result_idx] =
22626                                         (NPHY_RSSICAL_NB_TARGET *
22627                                          NPHY_RSSICAL_NPOLL) -
22628                                         poll_results[vcm_final][result_idx];
22629                                 if (fine_digital_offset[result_idx] < 0) {
22630                                         fine_digital_offset[result_idx] =
22631                                                 abs(fine_digital_offset
22632                                                     [result_idx]);
22633                                         fine_digital_offset[result_idx] +=
22634                                                 (NPHY_RSSICAL_NPOLL / 2);
22635                                         fine_digital_offset[result_idx] /=
22636                                                 NPHY_RSSICAL_NPOLL;
22637                                         fine_digital_offset[result_idx] =
22638                                                 -fine_digital_offset[
22639                                                                     result_idx];
22640                                 } else {
22641                                         fine_digital_offset[result_idx] +=
22642                                                 (NPHY_RSSICAL_NPOLL / 2);
22643                                         fine_digital_offset[result_idx] /=
22644                                                 NPHY_RSSICAL_NPOLL;
22645                                 }
22646
22647                                 if (poll_results_min[result_idx] ==
22648                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22649                                         fine_digital_offset[result_idx] =
22650                                                 (NPHY_RSSICAL_NB_TARGET -
22651                                                  NPHY_RSSICAL_MAXREAD - 1);
22652
22653                                 wlc_phy_scale_offset_rssi_nphy(
22654                                         pi, 0x0,
22655                                         (s8)
22656                                         fine_digital_offset
22657                                         [result_idx],
22658                                         (result_idx / 2 == 0) ?
22659                                         RADIO_MIMO_CORESEL_CORE1 :
22660                                         RADIO_MIMO_CORESEL_CORE2,
22661                                         (result_idx % 2 == 0) ?
22662                                         NPHY_RAIL_I : NPHY_RAIL_Q,
22663                                         NPHY_RSSI_SEL_NB);
22664                         }
22665                 }
22666
22667         }
22668
22669         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22670
22671                 if ((rxcore_state & (1 << core)) == 0)
22672                         continue;
22673
22674                 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22675                         if (wb_cnt == 0) {
22676                                 rssi_type = NPHY_RSSI_SEL_W1;
22677                                 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22678                         } else {
22679                                 rssi_type = NPHY_RSSI_SEL_W2;
22680                                 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22681                         }
22682
22683                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22684                                                        core ==
22685                                                        PHY_CORE_0 ?
22686                                                        RADIO_MIMO_CORESEL_CORE1
22687                                                        :
22688                                                        RADIO_MIMO_CORESEL_CORE2,
22689                                                        NPHY_RAIL_I, rssi_type);
22690                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22691                                                        core ==
22692                                                        PHY_CORE_0 ?
22693                                                        RADIO_MIMO_CORESEL_CORE1
22694                                                        :
22695                                                        RADIO_MIMO_CORESEL_CORE2,
22696                                                        NPHY_RAIL_Q, rssi_type);
22697
22698                         wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22699                                                NPHY_RSSICAL_NPOLL);
22700
22701                         for (result_idx = 0; result_idx < 4; result_idx++) {
22702                                 if (core == result_idx / 2) {
22703                                         fine_digital_offset[result_idx] =
22704                                                 (target_code *
22705                                                  NPHY_RSSICAL_NPOLL) -
22706                                                 poll_result_core[result_idx];
22707                                         if (fine_digital_offset[result_idx] <
22708                                             0) {
22709                                                 fine_digital_offset[result_idx]
22710                                                         = abs(
22711                                                             fine_digital_offset
22712                                                             [result_idx]);
22713                                                 fine_digital_offset[result_idx]
22714                                                         += (NPHY_RSSICAL_NPOLL
22715                                                             / 2);
22716                                                 fine_digital_offset[result_idx]
22717                                                         /= NPHY_RSSICAL_NPOLL;
22718                                                 fine_digital_offset[result_idx]
22719                                                         = -fine_digital_offset
22720                                                                 [result_idx];
22721                                         } else {
22722                                                 fine_digital_offset[result_idx]
22723                                                         += (NPHY_RSSICAL_NPOLL
22724                                                             / 2);
22725                                                 fine_digital_offset[result_idx]
22726                                                         /= NPHY_RSSICAL_NPOLL;
22727                                         }
22728
22729                                         wlc_phy_scale_offset_rssi_nphy(
22730                                                 pi, 0x0,
22731                                                 (s8)
22732                                                 fine_digital_offset
22733                                                 [core *
22734                                                  2],
22735                                                 (core == PHY_CORE_0) ?
22736                                                 RADIO_MIMO_CORESEL_CORE1 :
22737                                                 RADIO_MIMO_CORESEL_CORE2,
22738                                                 (result_idx % 2 == 0) ?
22739                                                 NPHY_RAIL_I :
22740                                                 NPHY_RAIL_Q,
22741                                                 rssi_type);
22742                                 }
22743                         }
22744
22745                 }
22746         }
22747
22748         write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22749         write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22750
22751         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22752
22753         mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22754         mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22755         mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22756
22757         mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22758         mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22759         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22760
22761         write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22762         write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22763         write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22764         write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22765         write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22766         write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22767         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22768                 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22769                 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22770                 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22771                 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22772         }
22773         write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22774         write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22775         write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22776         write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22777         write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22778         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22779                 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22780                 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22781                 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22782                 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22783         }
22784         write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22785         write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22786
22787         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22788                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22789                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22790                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22791                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22792                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22793                 } else {
22794                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22795                                 read_radio_reg(pi,
22796                                                RADIO_2056_RX_RSSI_MISC |
22797                                                RADIO_2056_RX0);
22798                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22799                                 read_radio_reg(pi,
22800                                                RADIO_2056_RX_RSSI_MISC |
22801                                                RADIO_2056_RX1);
22802                 }
22803
22804                 pi->rssical_cache.rssical_phyregs_2G[0] =
22805                         read_phy_reg(pi, 0x1a6);
22806                 pi->rssical_cache.rssical_phyregs_2G[1] =
22807                         read_phy_reg(pi, 0x1ac);
22808                 pi->rssical_cache.rssical_phyregs_2G[2] =
22809                         read_phy_reg(pi, 0x1b2);
22810                 pi->rssical_cache.rssical_phyregs_2G[3] =
22811                         read_phy_reg(pi, 0x1b8);
22812                 pi->rssical_cache.rssical_phyregs_2G[4] =
22813                         read_phy_reg(pi, 0x1a4);
22814                 pi->rssical_cache.rssical_phyregs_2G[5] =
22815                         read_phy_reg(pi, 0x1aa);
22816                 pi->rssical_cache.rssical_phyregs_2G[6] =
22817                         read_phy_reg(pi, 0x1b0);
22818                 pi->rssical_cache.rssical_phyregs_2G[7] =
22819                         read_phy_reg(pi, 0x1b6);
22820                 pi->rssical_cache.rssical_phyregs_2G[8] =
22821                         read_phy_reg(pi, 0x1a5);
22822                 pi->rssical_cache.rssical_phyregs_2G[9] =
22823                         read_phy_reg(pi, 0x1ab);
22824                 pi->rssical_cache.rssical_phyregs_2G[10] =
22825                         read_phy_reg(pi, 0x1b1);
22826                 pi->rssical_cache.rssical_phyregs_2G[11] =
22827                         read_phy_reg(pi, 0x1b7);
22828
22829                 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22830         } else {
22831                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22832                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22833                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22834                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22835                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22836                 } else {
22837                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22838                                 read_radio_reg(pi,
22839                                                RADIO_2056_RX_RSSI_MISC |
22840                                                RADIO_2056_RX0);
22841                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22842                                 read_radio_reg(pi,
22843                                                RADIO_2056_RX_RSSI_MISC |
22844                                                RADIO_2056_RX1);
22845                 }
22846
22847                 pi->rssical_cache.rssical_phyregs_5G[0] =
22848                         read_phy_reg(pi, 0x1a6);
22849                 pi->rssical_cache.rssical_phyregs_5G[1] =
22850                         read_phy_reg(pi, 0x1ac);
22851                 pi->rssical_cache.rssical_phyregs_5G[2] =
22852                         read_phy_reg(pi, 0x1b2);
22853                 pi->rssical_cache.rssical_phyregs_5G[3] =
22854                         read_phy_reg(pi, 0x1b8);
22855                 pi->rssical_cache.rssical_phyregs_5G[4] =
22856                         read_phy_reg(pi, 0x1a4);
22857                 pi->rssical_cache.rssical_phyregs_5G[5] =
22858                         read_phy_reg(pi, 0x1aa);
22859                 pi->rssical_cache.rssical_phyregs_5G[6] =
22860                         read_phy_reg(pi, 0x1b0);
22861                 pi->rssical_cache.rssical_phyregs_5G[7] =
22862                         read_phy_reg(pi, 0x1b6);
22863                 pi->rssical_cache.rssical_phyregs_5G[8] =
22864                         read_phy_reg(pi, 0x1a5);
22865                 pi->rssical_cache.rssical_phyregs_5G[9] =
22866                         read_phy_reg(pi, 0x1ab);
22867                 pi->rssical_cache.rssical_phyregs_5G[10] =
22868                         read_phy_reg(pi, 0x1b1);
22869                 pi->rssical_cache.rssical_phyregs_5G[11] =
22870                         read_phy_reg(pi, 0x1b7);
22871
22872                 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22873         }
22874
22875         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22876         wlc_phy_clip_det_nphy(pi, 1, clip_state);
22877 }
22878
22879 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22880 {
22881         s32 target_code;
22882         u16 classif_state;
22883         u16 clip_state[2];
22884         u16 rssi_ctrl_state[2], pd_state[2];
22885         u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22886         u16 rfctrlintc_override_val;
22887         u16 clip_off[] = { 0xffff, 0xffff };
22888         u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22889         u8 vcm, min_vcm, vcm_tmp[4];
22890         u8 vcm_final[4] = { 0, 0, 0, 0 };
22891         u8 result_idx, ctr;
22892         s32 poll_results[4][4] = {
22893                 {0, 0, 0, 0},
22894                 {0, 0, 0, 0},
22895                 {0, 0, 0, 0},
22896                 {0, 0, 0, 0}
22897         };
22898         s32 poll_miniq[4][2] = {
22899                 {0, 0},
22900                 {0, 0},
22901                 {0, 0},
22902                 {0, 0}
22903         };
22904         s32 min_d, curr_d;
22905         s32 fine_digital_offset[4];
22906         s32 poll_results_min[4] = { 0, 0, 0, 0 };
22907         s32 min_poll;
22908
22909         switch (rssi_type) {
22910         case NPHY_RSSI_SEL_NB:
22911                 target_code = NPHY_RSSICAL_NB_TARGET;
22912                 break;
22913         case NPHY_RSSI_SEL_W1:
22914                 target_code = NPHY_RSSICAL_W1_TARGET;
22915                 break;
22916         case NPHY_RSSI_SEL_W2:
22917                 target_code = NPHY_RSSICAL_W2_TARGET;
22918                 break;
22919         default:
22920                 return;
22921                 break;
22922         }
22923
22924         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22925         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22926         wlc_phy_clip_det_nphy(pi, 0, clip_state);
22927         wlc_phy_clip_det_nphy(pi, 1, clip_off);
22928
22929         rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
22930         rfctrlintc_override_val =
22931                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
22932
22933         rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
22934         rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
22935         write_phy_reg(pi, 0x91, rfctrlintc_override_val);
22936         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
22937
22938         rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
22939         rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
22940         write_phy_reg(pi, 0x92, rfctrlintc_override_val);
22941         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
22942
22943         pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
22944                   RADIO_2055_WBRSSI_G2_PD;
22945         pd_state[0] =
22946                 read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
22947         pd_state[1] =
22948                 read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
22949         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
22950         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
22951         rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
22952                          RADIO_2055_WBRSSI_G2_SEL;
22953         rssi_ctrl_state[0] =
22954                 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
22955         rssi_ctrl_state[1] =
22956                 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
22957         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22958
22959         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22960                                        NPHY_RAIL_I, rssi_type);
22961         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22962                                        NPHY_RAIL_Q, rssi_type);
22963
22964         for (vcm = 0; vcm < 4; vcm++) {
22965
22966                 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
22967                 if (rssi_type != NPHY_RSSI_SEL_W2)
22968                         wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
22969
22970                 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
22971                                        NPHY_RSSICAL_NPOLL);
22972
22973                 if ((rssi_type == NPHY_RSSI_SEL_W1)
22974                     || (rssi_type == NPHY_RSSI_SEL_W2)) {
22975                         for (ctr = 0; ctr < 2; ctr++)
22976                                 poll_miniq[vcm][ctr] =
22977                                         min(poll_results[vcm][ctr * 2 + 0],
22978                                             poll_results[vcm][ctr * 2 + 1]);
22979                 }
22980         }
22981
22982         for (result_idx = 0; result_idx < 4; result_idx++) {
22983                 min_d = NPHY_RSSICAL_MAXD;
22984                 min_vcm = 0;
22985                 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
22986                 for (vcm = 0; vcm < 4; vcm++) {
22987                         curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
22988                                       poll_results[vcm][result_idx] :
22989                                       poll_miniq[vcm][result_idx / 2]) -
22990                                      (target_code * NPHY_RSSICAL_NPOLL));
22991                         if (curr_d < min_d) {
22992                                 min_d = curr_d;
22993                                 min_vcm = vcm;
22994                         }
22995                         if (poll_results[vcm][result_idx] < min_poll)
22996                                 min_poll = poll_results[vcm][result_idx];
22997                 }
22998                 vcm_final[result_idx] = min_vcm;
22999                 poll_results_min[result_idx] = min_poll;
23000         }
23001
23002         if (rssi_type != NPHY_RSSI_SEL_W2)
23003                 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
23004
23005         for (result_idx = 0; result_idx < 4; result_idx++) {
23006                 fine_digital_offset[result_idx] =
23007                         (target_code * NPHY_RSSICAL_NPOLL) -
23008                         poll_results[vcm_final[result_idx]][result_idx];
23009                 if (fine_digital_offset[result_idx] < 0) {
23010                         fine_digital_offset[result_idx] =
23011                                 abs(fine_digital_offset[result_idx]);
23012                         fine_digital_offset[result_idx] +=
23013                                 (NPHY_RSSICAL_NPOLL / 2);
23014                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23015                         fine_digital_offset[result_idx] =
23016                                 -fine_digital_offset[result_idx];
23017                 } else {
23018                         fine_digital_offset[result_idx] +=
23019                                 (NPHY_RSSICAL_NPOLL / 2);
23020                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23021                 }
23022
23023                 if (poll_results_min[result_idx] ==
23024                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
23025                         fine_digital_offset[result_idx] =
23026                                 (target_code - NPHY_RSSICAL_MAXREAD - 1);
23027
23028                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
23029                                                (s8)
23030                                                fine_digital_offset[result_idx],
23031                                                (result_idx / 2 ==
23032                                                 0) ? RADIO_MIMO_CORESEL_CORE1 :
23033                                                RADIO_MIMO_CORESEL_CORE2,
23034                                                (result_idx % 2 ==
23035                                                 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
23036                                                rssi_type);
23037         }
23038
23039         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
23040         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
23041         if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
23042                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23043                                      NPHY_RSSI_SEL_NB);
23044         else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
23045                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23046                                      NPHY_RSSI_SEL_W1);
23047         else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G2_SEL)
23048                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23049                                      NPHY_RSSI_SEL_W2);
23050         else
23051                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23052                                      NPHY_RSSI_SEL_W2);
23053         if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
23054                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23055                                      NPHY_RSSI_SEL_NB);
23056         else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
23057                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23058                                      NPHY_RSSI_SEL_W1);
23059         else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G2_SEL)
23060                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23061                                      NPHY_RSSI_SEL_W2);
23062         else
23063                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23064                                      NPHY_RSSI_SEL_W2);
23065
23066         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
23067
23068         write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
23069         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
23070         write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
23071         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
23072
23073         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
23074         wlc_phy_clip_det_nphy(pi, 1, clip_state);
23075
23076         wlc_phy_resetcca_nphy(pi);
23077 }
23078
23079 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
23080 {
23081         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23082                 wlc_phy_rssi_cal_nphy_rev3(pi);
23083         } else {
23084                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
23085                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
23086                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
23087         }
23088 }
23089
23090 int
23091 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
23092 {
23093         s16 rxpwr, rxpwr0, rxpwr1;
23094         s16 phyRx0_l, phyRx2_l;
23095
23096         rxpwr = 0;
23097         rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
23098         rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
23099
23100         if (rxpwr0 > 127)
23101                 rxpwr0 -= 256;
23102         if (rxpwr1 > 127)
23103                 rxpwr1 -= 256;
23104
23105         phyRx0_l = rxh->PhyRxStatus_0 & 0x00ff;
23106         phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
23107         if (phyRx2_l > 127)
23108                 phyRx2_l -= 256;
23109
23110         if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23111                 rxpwr0 = rxpwr1;
23112                 rxpwr1 = phyRx2_l;
23113         }
23114
23115         if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23116                 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23117         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23118                 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23119         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23120                 rxpwr = (rxpwr0 + rxpwr1) >> 1;
23121
23122         return rxpwr;
23123 }
23124
23125 static void
23126 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23127                              u16 num_samps)
23128 {
23129         u16 t;
23130         u32 *data_buf = NULL;
23131
23132         data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
23133         if (data_buf == NULL)
23134                 return;
23135
23136         if (pi->phyhang_avoid)
23137                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23138
23139         for (t = 0; t < num_samps; t++)
23140                 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23141                               (((unsigned int)tone_buf[t].q) & 0x3ff);
23142         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23143                                  data_buf);
23144
23145         kfree(data_buf);
23146
23147         if (pi->phyhang_avoid)
23148                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23149 }
23150
23151 static u16
23152 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23153                               u8 dac_test_mode)
23154 {
23155         u8 phy_bw, is_phybw40;
23156         u16 num_samps, t, spur;
23157         s32 theta = 0, rot = 0;
23158         u32 tbl_len;
23159         struct cordic_iq *tone_buf = NULL;
23160
23161         is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23162         phy_bw = (is_phybw40 == 1) ? 40 : 20;
23163         tbl_len = (phy_bw << 3);
23164
23165         if (dac_test_mode == 1) {
23166                 spur = read_phy_reg(pi, 0x01);
23167                 spur = (spur >> 15) & 1;
23168                 phy_bw = (spur == 1) ? 82 : 80;
23169                 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23170
23171                 tbl_len = (phy_bw << 1);
23172         }
23173
23174         tone_buf = kmalloc(sizeof(struct cordic_iq) * tbl_len, GFP_ATOMIC);
23175         if (tone_buf == NULL)
23176                 return 0;
23177
23178         num_samps = (u16) tbl_len;
23179         rot = ((f_kHz * 36) / phy_bw) / 100;
23180         theta = 0;
23181
23182         for (t = 0; t < num_samps; t++) {
23183
23184                 tone_buf[t] = cordic_calc_iq(theta);
23185
23186                 theta += rot;
23187
23188                 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
23189                 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
23190         }
23191
23192         wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23193
23194         kfree(tone_buf);
23195
23196         return num_samps;
23197 }
23198
23199 static void
23200 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23201                         u16 wait, u8 iqmode, u8 dac_test_mode,
23202                         bool modify_bbmult)
23203 {
23204         u16 bb_mult;
23205         u8 phy_bw, sample_cmd;
23206         u16 orig_RfseqCoreActv;
23207         u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23208             lpf_bw_ctl_miscreg4;
23209
23210         if (pi->phyhang_avoid)
23211                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23212
23213         phy_bw = 20;
23214         if (CHSPEC_IS40(pi->radio_chanspec))
23215                 phy_bw = 40;
23216
23217         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23218
23219                 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23220                 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23221                 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23222                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23223                                               (0x7 << 8);
23224                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23225                                               (0x7 << 8);
23226                 } else {
23227                         wlc_phy_rfctrl_override_nphy_rev7(
23228                                 pi,
23229                                 (0x1 << 7),
23230                                 wlc_phy_read_lpf_bw_ctl_nphy
23231                                         (pi,
23232                                         0), 0, 0,
23233                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23234
23235                         pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23236
23237                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23238                                               (0x7 << 8);
23239                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23240                                               (0x7 << 8);
23241                 }
23242         }
23243
23244         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23245
23246                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23247                                         &bb_mult);
23248                 pi->nphy_bb_mult_save =
23249                         BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23250         }
23251
23252         if (modify_bbmult) {
23253                 bb_mult = (phy_bw == 20) ? 100 : 71;
23254                 bb_mult = (bb_mult << 8) + bb_mult;
23255                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23256                                          &bb_mult);
23257         }
23258
23259         if (pi->phyhang_avoid)
23260                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23261
23262         write_phy_reg(pi, 0xc6, num_samps - 1);
23263
23264         if (loops != 0xffff)
23265                 write_phy_reg(pi, 0xc4, loops - 1);
23266         else
23267                 write_phy_reg(pi, 0xc4, loops);
23268
23269         write_phy_reg(pi, 0xc5, wait);
23270
23271         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23272         or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23273         if (iqmode) {
23274
23275                 and_phy_reg(pi, 0xc2, 0x7FFF);
23276
23277                 or_phy_reg(pi, 0xc2, 0x8000);
23278         } else {
23279
23280                 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23281                 write_phy_reg(pi, 0xc3, sample_cmd);
23282         }
23283
23284         SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23285
23286         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23287 }
23288
23289 int
23290 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23291                      u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23292 {
23293         u16 num_samps;
23294         u16 loops = 0xffff;
23295         u16 wait = 0;
23296
23297         num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23298                                                   dac_test_mode);
23299         if (num_samps == 0)
23300                 return -EBADE;
23301
23302         wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23303                                 dac_test_mode, modify_bbmult);
23304
23305         return 0;
23306 }
23307
23308 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23309 {
23310         u16 playback_status;
23311         u16 bb_mult;
23312
23313         if (pi->phyhang_avoid)
23314                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23315
23316         playback_status = read_phy_reg(pi, 0xc7);
23317         if (playback_status & 0x1)
23318                 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23319         else if (playback_status & 0x2)
23320                 and_phy_reg(pi, 0xc2,
23321                             (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23322
23323         and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23324
23325         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23326
23327                 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23328                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23329                                          &bb_mult);
23330
23331                 pi->nphy_bb_mult_save = 0;
23332         }
23333
23334         if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23335                 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23336                         wlc_phy_rfctrl_override_nphy_rev7(
23337                                 pi,
23338                                 (0x1 << 7),
23339                                 0, 0, 1,
23340                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23341                         pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23342                 }
23343         }
23344
23345         if (pi->phyhang_avoid)
23346                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23347 }
23348
23349 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23350 {
23351         u32 *tx_pwrctrl_tbl = NULL;
23352         uint phyrev = pi->pubpi.phy_rev;
23353
23354         if (PHY_IPA(pi)) {
23355                 tx_pwrctrl_tbl =
23356                         wlc_phy_get_ipa_gaintbl_nphy(pi);
23357         } else {
23358                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23359                         if (NREV_IS(phyrev, 3))
23360                                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23361                         else if (NREV_IS(phyrev, 4))
23362                                 tx_pwrctrl_tbl =
23363                                         (pi->srom_fem5g.extpagain == 3) ?
23364                                         nphy_tpc_5GHz_txgain_HiPwrEPA :
23365                                         nphy_tpc_5GHz_txgain_rev4;
23366                         else
23367                                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23368                 } else {
23369                         if (NREV_GE(phyrev, 7)) {
23370                                 if (pi->pubpi.radiorev == 3)
23371                                         tx_pwrctrl_tbl =
23372                                                 nphy_tpc_txgain_epa_2057rev3;
23373                                 else if (pi->pubpi.radiorev == 5)
23374                                         tx_pwrctrl_tbl =
23375                                                 nphy_tpc_txgain_epa_2057rev5;
23376                         } else {
23377                                 if (NREV_GE(phyrev, 5) &&
23378                                    (pi->srom_fem2g.extpagain == 3))
23379                                         tx_pwrctrl_tbl =
23380                                                 nphy_tpc_txgain_HiPwrEPA;
23381                                 else
23382                                         tx_pwrctrl_tbl =
23383                                                 nphy_tpc_txgain_rev3;
23384                         }
23385                 }
23386         }
23387         return tx_pwrctrl_tbl;
23388 }
23389
23390 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23391 {
23392         u16 base_idx[2], curr_gain[2];
23393         u8 core_no;
23394         struct nphy_txgains target_gain;
23395         u32 *tx_pwrctrl_tbl = NULL;
23396
23397         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23398                 if (pi->phyhang_avoid)
23399                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
23400
23401                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23402                                         curr_gain);
23403
23404                 if (pi->phyhang_avoid)
23405                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
23406
23407                 for (core_no = 0; core_no < 2; core_no++) {
23408                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23409                                 target_gain.ipa[core_no] =
23410                                         curr_gain[core_no] & 0x0007;
23411                                 target_gain.pad[core_no] =
23412                                         ((curr_gain[core_no] & 0x00F8) >> 3);
23413                                 target_gain.pga[core_no] =
23414                                         ((curr_gain[core_no] & 0x0F00) >> 8);
23415                                 target_gain.txgm[core_no] =
23416                                         ((curr_gain[core_no] & 0x7000) >> 12);
23417                                 target_gain.txlpf[core_no] =
23418                                         ((curr_gain[core_no] & 0x8000) >> 15);
23419                         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23420                                 target_gain.ipa[core_no] =
23421                                         curr_gain[core_no] & 0x000F;
23422                                 target_gain.pad[core_no] =
23423                                         ((curr_gain[core_no] & 0x00F0) >> 4);
23424                                 target_gain.pga[core_no] =
23425                                         ((curr_gain[core_no] & 0x0F00) >> 8);
23426                                 target_gain.txgm[core_no] =
23427                                         ((curr_gain[core_no] & 0x7000) >> 12);
23428                         } else {
23429                                 target_gain.ipa[core_no] =
23430                                         curr_gain[core_no] & 0x0003;
23431                                 target_gain.pad[core_no] =
23432                                         ((curr_gain[core_no] & 0x000C) >> 2);
23433                                 target_gain.pga[core_no] =
23434                                         ((curr_gain[core_no] & 0x0070) >> 4);
23435                                 target_gain.txgm[core_no] =
23436                                         ((curr_gain[core_no] & 0x0380) >> 7);
23437                         }
23438                 }
23439         } else {
23440                 uint phyrev = pi->pubpi.phy_rev;
23441
23442                 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23443                 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23444                 for (core_no = 0; core_no < 2; core_no++) {
23445                         if (NREV_GE(phyrev, 3)) {
23446                                 tx_pwrctrl_tbl =
23447                                         brcms_phy_get_tx_pwrctrl_tbl(pi);
23448                                 if (NREV_GE(phyrev, 7)) {
23449                                         target_gain.ipa[core_no] =
23450                                                 (tx_pwrctrl_tbl
23451                                                  [base_idx[core_no]]
23452                                                  >> 16) & 0x7;
23453                                         target_gain.pad[core_no] =
23454                                                 (tx_pwrctrl_tbl
23455                                                  [base_idx[core_no]]
23456                                                  >> 19) & 0x1f;
23457                                         target_gain.pga[core_no] =
23458                                                 (tx_pwrctrl_tbl
23459                                                  [base_idx[core_no]]
23460                                                  >> 24) & 0xf;
23461                                         target_gain.txgm[core_no] =
23462                                                 (tx_pwrctrl_tbl
23463                                                  [base_idx[core_no]]
23464                                                  >> 28) & 0x7;
23465                                         target_gain.txlpf[core_no] =
23466                                                 (tx_pwrctrl_tbl
23467                                                  [base_idx[core_no]]
23468                                                  >> 31) & 0x1;
23469                                 } else {
23470                                         target_gain.ipa[core_no] =
23471                                                 (tx_pwrctrl_tbl
23472                                                  [base_idx[core_no]]
23473                                                  >> 16) & 0xf;
23474                                         target_gain.pad[core_no] =
23475                                                 (tx_pwrctrl_tbl
23476                                                  [base_idx[core_no]]
23477                                                  >> 20) & 0xf;
23478                                         target_gain.pga[core_no] =
23479                                                 (tx_pwrctrl_tbl
23480                                                  [base_idx[core_no]]
23481                                                  >> 24) & 0xf;
23482                                         target_gain.txgm[core_no] =
23483                                                 (tx_pwrctrl_tbl
23484                                                 [base_idx[core_no]]
23485                                                  >> 28) & 0x7;
23486                                 }
23487                         } else {
23488                                 target_gain.ipa[core_no] =
23489                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23490                                          16) & 0x3;
23491                                 target_gain.pad[core_no] =
23492                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23493                                          18) & 0x3;
23494                                 target_gain.pga[core_no] =
23495                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23496                                          20) & 0x7;
23497                                 target_gain.txgm[core_no] =
23498                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23499                                          23) & 0x7;
23500                         }
23501                 }
23502         }
23503
23504         return target_gain;
23505 }
23506
23507 static void
23508 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23509                               struct nphy_txgains target_gain,
23510                               struct nphy_iqcal_params *params)
23511 {
23512         u8 k;
23513         int idx;
23514         u16 gain_index;
23515         u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23516
23517         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23518                 if (NREV_GE(pi->pubpi.phy_rev, 7))
23519                         params->txlpf = target_gain.txlpf[core_no];
23520
23521                 params->txgm = target_gain.txgm[core_no];
23522                 params->pga = target_gain.pga[core_no];
23523                 params->pad = target_gain.pad[core_no];
23524                 params->ipa = target_gain.ipa[core_no];
23525                 if (NREV_GE(pi->pubpi.phy_rev, 7))
23526                         params->cal_gain =
23527                                 ((params->txlpf << 15) | (params->txgm << 12) |
23528                                  (params->pga << 8) |
23529                                  (params->pad << 3) | (params->ipa));
23530                 else
23531                         params->cal_gain =
23532                                 ((params->txgm << 12) | (params->pga << 8) |
23533                                  (params->pad << 4) | (params->ipa));
23534
23535                 params->ncorr[0] = 0x79;
23536                 params->ncorr[1] = 0x79;
23537                 params->ncorr[2] = 0x79;
23538                 params->ncorr[3] = 0x79;
23539                 params->ncorr[4] = 0x79;
23540         } else {
23541
23542                 gain_index = ((target_gain.pad[core_no] << 0) |
23543                               (target_gain.pga[core_no] << 4) |
23544                               (target_gain.txgm[core_no] << 8));
23545
23546                 idx = -1;
23547                 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23548                         if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23549                             gain_index) {
23550                                 idx = k;
23551                                 break;
23552                         }
23553                 }
23554
23555                 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23556                 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23557                 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23558                 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23559                                     (params->pad << 2));
23560                 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23561                 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23562                 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23563                 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23564         }
23565 }
23566
23567 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23568 {
23569         u16 jtag_core, core;
23570
23571         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23572
23573                 for (core = 0; core <= 1; core++) {
23574
23575                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23576                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23577                                                 TX_SSI_MASTER);
23578
23579                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23580                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23581                                                 IQCAL_VCM_HG);
23582
23583                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23584                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23585                                                 IQCAL_IDAC);
23586
23587                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23588                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23589                                                 TSSI_VCM);
23590
23591                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23592
23593                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23594                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23595                                                 TX_SSI_MUX);
23596
23597                         if (pi->pubpi.radiorev != 5)
23598                                 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23599                                         READ_RADIO_REG3(pi, RADIO_2057, TX,
23600                                                         core,
23601                                                         TSSIA);
23602
23603                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23604                                READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23605
23606                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23607                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23608                                                 TSSI_MISC1);
23609
23610                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23611                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23612                                                  TX_SSI_MASTER, 0x0a);
23613                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23614                                                  IQCAL_VCM_HG, 0x43);
23615                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23616                                                  IQCAL_IDAC, 0x55);
23617                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23618                                                  TSSI_VCM, 0x00);
23619                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23620                                                  TSSIG, 0x00);
23621                                 if (pi->use_int_tx_iqlo_cal_nphy) {
23622                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23623                                                          core, TX_SSI_MUX, 0x4);
23624                                         if (!(pi->
23625                                         internal_tx_iqlo_cal_tapoff_intpa_nphy))
23626                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23627                                                                  TX, core,
23628                                                                  TSSIA, 0x31);
23629                                         else
23630                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23631                                                                  TX, core,
23632                                                                  TSSIA, 0x21);
23633                                 }
23634                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23635                                                  TSSI_MISC1, 0x00);
23636                         } else {
23637                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23638                                                  TX_SSI_MASTER, 0x06);
23639                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23640                                                  IQCAL_VCM_HG, 0x43);
23641                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23642                                                  IQCAL_IDAC, 0x55);
23643                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23644                                                  TSSI_VCM, 0x00);
23645
23646                                 if (pi->pubpi.radiorev != 5)
23647                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23648                                                          core, TSSIA, 0x00);
23649                                 if (pi->use_int_tx_iqlo_cal_nphy) {
23650                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23651                                                          core, TX_SSI_MUX,
23652                                                          0x06);
23653                                         if (!(pi->
23654                                         internal_tx_iqlo_cal_tapoff_intpa_nphy))
23655                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23656                                                                  TX, core,
23657                                                                  TSSIG, 0x31);
23658                                         else
23659                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23660                                                                  TX, core,
23661                                                                  TSSIG, 0x21);
23662                                 }
23663                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23664                                                  TSSI_MISC1, 0x00);
23665                         }
23666                 }
23667         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23668
23669                 for (core = 0; core <= 1; core++) {
23670                         jtag_core =
23671                                 (core ==
23672                                  PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23673
23674                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23675                                 read_radio_reg(pi,
23676                                                RADIO_2056_TX_TX_SSI_MASTER |
23677                                                jtag_core);
23678
23679                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23680                                 read_radio_reg(pi,
23681                                                RADIO_2056_TX_IQCAL_VCM_HG |
23682                                                jtag_core);
23683
23684                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23685                                 read_radio_reg(pi,
23686                                                RADIO_2056_TX_IQCAL_IDAC |
23687                                                jtag_core);
23688
23689                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23690                                 read_radio_reg(
23691                                         pi,
23692                                         RADIO_2056_TX_TSSI_VCM |
23693                                         jtag_core);
23694
23695                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23696                                 read_radio_reg(pi,
23697                                                RADIO_2056_TX_TX_AMP_DET |
23698                                                jtag_core);
23699
23700                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23701                                 read_radio_reg(pi,
23702                                                RADIO_2056_TX_TX_SSI_MUX |
23703                                                jtag_core);
23704
23705                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23706                                 read_radio_reg(pi,
23707                                                RADIO_2056_TX_TSSIA | jtag_core);
23708
23709                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23710                                 read_radio_reg(pi,
23711                                                RADIO_2056_TX_TSSIG | jtag_core);
23712
23713                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23714                                 read_radio_reg(pi,
23715                                                RADIO_2056_TX_TSSI_MISC1 |
23716                                                jtag_core);
23717
23718                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23719                                 read_radio_reg(pi,
23720                                                RADIO_2056_TX_TSSI_MISC2 |
23721                                                jtag_core);
23722
23723                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23724                                 read_radio_reg(pi,
23725                                                RADIO_2056_TX_TSSI_MISC3 |
23726                                                jtag_core);
23727
23728                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23729                                 write_radio_reg(pi,
23730                                                 RADIO_2056_TX_TX_SSI_MASTER |
23731                                                 jtag_core, 0x0a);
23732                                 write_radio_reg(pi,
23733                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23734                                                 jtag_core, 0x40);
23735                                 write_radio_reg(pi,
23736                                                 RADIO_2056_TX_IQCAL_IDAC |
23737                                                 jtag_core, 0x55);
23738                                 write_radio_reg(pi,
23739                                                 RADIO_2056_TX_TSSI_VCM |
23740                                                 jtag_core, 0x00);
23741                                 write_radio_reg(pi,
23742                                                 RADIO_2056_TX_TX_AMP_DET |
23743                                                 jtag_core, 0x00);
23744
23745                                 if (PHY_IPA(pi)) {
23746                                         write_radio_reg(
23747                                                 pi,
23748                                                 RADIO_2056_TX_TX_SSI_MUX
23749                                                 | jtag_core, 0x4);
23750                                         write_radio_reg(pi,
23751                                                         RADIO_2056_TX_TSSIA |
23752                                                         jtag_core, 0x1);
23753                                 } else {
23754                                         write_radio_reg(
23755                                                 pi,
23756                                                 RADIO_2056_TX_TX_SSI_MUX
23757                                                 | jtag_core, 0x00);
23758                                         write_radio_reg(pi,
23759                                                         RADIO_2056_TX_TSSIA |
23760                                                         jtag_core, 0x2f);
23761                                 }
23762                                 write_radio_reg(pi,
23763                                                 RADIO_2056_TX_TSSIG | jtag_core,
23764                                                 0x00);
23765                                 write_radio_reg(pi,
23766                                                 RADIO_2056_TX_TSSI_MISC1 |
23767                                                 jtag_core, 0x00);
23768
23769                                 write_radio_reg(pi,
23770                                                 RADIO_2056_TX_TSSI_MISC2 |
23771                                                 jtag_core, 0x00);
23772                                 write_radio_reg(pi,
23773                                                 RADIO_2056_TX_TSSI_MISC3 |
23774                                                 jtag_core, 0x00);
23775                         } else {
23776                                 write_radio_reg(pi,
23777                                                 RADIO_2056_TX_TX_SSI_MASTER |
23778                                                 jtag_core, 0x06);
23779                                 write_radio_reg(pi,
23780                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23781                                                 jtag_core, 0x40);
23782                                 write_radio_reg(pi,
23783                                                 RADIO_2056_TX_IQCAL_IDAC |
23784                                                 jtag_core, 0x55);
23785                                 write_radio_reg(pi,
23786                                                 RADIO_2056_TX_TSSI_VCM |
23787                                                 jtag_core, 0x00);
23788                                 write_radio_reg(pi,
23789                                                 RADIO_2056_TX_TX_AMP_DET |
23790                                                 jtag_core, 0x00);
23791                                 write_radio_reg(pi,
23792                                                 RADIO_2056_TX_TSSIA | jtag_core,
23793                                                 0x00);
23794
23795                                 if (PHY_IPA(pi)) {
23796
23797                                         write_radio_reg(
23798                                                 pi,
23799                                                 RADIO_2056_TX_TX_SSI_MUX
23800                                                 | jtag_core, 0x06);
23801                                         if (NREV_LT(pi->pubpi.phy_rev, 5))
23802                                                 write_radio_reg(
23803                                                         pi,
23804                                                         RADIO_2056_TX_TSSIG
23805                                                         | jtag_core,
23806                                                         0x11);
23807                                         else
23808                                                 write_radio_reg(
23809                                                         pi,
23810                                                         RADIO_2056_TX_TSSIG
23811                                                         | jtag_core,
23812                                                         0x1);
23813                                 } else {
23814                                         write_radio_reg(
23815                                                 pi,
23816                                                 RADIO_2056_TX_TX_SSI_MUX
23817                                                 | jtag_core, 0x00);
23818                                         write_radio_reg(pi,
23819                                                         RADIO_2056_TX_TSSIG |
23820                                                         jtag_core, 0x20);
23821                                 }
23822
23823                                 write_radio_reg(pi,
23824                                                 RADIO_2056_TX_TSSI_MISC1 |
23825                                                 jtag_core, 0x00);
23826                                 write_radio_reg(pi,
23827                                                 RADIO_2056_TX_TSSI_MISC2 |
23828                                                 jtag_core, 0x00);
23829                                 write_radio_reg(pi,
23830                                                 RADIO_2056_TX_TSSI_MISC3 |
23831                                                 jtag_core, 0x00);
23832                         }
23833                 }
23834         } else {
23835
23836                 pi->tx_rx_cal_radio_saveregs[0] =
23837                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23838                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23839                 pi->tx_rx_cal_radio_saveregs[1] =
23840                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23841                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23842
23843                 pi->tx_rx_cal_radio_saveregs[2] =
23844                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23845                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23846                 pi->tx_rx_cal_radio_saveregs[3] =
23847                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23848                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23849
23850                 pi->tx_rx_cal_radio_saveregs[4] =
23851                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23852                 pi->tx_rx_cal_radio_saveregs[5] =
23853                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23854
23855                 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23856                     0) {
23857
23858                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23859                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23860                 } else {
23861
23862                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23863                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23864                 }
23865
23866                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23867
23868                         or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23869                         or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23870                 } else {
23871
23872                         and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23873                         and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23874                 }
23875         }
23876 }
23877
23878 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23879 {
23880         u16 jtag_core, core;
23881
23882         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23883                 for (core = 0; core <= 1; core++) {
23884
23885                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23886                                          TX_SSI_MASTER,
23887                                          pi->
23888                                          tx_rx_cal_radio_saveregs[(core * 11) +
23889                                                                   0]);
23890
23891                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23892                                          pi->
23893                                          tx_rx_cal_radio_saveregs[(core * 11) +
23894                                                                   1]);
23895
23896                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23897                                          pi->
23898                                          tx_rx_cal_radio_saveregs[(core * 11) +
23899                                                                   2]);
23900
23901                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23902                                          pi->
23903                                          tx_rx_cal_radio_saveregs[(core * 11) +
23904                                                                   3]);
23905
23906                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23907                                          pi->
23908                                          tx_rx_cal_radio_saveregs[(core * 11) +
23909                                                                   5]);
23910
23911                         if (pi->pubpi.radiorev != 5)
23912                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23913                                                  TSSIA,
23914                                                  pi->tx_rx_cal_radio_saveregs
23915                                                              [(core * 11) + 6]);
23916
23917                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23918                                          pi->
23919                                          tx_rx_cal_radio_saveregs[(core * 11) +
23920                                                                   7]);
23921
23922                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23923                                          pi->
23924                                          tx_rx_cal_radio_saveregs[(core * 11) +
23925                                                                   8]);
23926                 }
23927         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23928                 for (core = 0; core <= 1; core++) {
23929                         jtag_core = (core == PHY_CORE_0) ?
23930                                      RADIO_2056_TX0 : RADIO_2056_TX1;
23931
23932                         write_radio_reg(pi,
23933                                         RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23934                                         pi->
23935                                         tx_rx_cal_radio_saveregs[(core * 11) +
23936                                                                  0]);
23937
23938                         write_radio_reg(pi,
23939                                         RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23940                                         pi->
23941                                         tx_rx_cal_radio_saveregs[(core * 11) +
23942                                                                  1]);
23943
23944                         write_radio_reg(pi,
23945                                         RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23946                                         pi->
23947                                         tx_rx_cal_radio_saveregs[(core * 11) +
23948                                                                  2]);
23949
23950                         write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23951                                         pi->
23952                                         tx_rx_cal_radio_saveregs[(core * 11) +
23953                                                                  3]);
23954
23955                         write_radio_reg(pi,
23956                                         RADIO_2056_TX_TX_AMP_DET | jtag_core,
23957                                         pi->
23958                                         tx_rx_cal_radio_saveregs[(core * 11) +
23959                                                                  4]);
23960
23961                         write_radio_reg(pi,
23962                                         RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23963                                         pi->
23964                                         tx_rx_cal_radio_saveregs[(core * 11) +
23965                                                                  5]);
23966
23967                         write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23968                                         pi->
23969                                         tx_rx_cal_radio_saveregs[(core * 11) +
23970                                                                  6]);
23971
23972                         write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23973                                         pi->
23974                                         tx_rx_cal_radio_saveregs[(core * 11) +
23975                                                                  7]);
23976
23977                         write_radio_reg(pi,
23978                                         RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23979                                         pi->
23980                                         tx_rx_cal_radio_saveregs[(core * 11) +
23981                                                                  8]);
23982
23983                         write_radio_reg(pi,
23984                                         RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23985                                         pi->
23986                                         tx_rx_cal_radio_saveregs[(core * 11) +
23987                                                                  9]);
23988
23989                         write_radio_reg(pi,
23990                                         RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23991                                         pi->
23992                                         tx_rx_cal_radio_saveregs[(core * 11) +
23993                                                                  10]);
23994                 }
23995         } else {
23996
23997                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23998                                 pi->tx_rx_cal_radio_saveregs[0]);
23999                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
24000                                 pi->tx_rx_cal_radio_saveregs[1]);
24001                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
24002                                 pi->tx_rx_cal_radio_saveregs[2]);
24003                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
24004                                 pi->tx_rx_cal_radio_saveregs[3]);
24005                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
24006                                 pi->tx_rx_cal_radio_saveregs[4]);
24007                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
24008                                 pi->tx_rx_cal_radio_saveregs[5]);
24009         }
24010 }
24011
24012 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
24013 {
24014         u16 val, mask;
24015
24016         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24017                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24018                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24019
24020                 mask = ((0x3 << 8) | (0x3 << 10));
24021                 val = (0x2 << 8);
24022                 val |= (0x2 << 10);
24023                 mod_phy_reg(pi, 0xa6, mask, val);
24024                 mod_phy_reg(pi, 0xa7, mask, val);
24025
24026                 val = read_phy_reg(pi, 0x8f);
24027                 pi->tx_rx_cal_phy_saveregs[2] = val;
24028                 val |= ((0x1 << 9) | (0x1 << 10));
24029                 write_phy_reg(pi, 0x8f, val);
24030
24031                 val = read_phy_reg(pi, 0xa5);
24032                 pi->tx_rx_cal_phy_saveregs[3] = val;
24033                 val |= ((0x1 << 9) | (0x1 << 10));
24034                 write_phy_reg(pi, 0xa5, val);
24035
24036                 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
24037                 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
24038
24039                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24040                                         &val);
24041                 pi->tx_rx_cal_phy_saveregs[5] = val;
24042                 val = 0;
24043                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24044                                          &val);
24045
24046                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24047                                         &val);
24048                 pi->tx_rx_cal_phy_saveregs[6] = val;
24049                 val = 0;
24050                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24051                                          &val);
24052
24053                 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
24054                 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
24055
24056                 if (!(pi->use_int_tx_iqlo_cal_nphy))
24057                         wlc_phy_rfctrlintc_override_nphy(
24058                                 pi,
24059                                 NPHY_RfctrlIntc_override_PA,
24060                                 1,
24061                                 RADIO_MIMO_CORESEL_CORE1
24062                                 |
24063                                 RADIO_MIMO_CORESEL_CORE2);
24064                 else
24065                         wlc_phy_rfctrlintc_override_nphy(
24066                                 pi,
24067                                 NPHY_RfctrlIntc_override_PA,
24068                                 0,
24069                                 RADIO_MIMO_CORESEL_CORE1
24070                                 |
24071                                 RADIO_MIMO_CORESEL_CORE2);
24072
24073                 wlc_phy_rfctrlintc_override_nphy(pi,
24074                                                  NPHY_RfctrlIntc_override_TRSW,
24075                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
24076                 wlc_phy_rfctrlintc_override_nphy(pi,
24077                                                  NPHY_RfctrlIntc_override_TRSW,
24078                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
24079
24080                 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
24081                 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
24082                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
24083                             0x29b, (0x1 << 0), (0) << 0);
24084
24085                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
24086                             0x29b, (0x1 << 0), (0) << 0);
24087
24088                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24089                     || NREV_GE(pi->pubpi.phy_rev, 8))
24090                         wlc_phy_rfctrl_override_nphy_rev7(
24091                                 pi, (0x1 << 7),
24092                                 wlc_phy_read_lpf_bw_ctl_nphy
24093                                         (pi,
24094                                         0), 0, 0,
24095                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24096
24097                 if (pi->use_int_tx_iqlo_cal_nphy
24098                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24099
24100                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24101
24102                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24103                                               1 << 4);
24104
24105                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24106                                         mod_radio_reg(
24107                                                 pi,
24108                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24109                                                 1, 0);
24110                                         mod_radio_reg(
24111                                                 pi,
24112                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24113                                                 1, 0);
24114                                 } else {
24115                                         mod_radio_reg(
24116                                              pi,
24117                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24118                                              1, 0);
24119                                         mod_radio_reg(
24120                                              pi,
24121                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24122                                              1, 0);
24123                                 }
24124                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24125                                 wlc_phy_rfctrl_override_nphy_rev7(
24126                                         pi,
24127                                         (0x1 << 3), 0,
24128                                         0x3, 0,
24129                                         NPHY_REV7_RFCTRLOVERRIDE_ID0);
24130                         }
24131                 }
24132         } else {
24133                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24134                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24135
24136                 mask = ((0x3 << 12) | (0x3 << 14));
24137                 val = (0x2 << 12);
24138                 val |= (0x2 << 14);
24139                 mod_phy_reg(pi, 0xa6, mask, val);
24140                 mod_phy_reg(pi, 0xa7, mask, val);
24141
24142                 val = read_phy_reg(pi, 0xa5);
24143                 pi->tx_rx_cal_phy_saveregs[2] = val;
24144                 val |= ((0x1 << 12) | (0x1 << 13));
24145                 write_phy_reg(pi, 0xa5, val);
24146
24147                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24148                                         &val);
24149                 pi->tx_rx_cal_phy_saveregs[3] = val;
24150                 val |= 0x2000;
24151                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24152                                          &val);
24153
24154                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24155                                         &val);
24156                 pi->tx_rx_cal_phy_saveregs[4] = val;
24157                 val |= 0x2000;
24158                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24159                                          &val);
24160
24161                 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24162                 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24163                 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24164                 write_phy_reg(pi, 0x91, val);
24165                 write_phy_reg(pi, 0x92, val);
24166         }
24167 }
24168
24169 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24170 {
24171         u16 mask;
24172
24173         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24174                 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24175                 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24176                 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24177                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24178                 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24179
24180                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24181                                          &pi->tx_rx_cal_phy_saveregs[5]);
24182                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24183                                          &pi->tx_rx_cal_phy_saveregs[6]);
24184
24185                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24186                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24187
24188                 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24189                 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24190
24191                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24192                     || NREV_GE(pi->pubpi.phy_rev, 8))
24193                         wlc_phy_rfctrl_override_nphy_rev7(
24194                                 pi, (0x1 << 7), 0, 0,
24195                                 1,
24196                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24197
24198                 wlc_phy_resetcca_nphy(pi);
24199
24200                 if (pi->use_int_tx_iqlo_cal_nphy
24201                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24202
24203                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24204                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24205                                         mod_radio_reg(
24206                                                 pi,
24207                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24208                                                 1, 1);
24209                                         mod_radio_reg(
24210                                                 pi,
24211                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24212                                                 1, 1);
24213                                 } else {
24214                                         mod_radio_reg(
24215                                              pi,
24216                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24217                                              1, 1);
24218                                         mod_radio_reg(
24219                                              pi,
24220                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24221                                              1, 1);
24222                                 }
24223
24224                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24225                                               0);
24226                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24227                                 wlc_phy_rfctrl_override_nphy_rev7(
24228                                         pi,
24229                                         (0x1 << 3), 0,
24230                                         0x3, 1,
24231                                         NPHY_REV7_RFCTRLOVERRIDE_ID0);
24232                         }
24233                 }
24234         } else {
24235                 mask = ((0x3 << 12) | (0x3 << 14));
24236                 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24237                 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24238                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24239
24240                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24241                                          &pi->tx_rx_cal_phy_saveregs[3]);
24242
24243                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24244                                          &pi->tx_rx_cal_phy_saveregs[4]);
24245
24246                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24247                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24248         }
24249 }
24250
24251 void
24252 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24253 {
24254         u16 tssi_reg;
24255         s32 temp, pwrindex[2];
24256         s32 idle_tssi[2];
24257         s32 rssi_buf[4];
24258         s32 tssival[2];
24259         u8 tssi_type;
24260
24261         tssi_reg = read_phy_reg(pi, 0x1e9);
24262
24263         temp = (s32) (tssi_reg & 0x3f);
24264         idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24265
24266         temp = (s32) ((tssi_reg >> 8) & 0x3f);
24267         idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24268
24269         tssi_type =
24270                 CHSPEC_IS5G(pi->radio_chanspec) ?
24271                 (u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24272
24273         wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24274
24275         tssival[0] = rssi_buf[0] / ((s32) num_samps);
24276         tssival[1] = rssi_buf[2] / ((s32) num_samps);
24277
24278         pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24279         pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24280
24281         if (pwrindex[0] < 0)
24282                 pwrindex[0] = 0;
24283         else if (pwrindex[0] > 63)
24284                 pwrindex[0] = 63;
24285
24286         if (pwrindex[1] < 0)
24287                 pwrindex[1] = 0;
24288         else if (pwrindex[1] > 63)
24289                 pwrindex[1] = 63;
24290
24291         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24292                                 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24293         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24294                                 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24295 }
24296
24297 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24298 {
24299         int index;
24300         u32 bbmult_scale;
24301         u16 bbmult;
24302         u16 tblentry;
24303
24304         struct nphy_txiqcal_ladder ladder_lo[] = {
24305                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24306                 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24307                 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24308         };
24309
24310         struct nphy_txiqcal_ladder ladder_iq[] = {
24311                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24312                 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24313                 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24314         };
24315
24316         bbmult = (core == PHY_CORE_0) ?
24317                  ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24318                  (pi->nphy_txcal_bbmult & 0xff);
24319
24320         for (index = 0; index < 18; index++) {
24321                 bbmult_scale = ladder_lo[index].percent * bbmult;
24322                 bbmult_scale /= 100;
24323
24324                 tblentry =
24325                         ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24326                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24327                                          &tblentry);
24328
24329                 bbmult_scale = ladder_iq[index].percent * bbmult;
24330                 bbmult_scale /= 100;
24331
24332                 tblentry =
24333                         ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24334                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24335                                          16, &tblentry);
24336         }
24337 }
24338
24339 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24340 {
24341         u16 tmp;
24342         tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24343
24344         tmp = (tmp & (0x7f << 8)) >> 8;
24345         return (u8) tmp;
24346 }
24347
24348 static void
24349 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24350 {
24351         mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24352
24353         if (NREV_GT(pi->pubpi.phy_rev, 1))
24354                 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24355 }
24356
24357 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24358 {
24359         u16 m0m1;
24360
24361         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24362
24363         return m0m1;
24364 }
24365
24366 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24367 {
24368         u16 m0m1 = (u16) ((m0 << 8) | m1);
24369
24370         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24371         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24372 }
24373
24374 static void
24375 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24376                             struct nphy_papd_restore_state *state, u8 core)
24377 {
24378         s32 tone_freq;
24379         u8 off_core;
24380         u16 mixgain = 0;
24381
24382         off_core = core ^ 0x1;
24383         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24384
24385                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24386                     || NREV_GE(pi->pubpi.phy_rev, 8))
24387                         wlc_phy_rfctrl_override_nphy_rev7(
24388                                 pi, (0x1 << 7),
24389                                 wlc_phy_read_lpf_bw_ctl_nphy
24390                                         (pi,
24391                                         0), 0, 0,
24392                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24393
24394                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24395                         if (pi->pubpi.radiorev == 5)
24396                                 mixgain = (core == 0) ? 0x20 : 0x00;
24397                         else if ((pi->pubpi.radiorev == 7)
24398                                  || (pi->pubpi.radiorev == 8))
24399                                 mixgain = 0x00;
24400                         else if ((pi->pubpi.radiorev <= 4)
24401                                  || (pi->pubpi.radiorev == 6))
24402                                 mixgain = 0x00;
24403                 } else {
24404                         if ((pi->pubpi.radiorev == 4) ||
24405                             (pi->pubpi.radiorev == 6))
24406                                 mixgain = 0x50;
24407                         else if ((pi->pubpi.radiorev == 3)
24408                                  || (pi->pubpi.radiorev == 7)
24409                                  || (pi->pubpi.radiorev == 8))
24410                                 mixgain = 0x0;
24411                 }
24412
24413                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24414                                                   mixgain, (1 << core), 0,
24415                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24416
24417                 wlc_phy_rfctrl_override_1tomany_nphy(
24418                         pi,
24419                         NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24420                         1, (1 << core), 0);
24421                 wlc_phy_rfctrl_override_1tomany_nphy(
24422                         pi,
24423                         NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24424                         0, (1 << off_core), 0);
24425
24426                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24427                                                   0, 0x3, 0,
24428                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24429                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24430                                                   (1 << core), 0,
24431                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24432                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24433                                                   (1 << core), 0,
24434                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24435                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24436                                                   (1 << core), 0,
24437                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24438                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24439                                                   (1 << core), 0,
24440                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24441                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24442                                                   (1 << core), 0,
24443                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24444                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24445                                                   (1 << core), 0,
24446                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24447                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24448                                                   (1 << core), 0,
24449                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24450
24451                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24452                                                   0, (1 << core), 0,
24453                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24454                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24455                                                   (1 << core), 0,
24456                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24457
24458                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24459                                                     0xa6 : 0xa7);
24460                 state->afeoverride[core] =
24461                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24462                 state->afectrl[off_core] =
24463                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24464                 state->afeoverride[off_core] =
24465                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24466
24467                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24468                             (0x1 << 2), 0);
24469                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24470                                  0xa5), (0x1 << 2), (0x1 << 2));
24471
24472                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24473                             (0x1 << 2), (0x1 << 2));
24474                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24475                                  0x8f), (0x1 << 2), (0x1 << 2));
24476
24477                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24478                         state->pwrup[core] =
24479                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24480                                                 TXRXCOUPLE_2G_PWRUP);
24481                         state->atten[core] =
24482                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24483                                                 TXRXCOUPLE_2G_ATTEN);
24484                         state->pwrup[off_core] =
24485                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24486                                                 TXRXCOUPLE_2G_PWRUP);
24487                         state->atten[off_core] =
24488                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24489                                                 TXRXCOUPLE_2G_ATTEN);
24490
24491                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24492                                          TXRXCOUPLE_2G_PWRUP, 0xc);
24493
24494                         if ((pi->pubpi.radiorev == 3) ||
24495                             (pi->pubpi.radiorev == 4) ||
24496                             (pi->pubpi.radiorev == 6))
24497                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24498                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
24499                         else if (pi->pubpi.radiorev == 5)
24500                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24501                                                  TXRXCOUPLE_2G_ATTEN,
24502                                                  (core == 0) ? 0xf7 : 0xf2);
24503                         else if ((pi->pubpi.radiorev == 7)
24504                                  || (pi->pubpi.radiorev == 8))
24505                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24506                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
24507
24508                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24509                                          TXRXCOUPLE_2G_PWRUP, 0x0);
24510                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24511                                          TXRXCOUPLE_2G_ATTEN, 0xff);
24512                 } else {
24513                         state->pwrup[core] =
24514                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24515                                                 TXRXCOUPLE_5G_PWRUP);
24516                         state->atten[core] =
24517                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24518                                                 TXRXCOUPLE_5G_ATTEN);
24519                         state->pwrup[off_core] =
24520                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24521                                                 TXRXCOUPLE_5G_PWRUP);
24522                         state->atten[off_core] =
24523                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24524                                                 TXRXCOUPLE_5G_ATTEN);
24525
24526                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24527                                          TXRXCOUPLE_5G_PWRUP, 0xc);
24528
24529                         if ((pi->pubpi.radiorev == 7)
24530                             || (pi->pubpi.radiorev == 8))
24531                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24532                                                  TXRXCOUPLE_5G_ATTEN, 0xf4);
24533
24534                         else
24535                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24536                                                  TXRXCOUPLE_5G_ATTEN, 0xf0);
24537
24538                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24539                                          TXRXCOUPLE_5G_PWRUP, 0x0);
24540                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24541                                          TXRXCOUPLE_5G_ATTEN, 0xff);
24542                 }
24543
24544                 tone_freq = 4000;
24545
24546                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24547
24548                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24549                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24550
24551                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24552                             0x2a4, (0x1 << 13), (1) << 13);
24553
24554                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24555                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24556
24557                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24558                             0x2a4, (0x1 << 13), (0) << 13);
24559
24560         } else {
24561
24562                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24563
24564                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24565
24566                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24567
24568                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24569                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24570
24571                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24572                                                     0xa6 : 0xa7);
24573                 state->afeoverride[core] =
24574                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24575
24576                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24577                             (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24578                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24579                                  0xa5),
24580                             (0x1 << 0) |
24581                             (0x1 << 1) |
24582                             (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24583
24584                 state->vga_master[core] =
24585                         READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24586                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24587                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24588                         state->fbmix[core] =
24589                                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24590                                                 TXFBMIX_G);
24591                         state->intpa_master[core] =
24592                                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24593                                                 INTPAG_MASTER);
24594
24595                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24596                                          0x03);
24597                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24598                                          INTPAG_MASTER, 0x04);
24599                 } else {
24600                         state->fbmix[core] =
24601                                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24602                                                 TXFBMIX_A);
24603                         state->intpa_master[core] =
24604                                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24605                                                 INTPAA_MASTER);
24606
24607                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24608                                          0x03);
24609                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24610                                          INTPAA_MASTER, 0x04);
24611
24612                 }
24613
24614                 tone_freq = 4000;
24615
24616                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24617
24618                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24619                             0x29b, (0x1 << 0), (1) << 0);
24620
24621                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24622                             0x29b, (0x1 << 0), (0) << 0);
24623
24624                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24625         }
24626 }
24627
24628 static void
24629 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24630                               struct nphy_papd_restore_state *state)
24631 {
24632         u8 core;
24633
24634         wlc_phy_stopplayback_nphy(pi);
24635
24636         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24637
24638                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24639
24640                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24641                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24642                                                  TXRXCOUPLE_2G_PWRUP, 0);
24643                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24644                                                  TXRXCOUPLE_2G_ATTEN,
24645                                                  state->atten[core]);
24646                         } else {
24647                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24648                                                  TXRXCOUPLE_5G_PWRUP, 0);
24649                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24650                                                  TXRXCOUPLE_5G_ATTEN,
24651                                                  state->atten[core]);
24652                         }
24653                 }
24654
24655                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24656                         wlc_phy_rfctrl_override_nphy_rev7(
24657                                 pi, (0x1 << 2),
24658                                 1, 0x3, 0,
24659                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24660                 else
24661                         wlc_phy_rfctrl_override_nphy_rev7(
24662                                 pi, (0x1 << 2),
24663                                 0, 0x3, 1,
24664                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24665
24666                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24667                                                   0, 0x3, 1,
24668                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24669                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24670                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24671                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24672                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24673                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24674                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24675                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24676                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24677                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24678                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24679                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24680                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24681                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24682                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24683                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24684                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24685                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24686                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24687                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24688                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24689                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24690                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24691                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24692                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24693                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24694                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24695                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24696                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24697                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24698                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24699
24700                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24701
24702                         write_phy_reg(pi, (core == PHY_CORE_0) ?
24703                                       0xa6 : 0xa7, state->afectrl[core]);
24704                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24705                                       0xa5, state->afeoverride[core]);
24706                 }
24707
24708                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24709                                             (state->mm & 0xff));
24710
24711                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24712                     || NREV_GE(pi->pubpi.phy_rev, 8))
24713                         wlc_phy_rfctrl_override_nphy_rev7(
24714                                 pi, (0x1 << 7), 0, 0,
24715                                 1,
24716                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24717         } else {
24718                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24719                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24720                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24721
24722                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24723                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24724
24725                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24726
24727                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24728                                          state->vga_master[core]);
24729                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24730                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24731                                                  TXFBMIX_G, state->fbmix[core]);
24732                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24733                                                  INTPAG_MASTER,
24734                                                  state->intpa_master[core]);
24735                         } else {
24736                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24737                                                  TXFBMIX_A, state->fbmix[core]);
24738                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24739                                                  INTPAA_MASTER,
24740                                                  state->intpa_master[core]);
24741                         }
24742
24743                         write_phy_reg(pi, (core == PHY_CORE_0) ?
24744                                       0xa6 : 0xa7, state->afectrl[core]);
24745                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24746                                       0xa5, state->afeoverride[core]);
24747                 }
24748
24749                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24750                                             (state->mm & 0xff));
24751
24752                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24753         }
24754 }
24755
24756 static void
24757 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24758                 u32 end)
24759 {
24760         u32 *buf, *src, *dst, sz;
24761
24762         sz = end - start + 1;
24763
24764         buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24765         if (NULL == buf)
24766                 return;
24767
24768         src = buf;
24769         dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24770
24771         wlc_phy_table_read_nphy(pi,
24772                                 (core ==
24773                                  PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24774                                  NPHY_TBL_ID_EPSILONTBL1),
24775                                 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24776
24777         do {
24778                 u32 phy_a1, phy_a2;
24779                 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24780
24781                 phy_a1 = end - min(end, (winsz >> 1));
24782                 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24783                                end + (winsz >> 1));
24784                 phy_a3 = phy_a2 - phy_a1 + 1;
24785                 phy_a6 = 0;
24786                 phy_a7 = 0;
24787
24788                 do {
24789                         wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24790                                                     &phy_a5);
24791                         phy_a6 += phy_a4;
24792                         phy_a7 += phy_a5;
24793                 } while (phy_a2-- != phy_a1);
24794
24795                 phy_a6 /= phy_a3;
24796                 phy_a7 /= phy_a3;
24797                 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24798         } while (end-- != start);
24799
24800         wlc_phy_table_write_nphy(pi,
24801                                  (core ==
24802                                   PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24803                                  NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24804
24805         kfree(buf);
24806 }
24807
24808 static void
24809 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24810                 enum phy_cal_mode cal_mode, u8 core)
24811 {
24812         u16 phy_a1, phy_a2, phy_a3;
24813         u16 phy_a4, phy_a5;
24814         bool phy_a6;
24815         u8 phy_a7, m[2];
24816         u32 phy_a8 = 0;
24817         struct nphy_txgains phy_a9;
24818
24819         if (NREV_LT(pi->pubpi.phy_rev, 3))
24820                 return;
24821
24822         phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24823
24824         phy_a6 = ((cal_mode == CAL_GCTRL)
24825                   || (cal_mode == CAL_SOFT)) ? true : false;
24826
24827         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24828
24829                 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24830
24831                 if (CHSPEC_IS2G(pi->radio_chanspec))
24832                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
24833                                   (phy_a9.txgm[core] << 12) |
24834                                   (phy_a9.pga[core] << 8) |
24835                                   (txgains->gains.pad[core] << 3) |
24836                                   (phy_a9.ipa[core]));
24837                 else
24838                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
24839                                   (phy_a9.txgm[core] << 12) |
24840                                   (txgains->gains.pga[core] << 8) |
24841                                   (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24842
24843                 wlc_phy_rfctrl_override_1tomany_nphy(
24844                         pi,
24845                         NPHY_REV7_RfctrlOverride_cmd_txgain,
24846                         phy_a5, (1 << core), 0);
24847
24848                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24849                         if ((pi->pubpi.radiorev <= 4)
24850                             || (pi->pubpi.radiorev == 6))
24851                                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24852                                           60 : 79;
24853                         else
24854                                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24855                                           45 : 64;
24856                 } else {
24857                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24858                 }
24859
24860                 m[phy_a7] = 0;
24861                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24862
24863                 phy_a2 = 63;
24864
24865                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24866                         if ((pi->pubpi.radiorev == 4)
24867                             || (pi->pubpi.radiorev == 6)) {
24868                                 phy_a1 = 30;
24869                                 phy_a3 = 30;
24870                         } else {
24871                                 phy_a1 = 25;
24872                                 phy_a3 = 25;
24873                         }
24874                 } else {
24875                         if ((pi->pubpi.radiorev == 5)
24876                             || (pi->pubpi.radiorev == 7)
24877                             || (pi->pubpi.radiorev == 8)) {
24878                                 phy_a1 = 25;
24879                                 phy_a3 = 25;
24880                         } else {
24881                                 phy_a1 = 35;
24882                                 phy_a3 = 35;
24883                         }
24884                 }
24885
24886                 if (cal_mode == CAL_GCTRL) {
24887                         if ((pi->pubpi.radiorev == 5)
24888                             && (CHSPEC_IS2G(pi->radio_chanspec)))
24889                                 phy_a1 = 55;
24890                         else if (((pi->pubpi.radiorev == 7) &&
24891                                   (CHSPEC_IS2G(pi->radio_chanspec))) ||
24892                                  ((pi->pubpi.radiorev == 8) &&
24893                                   (CHSPEC_IS2G(pi->radio_chanspec))))
24894                                 phy_a1 = 60;
24895                         else
24896                                 phy_a1 = 63;
24897
24898                 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24899
24900                         phy_a1 = 35;
24901                         phy_a3 = 35;
24902                 }
24903
24904                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24905                             0x29b, (0x1 << 0), (1) << 0);
24906
24907                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24908                             0x29b, (0x1 << 0), (0) << 0);
24909
24910                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24911                             0x2a4, (0x1 << 13), (1) << 13);
24912
24913                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24914                             0x2a4, (0x1 << 13), (0) << 13);
24915
24916                 write_phy_reg(pi, 0x2a1, 0x80);
24917                 write_phy_reg(pi, 0x2a2, 0x100);
24918
24919                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24920                             0x2a4, (0x7 << 4), (11) << 4);
24921
24922                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24923                             0x2a4, (0x7 << 8), (11) << 8);
24924
24925                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24926                             0x2a4, (0x7 << 0), (0x3) << 0);
24927
24928                 write_phy_reg(pi, 0x2e5, 0x20);
24929
24930                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24931
24932                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24933
24934                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24935
24936                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24937                                                   1, ((core == 0) ? 1 : 2), 0,
24938                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24939                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24940                                                   0, ((core == 0) ? 2 : 1), 0,
24941                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24942
24943                 write_phy_reg(pi, 0x2be, 1);
24944                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24945
24946                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24947                                                   0, 0x3, 0,
24948                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24949
24950                 wlc_phy_table_write_nphy(pi,
24951                                          (core ==
24952                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24953                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24954                                          32, &phy_a8);
24955
24956                 if (cal_mode != CAL_GCTRL) {
24957                         if (CHSPEC_IS5G(pi->radio_chanspec))
24958                                 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
24959                 }
24960
24961                 wlc_phy_rfctrl_override_1tomany_nphy(
24962                         pi,
24963                         NPHY_REV7_RfctrlOverride_cmd_txgain,
24964                         phy_a5, (1 << core), 1);
24965
24966         } else {
24967
24968                 if (txgains) {
24969                         if (txgains->useindex) {
24970                                 phy_a4 = 15 - ((txgains->index) >> 3);
24971                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24972                                         if (NREV_GE(pi->pubpi.phy_rev, 6) &&
24973                                             pi->sh->chip == BCMA_CHIP_ID_BCM47162) {
24974                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
24975                                         } else if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24976                                                 phy_a5 = 0x00f7 | (phy_a4 << 8);
24977                                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
24978                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
24979                                         } else {
24980                                                 phy_a5 = 0x50f7 | (phy_a4 << 8);
24981                                         }
24982                                 } else {
24983                                         phy_a5 = 0x70f7 | (phy_a4 << 8);
24984                                 }
24985                                 wlc_phy_rfctrl_override_nphy(pi,
24986                                                              (0x1 << 13),
24987                                                              phy_a5,
24988                                                              (1 << core), 0);
24989                         } else {
24990                                 wlc_phy_rfctrl_override_nphy(pi,
24991                                                              (0x1 << 13),
24992                                                              0x5bf7,
24993                                                              (1 << core), 0);
24994                         }
24995                 }
24996
24997                 if (CHSPEC_IS2G(pi->radio_chanspec))
24998                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
24999                 else
25000                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
25001
25002                 m[phy_a7] = 0;
25003                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
25004
25005                 phy_a2 = 63;
25006
25007                 if (cal_mode == CAL_FULL) {
25008                         phy_a1 = 25;
25009                         phy_a3 = 25;
25010                 } else if (cal_mode == CAL_SOFT) {
25011                         phy_a1 = 25;
25012                         phy_a3 = 25;
25013                 } else if (cal_mode == CAL_GCTRL) {
25014                         phy_a1 = 63;
25015                         phy_a3 = 25;
25016                 } else {
25017
25018                         phy_a1 = 25;
25019                         phy_a3 = 25;
25020                 }
25021
25022                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
25023                             0x29b, (0x1 << 0), (1) << 0);
25024
25025                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
25026                             0x29b, (0x1 << 0), (0) << 0);
25027
25028                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25029                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25030                                     0x2a4, (0x1 << 13), (1) << 13);
25031
25032                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25033                                     0x2a4, (0x1 << 13), (0) << 13);
25034
25035                         write_phy_reg(pi, 0x2a1, 0x20);
25036                         write_phy_reg(pi, 0x2a2, 0x60);
25037
25038                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25039                                     0x2a4, (0xf << 4), (9) << 4);
25040
25041                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25042                                     0x2a4, (0xf << 8), (9) << 8);
25043
25044                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25045                                     0x2a4, (0xf << 0), (0x2) << 0);
25046
25047                         write_phy_reg(pi, 0x2e5, 0x20);
25048                 } else {
25049                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25050                                     0x2a4, (0x1 << 11), (1) << 11);
25051
25052                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25053                                     0x2a4, (0x1 << 11), (0) << 11);
25054
25055                         write_phy_reg(pi, 0x2a1, 0x80);
25056                         write_phy_reg(pi, 0x2a2, 0x600);
25057
25058                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25059                                     0x2a4, (0x7 << 4), (0) << 4);
25060
25061                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25062                                     0x2a4, (0x7 << 8), (0) << 8);
25063
25064                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25065                                     0x2a4, (0x7 << 0), (0x3) << 0);
25066
25067                         mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
25068
25069                 }
25070
25071                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25072
25073                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25074
25075                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25076
25077                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
25078
25079                 write_phy_reg(pi, 0x2be, 1);
25080                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25081
25082                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
25083
25084                 wlc_phy_table_write_nphy(pi,
25085                                          (core ==
25086                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25087                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25088                                          32, &phy_a8);
25089
25090                 if (cal_mode != CAL_GCTRL)
25091                         wlc_phy_a1_nphy(pi, core, 5, 0, 40);
25092         }
25093 }
25094
25095 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
25096 {
25097         int phy_a1;
25098         int phy_a2;
25099         bool phy_a3;
25100         struct nphy_ipa_txcalgains phy_a4;
25101         bool phy_a5 = false;
25102         bool phy_a6 = true;
25103         s32 phy_a7, phy_a8;
25104         u32 phy_a9;
25105         int phy_a10;
25106         bool phy_a11 = false;
25107         int phy_a12;
25108         u8 phy_a13 = 0;
25109         u8 phy_a14;
25110         u8 *phy_a15 = NULL;
25111
25112         phy_a4.useindex = true;
25113         phy_a12 = start_gain;
25114
25115         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25116
25117                 phy_a2 = 20;
25118                 phy_a1 = 1;
25119
25120                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25121                         if (pi->pubpi.radiorev == 5) {
25122
25123                                 phy_a15 = pad_gain_codes_used_2057rev5;
25124                                 phy_a13 =
25125                                         ARRAY_SIZE(pad_gain_codes_used_2057rev5) - 1;
25126
25127                         } else if ((pi->pubpi.radiorev == 7)
25128                                    || (pi->pubpi.radiorev == 8)) {
25129
25130                                 phy_a15 = pad_gain_codes_used_2057rev7;
25131                                 phy_a13 =
25132                                         ARRAY_SIZE(pad_gain_codes_used_2057rev7) - 1;
25133
25134                         } else {
25135
25136                                 phy_a15 = pad_all_gain_codes_2057;
25137                                 phy_a13 = ARRAY_SIZE(pad_all_gain_codes_2057) -
25138                                           1;
25139                         }
25140
25141                 } else {
25142
25143                         phy_a15 = pga_all_gain_codes_2057;
25144                         phy_a13 = ARRAY_SIZE(pga_all_gain_codes_2057) - 1;
25145                 }
25146
25147                 phy_a14 = 0;
25148
25149                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25150                         if (CHSPEC_IS2G(pi->radio_chanspec))
25151                                 phy_a4.gains.pad[core] =
25152                                         (u16) phy_a15[phy_a12];
25153                         else
25154                                 phy_a4.gains.pga[core] =
25155                                         (u16) phy_a15[phy_a12];
25156
25157                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25158
25159                         wlc_phy_table_read_nphy(pi,
25160                                                 (core ==
25161                                                  PHY_CORE_0 ?
25162                                                  NPHY_TBL_ID_EPSILONTBL0 :
25163                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
25164                                                 63, 32, &phy_a9);
25165
25166                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25167
25168                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25169                                   (phy_a8 == 4095) || (phy_a8 == -4096));
25170
25171                         if (!phy_a6 && (phy_a3 != phy_a5)) {
25172                                 if (!phy_a3)
25173                                         phy_a12 -= (u8) phy_a1;
25174
25175                                 phy_a11 = true;
25176                                 break;
25177                         }
25178
25179                         if (phy_a3)
25180                                 phy_a12 += (u8) phy_a1;
25181                         else
25182                                 phy_a12 -= (u8) phy_a1;
25183
25184                         if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25185                                 if (phy_a12 < phy_a14)
25186                                         phy_a12 = phy_a14;
25187                                 else
25188                                         phy_a12 = phy_a13;
25189
25190                                 phy_a11 = true;
25191                                 break;
25192                         }
25193
25194                         phy_a6 = false;
25195                         phy_a5 = phy_a3;
25196                 }
25197
25198         } else {
25199                 phy_a2 = 10;
25200                 phy_a1 = 8;
25201                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25202                         phy_a4.index = (u8) phy_a12;
25203                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25204
25205                         wlc_phy_table_read_nphy(pi,
25206                                                 (core ==
25207                                                  PHY_CORE_0 ?
25208                                                  NPHY_TBL_ID_EPSILONTBL0 :
25209                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
25210                                                 63, 32, &phy_a9);
25211
25212                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25213
25214                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25215                                   (phy_a8 == 4095) || (phy_a8 == -4096));
25216
25217                         if (!phy_a6 && (phy_a3 != phy_a5)) {
25218                                 if (!phy_a3)
25219                                         phy_a12 -= (u8) phy_a1;
25220
25221                                 phy_a11 = true;
25222                                 break;
25223                         }
25224
25225                         if (phy_a3)
25226                                 phy_a12 += (u8) phy_a1;
25227                         else
25228                                 phy_a12 -= (u8) phy_a1;
25229
25230                         if ((phy_a12 < 0) || (phy_a12 > 127)) {
25231                                 if (phy_a12 < 0)
25232                                         phy_a12 = 0;
25233                                 else
25234                                         phy_a12 = 127;
25235
25236                                 phy_a11 = true;
25237                                 break;
25238                         }
25239
25240                         phy_a6 = false;
25241                         phy_a5 = phy_a3;
25242                 }
25243
25244         }
25245
25246         if (NREV_GE(pi->pubpi.phy_rev, 7))
25247                 return (u8) phy_a15[phy_a12];
25248         else
25249                 return (u8) phy_a12;
25250
25251 }
25252
25253 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25254 {
25255         struct nphy_ipa_txcalgains phy_b1[2];
25256         struct nphy_papd_restore_state phy_b2;
25257         bool phy_b3;
25258         u8 phy_b4;
25259         u8 phy_b5;
25260         s16 phy_b6, phy_b7, phy_b8;
25261         u16 phy_b9;
25262         s16 phy_b10, phy_b11, phy_b12;
25263
25264         phy_b11 = 0;
25265         phy_b12 = 0;
25266         phy_b7 = 0;
25267         phy_b8 = 0;
25268         phy_b6 = 0;
25269
25270         if (pi->nphy_papd_skip == 1)
25271                 return;
25272
25273         phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25274                         MCTL_EN_MAC));
25275         if (!phy_b3)
25276                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25277
25278         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25279
25280         pi->nphy_force_papd_cal = false;
25281
25282         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25283                 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25284                         wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25285
25286         pi->nphy_papd_last_cal = pi->sh->now;
25287         pi->nphy_papd_recal_counter++;
25288
25289         phy_b4 = pi->nphy_txpwrctrl;
25290         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25291
25292         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25293                                  nphy_papd_scaltbl);
25294         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25295                                  nphy_papd_scaltbl);
25296
25297         phy_b9 = read_phy_reg(pi, 0x01);
25298         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25299
25300         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25301                 s32 i, val = 0;
25302                 for (i = 0; i < 64; i++)
25303                         wlc_phy_table_write_nphy(pi,
25304                                                  ((phy_b5 ==
25305                                                    PHY_CORE_0) ?
25306                                                   NPHY_TBL_ID_EPSILONTBL0 :
25307                                                   NPHY_TBL_ID_EPSILONTBL1), 1,
25308                                                  i, 32, &val);
25309         }
25310
25311         wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25312
25313         phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25314         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25315                 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25316
25317                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25318                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25319                                 if ((pi->pubpi.radiorev == 3)
25320                                     || (pi->pubpi.radiorev == 4)
25321                                     || (pi->pubpi.radiorev == 6)) {
25322                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25323                                                 23;
25324                                 } else if (pi->pubpi.radiorev == 5) {
25325                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25326                                                 0;
25327                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25328                                                 wlc_phy_a3_nphy(
25329                                                         pi,
25330                                                         pi->
25331                                                         nphy_papd_cal_gain_index
25332                                                         [phy_b5],
25333                                                         phy_b5);
25334
25335                                 } else if ((pi->pubpi.radiorev == 7)
25336                                            || (pi->pubpi.radiorev == 8)) {
25337
25338                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25339                                                 0;
25340                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25341                                                 wlc_phy_a3_nphy(
25342                                                         pi,
25343                                                         pi->
25344                                                         nphy_papd_cal_gain_index
25345                                                         [phy_b5],
25346                                                         phy_b5);
25347
25348                                 }
25349
25350                                 phy_b1[phy_b5].gains.pad[phy_b5] =
25351                                         pi->nphy_papd_cal_gain_index[phy_b5];
25352
25353                         } else {
25354                                 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25355                                 pi->nphy_papd_cal_gain_index[phy_b5] =
25356                                         wlc_phy_a3_nphy(
25357                                                 pi,
25358                                                 pi->
25359                                                 nphy_papd_cal_gain_index
25360                                                 [phy_b5], phy_b5);
25361                                 phy_b1[phy_b5].gains.pga[phy_b5] =
25362                                         pi->nphy_papd_cal_gain_index[phy_b5];
25363                         }
25364                 } else {
25365                         phy_b1[phy_b5].useindex = true;
25366                         phy_b1[phy_b5].index = 16;
25367                         phy_b1[phy_b5].index =
25368                                 wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25369                                                 phy_b5);
25370
25371                         pi->nphy_papd_cal_gain_index[phy_b5] =
25372                                 15 - ((phy_b1[phy_b5].index) >> 3);
25373                 }
25374
25375                 switch (pi->nphy_papd_cal_type) {
25376                 case 0:
25377                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25378                         break;
25379                 case 1:
25380                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25381                         break;
25382                 }
25383
25384                 if (NREV_GE(pi->pubpi.phy_rev, 7))
25385                         wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25386         }
25387
25388         if (NREV_LT(pi->pubpi.phy_rev, 7))
25389                 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25390
25391         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25392                 int eps_offset = 0;
25393
25394                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25395                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25396                                 if (pi->pubpi.radiorev == 3)
25397                                         eps_offset = -2;
25398                                 else if (pi->pubpi.radiorev == 5)
25399                                         eps_offset = 3;
25400                                 else
25401                                         eps_offset = -1;
25402                         } else {
25403                                 eps_offset = 2;
25404                         }
25405
25406                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25407                                 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25408                                 phy_b10 = 0;
25409                                 if ((pi->pubpi.radiorev == 3) ||
25410                                     (pi->pubpi.radiorev == 4) ||
25411                                     (pi->pubpi.radiorev == 6)) {
25412                                         phy_b12 = -(
25413                                             nphy_papd_padgain_dlt_2g_2057rev3n4
25414                                                              [phy_b8] + 1) / 2;
25415                                         phy_b10 = -1;
25416                                 } else if (pi->pubpi.radiorev == 5) {
25417                                         phy_b12 = -(
25418                                             nphy_papd_padgain_dlt_2g_2057rev5
25419                                                              [phy_b8] + 1) / 2;
25420                                 } else if ((pi->pubpi.radiorev == 7) ||
25421                                            (pi->pubpi.radiorev == 8)) {
25422                                         phy_b12 = -(
25423                                             nphy_papd_padgain_dlt_2g_2057rev7
25424                                                              [phy_b8] + 1) / 2;
25425                                 }
25426                         } else {
25427                                 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25428                                 if ((pi->pubpi.radiorev == 3) ||
25429                                     (pi->pubpi.radiorev == 4) ||
25430                                     (pi->pubpi.radiorev == 6))
25431                                         phy_b11 =
25432                                                 -(nphy_papd_pgagain_dlt_5g_2057
25433                                                   [phy_b7]
25434                                                   + 1) / 2;
25435                                 else if ((pi->pubpi.radiorev == 7)
25436                                          || (pi->pubpi.radiorev == 8))
25437                                         phy_b11 = -(
25438                                               nphy_papd_pgagain_dlt_5g_2057rev7
25439                                                              [phy_b7] + 1) / 2;
25440
25441                                 phy_b10 = -9;
25442                         }
25443
25444                         if (CHSPEC_IS2G(pi->radio_chanspec))
25445                                 phy_b6 =
25446                                         -60 + 27 + eps_offset + phy_b12 +
25447                                         phy_b10;
25448                         else
25449                                 phy_b6 =
25450                                         -60 + 27 + eps_offset + phy_b11 +
25451                                         phy_b10;
25452
25453                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25454                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25455
25456                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25457                 } else {
25458                         if (NREV_LT(pi->pubpi.phy_rev, 5))
25459                                 eps_offset = 4;
25460                         else
25461                                 eps_offset = 2;
25462
25463                         phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25464
25465                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25466                                 phy_b11 =
25467                                         -(nphy_papd_pga_gain_delta_ipa_2g[
25468                                                   phy_b7] +
25469                                           1) / 2;
25470                                 phy_b10 = 0;
25471                         } else {
25472                                 phy_b11 =
25473                                         -(nphy_papd_pga_gain_delta_ipa_5g[
25474                                                   phy_b7] +
25475                                           1) / 2;
25476                                 phy_b10 = -9;
25477                         }
25478
25479                         phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25480
25481                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25482                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25483
25484                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25485                 }
25486         }
25487
25488         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25489                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25490
25491         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25492                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25493
25494         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25495                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25496                             0x2a4, (0x1 << 13), (0) << 13);
25497
25498                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25499                             0x2a4, (0x1 << 13), (0) << 13);
25500
25501         } else {
25502                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25503                             0x2a4, (0x1 << 11), (0) << 11);
25504
25505                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25506                             0x2a4, (0x1 << 11), (0) << 11);
25507
25508         }
25509         pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25510
25511         write_phy_reg(pi, 0x01, phy_b9);
25512
25513         wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25514
25515         wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25516         if (phy_b4 == PHY_TPC_HW_OFF) {
25517                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25518                                          (s8) (pi->nphy_txpwrindex[0].
25519                                                index_internal), false);
25520                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25521                                          (s8) (pi->nphy_txpwrindex[1].
25522                                                index_internal), false);
25523         }
25524
25525         wlc_phy_stay_in_carriersearch_nphy(pi, false);
25526
25527         if (!phy_b3)
25528                 wlapi_enable_mac(pi->sh->physhim);
25529 }
25530
25531 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25532 {
25533         struct nphy_txgains target_gain;
25534         u8 tx_pwr_ctrl_state;
25535         bool fullcal = true;
25536         bool restore_tx_gain = false;
25537         bool mphase;
25538
25539         if (PHY_MUTED(pi))
25540                 return;
25541
25542         if (caltype == PHY_PERICAL_AUTO)
25543                 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25544         else if (caltype == PHY_PERICAL_PARTIAL)
25545                 fullcal = false;
25546
25547         if (pi->cal_type_override != PHY_PERICAL_AUTO)
25548                 fullcal =
25549                         (pi->cal_type_override ==
25550                          PHY_PERICAL_FULL) ? true : false;
25551
25552         if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
25553                 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25554                         wlc_phy_cal_perical_mphase_restart(pi);
25555         }
25556
25557         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL))
25558                 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25559
25560         wlapi_suspend_mac_and_wait(pi->sh->physhim);
25561
25562         wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25563
25564         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25565             (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25566                 pi->nphy_cal_orig_pwr_idx[0] =
25567                         (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25568                 pi->nphy_cal_orig_pwr_idx[1] =
25569                         (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25570
25571                 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25572                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25573                                                 0x110, 16,
25574                                                 pi->nphy_cal_orig_tx_gain);
25575                 } else {
25576                         pi->nphy_cal_orig_tx_gain[0] = 0;
25577                         pi->nphy_cal_orig_tx_gain[1] = 0;
25578                 }
25579         }
25580         target_gain = wlc_phy_get_tx_gain_nphy(pi);
25581         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25582         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25583
25584         if (pi->antsel_type == ANTSEL_2x3)
25585                 wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25586
25587         mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25588         if (!mphase) {
25589
25590                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25591                         wlc_phy_precal_txgain_nphy(pi);
25592                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25593                         restore_tx_gain = true;
25594
25595                         target_gain = pi->nphy_cal_target_gain;
25596                 }
25597                 if (0 ==
25598                     wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25599                                             mphase)) {
25600                         if (PHY_IPA(pi))
25601                                 wlc_phy_a4(pi, true);
25602
25603                         wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25604                         wlapi_enable_mac(pi->sh->physhim);
25605                         wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25606                                              10000);
25607                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
25608                         wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25609
25610                         if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25611                                         (pi->first_cal_after_assoc ||
25612                                         (pi->cal_type_override ==
25613                                          PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25614                                 wlc_phy_savecal_nphy(pi);
25615
25616                                 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25617
25618                                 pi->nphy_perical_last = pi->sh->now;
25619                         }
25620                 }
25621                 if (caltype != PHY_PERICAL_AUTO)
25622                         wlc_phy_rssi_cal_nphy(pi);
25623
25624                 if (pi->first_cal_after_assoc
25625                     || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25626                         pi->first_cal_after_assoc = false;
25627                         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25628                         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25629                 }
25630
25631                 if (NREV_GE(pi->pubpi.phy_rev, 3))
25632                         wlc_phy_radio205x_vcocal_nphy(pi);
25633         } else {
25634                 switch (pi->mphase_cal_phase_id) {
25635                 case MPHASE_CAL_STATE_INIT:
25636                         pi->nphy_perical_last = pi->sh->now;
25637                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25638
25639                         if (NREV_GE(pi->pubpi.phy_rev, 3))
25640                                 wlc_phy_precal_txgain_nphy(pi);
25641
25642                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25643                         pi->mphase_cal_phase_id++;
25644                         break;
25645
25646                 case MPHASE_CAL_STATE_TXPHASE0:
25647                 case MPHASE_CAL_STATE_TXPHASE1:
25648                 case MPHASE_CAL_STATE_TXPHASE2:
25649                 case MPHASE_CAL_STATE_TXPHASE3:
25650                 case MPHASE_CAL_STATE_TXPHASE4:
25651                 case MPHASE_CAL_STATE_TXPHASE5:
25652                         if ((pi->radar_percal_mask & 0x10) != 0)
25653                                 pi->nphy_rxcal_active = true;
25654
25655                         if (wlc_phy_cal_txiqlo_nphy
25656                                     (pi, pi->nphy_cal_target_gain, fullcal,
25657                                     true) != 0) {
25658
25659                                 wlc_phy_cal_perical_mphase_reset(pi);
25660                                 break;
25661                         }
25662
25663                         if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25664                             (pi->mphase_cal_phase_id ==
25665                              MPHASE_CAL_STATE_TXPHASE4))
25666                                 pi->mphase_cal_phase_id += 2;
25667                         else
25668                                 pi->mphase_cal_phase_id++;
25669                         break;
25670
25671                 case MPHASE_CAL_STATE_PAPDCAL:
25672                         if ((pi->radar_percal_mask & 0x2) != 0)
25673                                 pi->nphy_rxcal_active = true;
25674
25675                         if (PHY_IPA(pi))
25676                                 wlc_phy_a4(pi, true);
25677
25678                         pi->mphase_cal_phase_id++;
25679                         break;
25680
25681                 case MPHASE_CAL_STATE_RXCAL:
25682                         if ((pi->radar_percal_mask & 0x1) != 0)
25683                                 pi->nphy_rxcal_active = true;
25684                         if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25685                                                   (pi->first_cal_after_assoc ||
25686                                                    (pi->cal_type_override ==
25687                                                     PHY_PERICAL_FULL)) ? 2 : 0,
25688                                                   false) == 0)
25689                                 wlc_phy_savecal_nphy(pi);
25690
25691                         pi->mphase_cal_phase_id++;
25692                         break;
25693
25694                 case MPHASE_CAL_STATE_RSSICAL:
25695                         if ((pi->radar_percal_mask & 0x4) != 0)
25696                                 pi->nphy_rxcal_active = true;
25697                         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25698                         wlc_phy_rssi_cal_nphy(pi);
25699
25700                         if (NREV_GE(pi->pubpi.phy_rev, 3))
25701                                 wlc_phy_radio205x_vcocal_nphy(pi);
25702
25703                         restore_tx_gain = true;
25704
25705                         if (pi->first_cal_after_assoc)
25706                                 pi->mphase_cal_phase_id++;
25707                         else
25708                                 wlc_phy_cal_perical_mphase_reset(pi);
25709
25710                         break;
25711
25712                 case MPHASE_CAL_STATE_IDLETSSI:
25713                         if ((pi->radar_percal_mask & 0x8) != 0)
25714                                 pi->nphy_rxcal_active = true;
25715
25716                         if (pi->first_cal_after_assoc) {
25717                                 pi->first_cal_after_assoc = false;
25718                                 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25719                                 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25720                         }
25721
25722                         wlc_phy_cal_perical_mphase_reset(pi);
25723                         break;
25724
25725                 default:
25726                         wlc_phy_cal_perical_mphase_reset(pi);
25727                         break;
25728                 }
25729         }
25730
25731         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25732                 if (restore_tx_gain) {
25733                         if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25734
25735                                 wlc_phy_txpwr_index_nphy(pi, 1,
25736                                                          pi->
25737                                                          nphy_cal_orig_pwr_idx
25738                                                          [0], false);
25739                                 wlc_phy_txpwr_index_nphy(pi, 2,
25740                                                          pi->
25741                                                          nphy_cal_orig_pwr_idx
25742                                                          [1], false);
25743
25744                                 pi->nphy_txpwrindex[0].index = -1;
25745                                 pi->nphy_txpwrindex[1].index = -1;
25746                         } else {
25747                                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25748                                                          (s8) (pi->
25749                                                                nphy_txpwrindex
25750                                                                [0].
25751                                                                index_internal),
25752                                                          false);
25753                                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25754                                                          (s8) (pi->
25755                                                                nphy_txpwrindex
25756                                                                [1].
25757                                                                index_internal),
25758                                                          false);
25759                         }
25760                 }
25761         }
25762
25763         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25764         wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25765         wlapi_enable_mac(pi->sh->physhim);
25766 }
25767
25768 int
25769 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25770                         bool fullcal, bool mphase)
25771 {
25772         u16 val;
25773         u16 tbl_buf[11];
25774         u8 cal_cnt;
25775         u16 cal_cmd;
25776         u8 num_cals, max_cal_cmds;
25777         u16 core_no, cal_type;
25778         u16 diq_start = 0;
25779         u8 phy_bw;
25780         u16 max_val;
25781         u16 tone_freq;
25782         u16 gain_save[2];
25783         u16 cal_gain[2];
25784         struct nphy_iqcal_params cal_params[2];
25785         u32 tbl_len;
25786         void *tbl_ptr;
25787         bool ladder_updated[2];
25788         u8 mphase_cal_lastphase = 0;
25789         int bcmerror = 0;
25790         bool phyhang_avoid_state = false;
25791
25792         u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25793                 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25794                 0x1902,
25795                 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25796                 0x6407
25797         };
25798
25799         u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25800                 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25801                 0x3200,
25802                 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25803                 0x6407
25804         };
25805
25806         u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25807                 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25808                 0x1202,
25809                 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25810                 0x4707
25811         };
25812
25813         u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25814                 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25815                 0x2300,
25816                 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25817                 0x4707
25818         };
25819
25820         u16 tbl_tx_iqlo_cal_startcoefs[] = {
25821                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25822                 0x0000
25823         };
25824
25825         u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25826                 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25827                 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25828         };
25829
25830         u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25831                 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25832                 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25833         };
25834
25835         u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25836                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25837                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25838                 0x0000
25839         };
25840
25841         u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25842                 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25843                 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25844         };
25845
25846         u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25847                 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25848                 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25849         };
25850
25851         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25852
25853         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25854                 phyhang_avoid_state = pi->phyhang_avoid;
25855                 pi->phyhang_avoid = false;
25856         }
25857
25858         if (CHSPEC_IS40(pi->radio_chanspec))
25859                 phy_bw = 40;
25860         else
25861                 phy_bw = 20;
25862
25863         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25864
25865         for (core_no = 0; core_no <= 1; core_no++) {
25866                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25867                                               &cal_params[core_no]);
25868                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25869         }
25870
25871         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25872
25873         wlc_phy_txcal_radio_setup_nphy(pi);
25874
25875         wlc_phy_txcal_physetup_nphy(pi);
25876
25877         ladder_updated[0] = ladder_updated[1] = false;
25878         if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25879               (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25880                && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25881
25882                 if (phy_bw == 40) {
25883                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25884                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25885                 } else {
25886                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25887                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25888                 }
25889                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25890                                          16, tbl_ptr);
25891
25892                 if (phy_bw == 40) {
25893                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25894                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25895                 } else {
25896                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25897                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25898                 }
25899                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25900                                          16, tbl_ptr);
25901         }
25902
25903         if (NREV_GE(pi->pubpi.phy_rev, 7))
25904                 write_phy_reg(pi, 0xc2, 0x8ad9);
25905         else
25906                 write_phy_reg(pi, 0xc2, 0x8aa9);
25907
25908         max_val = 250;
25909         tone_freq = (phy_bw == 20) ? 2500 : 5000;
25910
25911         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25912                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
25913                 bcmerror = 0;
25914         } else {
25915                 bcmerror =
25916                         wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
25917                                              false);
25918         }
25919
25920         if (bcmerror == 0) {
25921
25922                 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25923                         tbl_ptr = pi->mphase_txcal_bestcoeffs;
25924                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25925                         if (NREV_LT(pi->pubpi.phy_rev, 3))
25926                                 tbl_len -= 2;
25927                 } else {
25928                         if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
25929
25930                                 tbl_ptr = pi->nphy_txiqlocal_bestc;
25931                                 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25932                                 if (NREV_LT(pi->pubpi.phy_rev, 3))
25933                                         tbl_len -= 2;
25934                         } else {
25935
25936                                 fullcal = true;
25937
25938                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25939                                         tbl_ptr =
25940                                             tbl_tx_iqlo_cal_startcoefs_nphyrev3;
25941                                         tbl_len = ARRAY_SIZE(
25942                                            tbl_tx_iqlo_cal_startcoefs_nphyrev3);
25943                                 } else {
25944                                         tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
25945                                         tbl_len = ARRAY_SIZE(
25946                                                     tbl_tx_iqlo_cal_startcoefs);
25947                                 }
25948                         }
25949                 }
25950                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
25951                                          16, tbl_ptr);
25952
25953                 if (fullcal) {
25954                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25955                                        ARRAY_SIZE(
25956                                 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
25957                                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
25958                 } else {
25959                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25960                                        ARRAY_SIZE(
25961                                 tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
25962                                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
25963                 }
25964
25965                 if (mphase) {
25966                         cal_cnt = pi->mphase_txcal_cmdidx;
25967                         if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
25968                                 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
25969                         else
25970                                 num_cals = max_cal_cmds;
25971                 } else {
25972                         cal_cnt = 0;
25973                         num_cals = max_cal_cmds;
25974                 }
25975
25976                 for (; cal_cnt < num_cals; cal_cnt++) {
25977
25978                         if (fullcal) {
25979                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25980                                           tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
25981                                           [cal_cnt] :
25982                                           tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
25983                         } else {
25984                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25985                                           tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
25986                                         cal_cnt]
25987                                           : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
25988                         }
25989
25990                         core_no = ((cal_cmd & 0x3000) >> 12);
25991                         cal_type = ((cal_cmd & 0x0F00) >> 8);
25992
25993                         if (NREV_GE(pi->pubpi.phy_rev, 6) ||
25994                             (NREV_IS(pi->pubpi.phy_rev, 5) &&
25995                              PHY_IPA(pi)
25996                              && (CHSPEC_IS2G(pi->radio_chanspec)))) {
25997                                 if (!ladder_updated[core_no]) {
25998                                         wlc_phy_update_txcal_ladder_nphy(
25999                                                 pi,
26000                                                 core_no);
26001                                         ladder_updated[core_no] = true;
26002                                 }
26003                         }
26004
26005                         val =
26006                                 (cal_params[core_no].
26007                                  ncorr[cal_type] << 8) | NPHY_N_GCTL;
26008                         write_phy_reg(pi, 0xc1, val);
26009
26010                         if ((cal_type == 1) || (cal_type == 3)
26011                             || (cal_type == 4)) {
26012
26013                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26014                                                         1, 69 + core_no, 16,
26015                                                         tbl_buf);
26016
26017                                 diq_start = tbl_buf[0];
26018
26019                                 tbl_buf[0] = 0;
26020                                 wlc_phy_table_write_nphy(pi,
26021                                                          NPHY_TBL_ID_IQLOCAL, 1,
26022                                                          69 + core_no, 16,
26023                                                          tbl_buf);
26024                         }
26025
26026                         write_phy_reg(pi, 0xc0, cal_cmd);
26027
26028                         SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
26029                                  20000);
26030                         if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
26031                                  "HW error: txiq calib"))
26032                                 return -EIO;
26033
26034                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26035                                                 tbl_len, 96, 16, tbl_buf);
26036                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26037                                                  tbl_len, 64, 16, tbl_buf);
26038
26039                         if ((cal_type == 1) || (cal_type == 3)
26040                             || (cal_type == 4)) {
26041
26042                                 tbl_buf[0] = diq_start;
26043
26044                         }
26045
26046                 }
26047
26048                 if (mphase) {
26049                         pi->mphase_txcal_cmdidx = num_cals;
26050                         if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
26051                                 pi->mphase_txcal_cmdidx = 0;
26052                 }
26053
26054                 mphase_cal_lastphase =
26055                         (NREV_LE(pi->pubpi.phy_rev, 2)) ?
26056                         MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
26057
26058                 if (!mphase
26059                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
26060
26061                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
26062                                                 16, tbl_buf);
26063                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26064                                                  16, tbl_buf);
26065
26066                         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26067
26068                                 tbl_buf[0] = 0;
26069                                 tbl_buf[1] = 0;
26070                                 tbl_buf[2] = 0;
26071                                 tbl_buf[3] = 0;
26072
26073                         }
26074                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26075                                                  16, tbl_buf);
26076
26077                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
26078                                                 16, tbl_buf);
26079                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26080                                                  16, tbl_buf);
26081
26082                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26083                                                  16, tbl_buf);
26084
26085                         tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26086                         if (NREV_LT(pi->pubpi.phy_rev, 3))
26087                                 tbl_len -= 2;
26088
26089                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26090                                                 tbl_len, 96, 16,
26091                                                 pi->nphy_txiqlocal_bestc);
26092
26093                         pi->nphy_txiqlocal_coeffsvalid = true;
26094                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
26095                 } else {
26096                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26097                         if (NREV_LT(pi->pubpi.phy_rev, 3))
26098                                 tbl_len -= 2;
26099
26100                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26101                                                 tbl_len, 96, 16,
26102                                                 pi->mphase_txcal_bestcoeffs);
26103                 }
26104
26105                 wlc_phy_stopplayback_nphy(pi);
26106
26107                 write_phy_reg(pi, 0xc2, 0x0000);
26108
26109         }
26110
26111         wlc_phy_txcal_phycleanup_nphy(pi);
26112
26113         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26114                                  gain_save);
26115
26116         wlc_phy_txcal_radio_cleanup_nphy(pi);
26117
26118         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26119                 if (!mphase
26120                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26121                         wlc_phy_tx_iq_war_nphy(pi);
26122         }
26123
26124         if (NREV_GE(pi->pubpi.phy_rev, 4))
26125                 pi->phyhang_avoid = phyhang_avoid_state;
26126
26127         wlc_phy_stay_in_carriersearch_nphy(pi, false);
26128
26129         return bcmerror;
26130 }
26131
26132 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26133 {
26134         u16 tbl_buf[7];
26135
26136         if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26137             (pi->nphy_txiqlocal_coeffsvalid)) {
26138                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26139                                         ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26140
26141                 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26142                     (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26143                     (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26144                     (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26145
26146                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26147                                                  16, pi->nphy_txiqlocal_bestc);
26148
26149                         tbl_buf[0] = 0;
26150                         tbl_buf[1] = 0;
26151                         tbl_buf[2] = 0;
26152                         tbl_buf[3] = 0;
26153                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26154                                                  16, tbl_buf);
26155
26156                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26157                                                  16,
26158                                                  &pi->nphy_txiqlocal_bestc[5]);
26159
26160                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26161                                                  16,
26162                                                  &pi->nphy_txiqlocal_bestc[5]);
26163                 }
26164         }
26165 }
26166
26167 void
26168 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26169                           struct nphy_iq_comp *pcomp)
26170 {
26171         if (write) {
26172                 write_phy_reg(pi, 0x9a, pcomp->a0);
26173                 write_phy_reg(pi, 0x9b, pcomp->b0);
26174                 write_phy_reg(pi, 0x9c, pcomp->a1);
26175                 write_phy_reg(pi, 0x9d, pcomp->b1);
26176         } else {
26177                 pcomp->a0 = read_phy_reg(pi, 0x9a);
26178                 pcomp->b0 = read_phy_reg(pi, 0x9b);
26179                 pcomp->a1 = read_phy_reg(pi, 0x9c);
26180                 pcomp->b1 = read_phy_reg(pi, 0x9d);
26181         }
26182 }
26183
26184 void
26185 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26186                        u16 num_samps, u8 wait_time, u8 wait_for_crs)
26187 {
26188         u8 core;
26189
26190         write_phy_reg(pi, 0x12b, num_samps);
26191         mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26192         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26193                     (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26194
26195         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26196
26197         SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26198                  10000);
26199         if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26200                  "HW error: rxiq est"))
26201                 return;
26202
26203         if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26204                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26205                         est[core].i_pwr =
26206                                 (read_phy_reg(pi,
26207                                               NPHY_IqestipwrAccHi(core)) << 16)
26208                                 | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26209                         est[core].q_pwr =
26210                                 (read_phy_reg(pi,
26211                                               NPHY_IqestqpwrAccHi(core)) << 16)
26212                                 | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26213                         est[core].iq_prod =
26214                                 (read_phy_reg(pi,
26215                                               NPHY_IqestIqAccHi(core)) << 16) |
26216                                 read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26217                 }
26218         }
26219 }
26220
26221 #define CAL_RETRY_CNT 2
26222 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26223 {
26224         u8 curr_core;
26225         struct phy_iq_est est[PHY_CORE_MAX];
26226         struct nphy_iq_comp old_comp, new_comp;
26227         s32 iq = 0;
26228         u32 ii = 0, qq = 0;
26229         s16 iq_nbits, qq_nbits, brsh, arsh;
26230         s32 a, b, temp;
26231         int bcmerror = 0;
26232         uint cal_retry = 0;
26233
26234         if (core_mask == 0x0)
26235                 return;
26236
26237         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26238         new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26239         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26240
26241 cal_try:
26242         wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26243
26244         new_comp = old_comp;
26245
26246         for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26247
26248                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26249                         iq = est[curr_core].iq_prod;
26250                         ii = est[curr_core].i_pwr;
26251                         qq = est[curr_core].q_pwr;
26252                 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26253                         iq = est[curr_core].iq_prod;
26254                         ii = est[curr_core].i_pwr;
26255                         qq = est[curr_core].q_pwr;
26256                 } else {
26257                         continue;
26258                 }
26259
26260                 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26261                         bcmerror = -EBADE;
26262                         break;
26263                 }
26264
26265                 iq_nbits = wlc_phy_nbits(iq);
26266                 qq_nbits = wlc_phy_nbits(qq);
26267
26268                 arsh = 10 - (30 - iq_nbits);
26269                 if (arsh >= 0) {
26270                         a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26271                         temp = (s32) (ii >> arsh);
26272                         if (temp == 0) {
26273                                 bcmerror = -EBADE;
26274                                 break;
26275                         }
26276                 } else {
26277                         a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26278                         temp = (s32) (ii << -arsh);
26279                         if (temp == 0) {
26280                                 bcmerror = -EBADE;
26281                                 break;
26282                         }
26283                 }
26284
26285                 a /= temp;
26286
26287                 brsh = qq_nbits - 31 + 20;
26288                 if (brsh >= 0) {
26289                         b = (qq << (31 - qq_nbits));
26290                         temp = (s32) (ii >> brsh);
26291                         if (temp == 0) {
26292                                 bcmerror = -EBADE;
26293                                 break;
26294                         }
26295                 } else {
26296                         b = (qq << (31 - qq_nbits));
26297                         temp = (s32) (ii << -brsh);
26298                         if (temp == 0) {
26299                                 bcmerror = -EBADE;
26300                                 break;
26301                         }
26302                 }
26303                 b /= temp;
26304                 b -= a * a;
26305                 b = (s32) int_sqrt((unsigned long) b);
26306                 b -= (1 << 10);
26307
26308                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26309                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26310                                 new_comp.a0 = (s16) a & 0x3ff;
26311                                 new_comp.b0 = (s16) b & 0x3ff;
26312                         } else {
26313
26314                                 new_comp.a0 = (s16) b & 0x3ff;
26315                                 new_comp.b0 = (s16) a & 0x3ff;
26316                         }
26317                 }
26318                 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26319                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26320                                 new_comp.a1 = (s16) a & 0x3ff;
26321                                 new_comp.b1 = (s16) b & 0x3ff;
26322                         } else {
26323
26324                                 new_comp.a1 = (s16) b & 0x3ff;
26325                                 new_comp.b1 = (s16) a & 0x3ff;
26326                         }
26327                 }
26328         }
26329
26330         if (bcmerror != 0) {
26331                 pr_debug("%s: Failed, cnt = %d\n", __func__, cal_retry);
26332
26333                 if (cal_retry < CAL_RETRY_CNT) {
26334                         cal_retry++;
26335                         goto cal_try;
26336                 }
26337
26338                 new_comp = old_comp;
26339         }
26340
26341         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26342 }
26343
26344 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26345 {
26346         u16 offtune_val;
26347         u16 bias_g = 0;
26348         u16 bias_a = 0;
26349
26350         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26351                 if (rx_core == PHY_CORE_0) {
26352                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26353                                 pi->tx_rx_cal_radio_saveregs[0] =
26354                                         read_radio_reg(pi,
26355                                             RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26356                                 pi->tx_rx_cal_radio_saveregs[1] =
26357                                         read_radio_reg(pi,
26358                                             RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26359
26360                                 write_radio_reg(pi,
26361                                         RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26362                                         0x3);
26363                                 write_radio_reg(pi,
26364                                         RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26365                                         0xaf);
26366
26367                         } else {
26368                                 pi->tx_rx_cal_radio_saveregs[0] =
26369                                         read_radio_reg(pi,
26370                                             RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26371                                 pi->tx_rx_cal_radio_saveregs[1] =
26372                                         read_radio_reg(pi,
26373                                             RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26374
26375                                 write_radio_reg(
26376                                         pi,
26377                                         RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26378                                         0x3);
26379                                 write_radio_reg(
26380                                         pi,
26381                                         RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26382                                         0x7f);
26383                         }
26384
26385                 } else {
26386                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26387                                 pi->tx_rx_cal_radio_saveregs[0] =
26388                                         read_radio_reg(pi,
26389                                             RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26390                                 pi->tx_rx_cal_radio_saveregs[1] =
26391                                         read_radio_reg(pi,
26392                                             RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26393
26394                                 write_radio_reg(
26395                                         pi,
26396                                         RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26397                                         0x3);
26398                                 write_radio_reg(
26399                                         pi,
26400                                         RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26401                                         0xaf);
26402
26403                         } else {
26404                                 pi->tx_rx_cal_radio_saveregs[0] =
26405                                         read_radio_reg(pi,
26406                                             RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26407                                 pi->tx_rx_cal_radio_saveregs[1] =
26408                                         read_radio_reg(pi,
26409                                             RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26410
26411                                 write_radio_reg(pi,
26412                                         RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26413                                         0x3);
26414                                 write_radio_reg(pi,
26415                                         RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26416                                         0x7f);
26417                         }
26418                 }
26419
26420         } else {
26421                 if (rx_core == PHY_CORE_0) {
26422                         pi->tx_rx_cal_radio_saveregs[0] =
26423                                 read_radio_reg(pi,
26424                                                RADIO_2056_TX_RXIQCAL_TXMUX |
26425                                                RADIO_2056_TX1);
26426                         pi->tx_rx_cal_radio_saveregs[1] =
26427                                 read_radio_reg(pi,
26428                                                RADIO_2056_RX_RXIQCAL_RXMUX |
26429                                                RADIO_2056_RX0);
26430
26431                         if (pi->pubpi.radiorev >= 5) {
26432                                 pi->tx_rx_cal_radio_saveregs[2] =
26433                                         read_radio_reg(pi,
26434                                                        RADIO_2056_RX_RXSPARE2 |
26435                                                        RADIO_2056_RX0);
26436                                 pi->tx_rx_cal_radio_saveregs[3] =
26437                                         read_radio_reg(pi,
26438                                                        RADIO_2056_TX_TXSPARE2 |
26439                                                        RADIO_2056_TX1);
26440                         }
26441
26442                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26443
26444                                 if (pi->pubpi.radiorev >= 5) {
26445                                         pi->tx_rx_cal_radio_saveregs[4] =
26446                                                 read_radio_reg(pi,
26447                                                       RADIO_2056_RX_LNAA_MASTER
26448                                                       | RADIO_2056_RX0);
26449
26450                                         write_radio_reg(
26451                                                 pi,
26452                                                 RADIO_2056_RX_LNAA_MASTER
26453                                                 | RADIO_2056_RX0, 0x40);
26454
26455                                         write_radio_reg(pi,
26456                                                 RADIO_2056_TX_TXSPARE2 |
26457                                                 RADIO_2056_TX1, bias_a);
26458
26459                                         write_radio_reg(pi,
26460                                                 RADIO_2056_RX_RXSPARE2 |
26461                                                 RADIO_2056_RX0, bias_a);
26462                                 } else {
26463                                         pi->tx_rx_cal_radio_saveregs[4] =
26464                                                 read_radio_reg(pi,
26465                                                         RADIO_2056_RX_LNAA_TUNE
26466                                                         | RADIO_2056_RX0);
26467
26468                                         offtune_val =
26469                                                 (pi->tx_rx_cal_radio_saveregs
26470                                                  [2] & 0xF0) >> 8;
26471                                         offtune_val =
26472                                                 (offtune_val <= 0x7) ? 0xF : 0;
26473
26474                                         mod_radio_reg(pi,
26475                                                       RADIO_2056_RX_LNAA_TUNE |
26476                                                       RADIO_2056_RX0, 0xF0,
26477                                                       (offtune_val << 8));
26478                                 }
26479
26480                                 write_radio_reg(pi,
26481                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26482                                                 RADIO_2056_TX1, 0x9);
26483                                 write_radio_reg(pi,
26484                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26485                                                 RADIO_2056_RX0, 0x9);
26486                         } else {
26487                                 if (pi->pubpi.radiorev >= 5) {
26488                                         pi->tx_rx_cal_radio_saveregs[4] =
26489                                                 read_radio_reg(
26490                                                       pi,
26491                                                       RADIO_2056_RX_LNAG_MASTER
26492                                                     | RADIO_2056_RX0);
26493
26494                                         write_radio_reg(
26495                                                 pi,
26496                                                 RADIO_2056_RX_LNAG_MASTER
26497                                                 | RADIO_2056_RX0, 0x40);
26498
26499                                         write_radio_reg(
26500                                                 pi,
26501                                                 RADIO_2056_TX_TXSPARE2
26502                                                 |
26503                                                 RADIO_2056_TX1, bias_g);
26504
26505                                         write_radio_reg(
26506                                                 pi,
26507                                                 RADIO_2056_RX_RXSPARE2
26508                                                 |
26509                                                 RADIO_2056_RX0, bias_g);
26510
26511                                 } else {
26512                                         pi->tx_rx_cal_radio_saveregs[4] =
26513                                                 read_radio_reg(
26514                                                         pi,
26515                                                         RADIO_2056_RX_LNAG_TUNE
26516                                                         | RADIO_2056_RX0);
26517
26518                                         offtune_val =
26519                                                 (pi->
26520                                                  tx_rx_cal_radio_saveregs[2] &
26521                                                  0xF0) >> 8;
26522                                         offtune_val =
26523                                                 (offtune_val <= 0x7) ? 0xF : 0;
26524
26525                                         mod_radio_reg(pi,
26526                                                       RADIO_2056_RX_LNAG_TUNE |
26527                                                       RADIO_2056_RX0, 0xF0,
26528                                                       (offtune_val << 8));
26529                                 }
26530
26531                                 write_radio_reg(pi,
26532                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26533                                                 RADIO_2056_TX1, 0x6);
26534                                 write_radio_reg(pi,
26535                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26536                                                 RADIO_2056_RX0, 0x6);
26537                         }
26538
26539                 } else {
26540                         pi->tx_rx_cal_radio_saveregs[0] =
26541                                 read_radio_reg(pi,
26542                                                RADIO_2056_TX_RXIQCAL_TXMUX |
26543                                                RADIO_2056_TX0);
26544                         pi->tx_rx_cal_radio_saveregs[1] =
26545                                 read_radio_reg(pi,
26546                                                RADIO_2056_RX_RXIQCAL_RXMUX |
26547                                                RADIO_2056_RX1);
26548
26549                         if (pi->pubpi.radiorev >= 5) {
26550                                 pi->tx_rx_cal_radio_saveregs[2] =
26551                                         read_radio_reg(pi,
26552                                                        RADIO_2056_RX_RXSPARE2 |
26553                                                        RADIO_2056_RX1);
26554                                 pi->tx_rx_cal_radio_saveregs[3] =
26555                                         read_radio_reg(pi,
26556                                                        RADIO_2056_TX_TXSPARE2 |
26557                                                        RADIO_2056_TX0);
26558                         }
26559
26560                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26561
26562                                 if (pi->pubpi.radiorev >= 5) {
26563                                         pi->tx_rx_cal_radio_saveregs[4] =
26564                                                 read_radio_reg(
26565                                                        pi,
26566                                                        RADIO_2056_RX_LNAA_MASTER
26567                                                        | RADIO_2056_RX1);
26568
26569                                         write_radio_reg(
26570                                                 pi,
26571                                                 RADIO_2056_RX_LNAA_MASTER |
26572                                                 RADIO_2056_RX1, 0x40);
26573
26574                                         write_radio_reg(
26575                                                 pi,
26576                                                 RADIO_2056_TX_TXSPARE2
26577                                                 |
26578                                                 RADIO_2056_TX0, bias_a);
26579
26580                                         write_radio_reg(
26581                                                 pi,
26582                                                 RADIO_2056_RX_RXSPARE2
26583                                                 |
26584                                                 RADIO_2056_RX1, bias_a);
26585                                 } else {
26586                                         pi->tx_rx_cal_radio_saveregs[4] =
26587                                                 read_radio_reg(
26588                                                         pi,
26589                                                         RADIO_2056_RX_LNAA_TUNE
26590                                                         | RADIO_2056_RX1);
26591
26592                                         offtune_val =
26593                                                 (pi->
26594                                                  tx_rx_cal_radio_saveregs[2] &
26595                                                  0xF0) >> 8;
26596                                         offtune_val =
26597                                                 (offtune_val <= 0x7) ? 0xF : 0;
26598
26599                                         mod_radio_reg(pi,
26600                                                       RADIO_2056_RX_LNAA_TUNE |
26601                                                       RADIO_2056_RX1, 0xF0,
26602                                                       (offtune_val << 8));
26603                                 }
26604
26605                                 write_radio_reg(pi,
26606                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26607                                                 RADIO_2056_TX0, 0x9);
26608                                 write_radio_reg(pi,
26609                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26610                                                 RADIO_2056_RX1, 0x9);
26611                         } else {
26612                                 if (pi->pubpi.radiorev >= 5) {
26613                                         pi->tx_rx_cal_radio_saveregs[4] =
26614                                                 read_radio_reg(
26615                                                       pi,
26616                                                       RADIO_2056_RX_LNAG_MASTER
26617                                                     | RADIO_2056_RX1);
26618
26619                                         write_radio_reg(
26620                                                 pi,
26621                                                 RADIO_2056_RX_LNAG_MASTER
26622                                                 | RADIO_2056_RX1, 0x40);
26623
26624                                         write_radio_reg(
26625                                                 pi,
26626                                                 RADIO_2056_TX_TXSPARE2
26627                                                 |
26628                                                 RADIO_2056_TX0, bias_g);
26629
26630                                         write_radio_reg(
26631                                                 pi,
26632                                                 RADIO_2056_RX_RXSPARE2
26633                                                 |
26634                                                 RADIO_2056_RX1, bias_g);
26635                                 } else {
26636                                         pi->tx_rx_cal_radio_saveregs[4] =
26637                                                 read_radio_reg(
26638                                                         pi,
26639                                                         RADIO_2056_RX_LNAG_TUNE
26640                                                         | RADIO_2056_RX1);
26641
26642                                         offtune_val =
26643                                                 (pi->
26644                                                  tx_rx_cal_radio_saveregs[2] &
26645                                                  0xF0) >> 8;
26646                                         offtune_val =
26647                                                 (offtune_val <= 0x7) ? 0xF : 0;
26648
26649                                         mod_radio_reg(pi,
26650                                                       RADIO_2056_RX_LNAG_TUNE |
26651                                                       RADIO_2056_RX1, 0xF0,
26652                                                       (offtune_val << 8));
26653                                 }
26654
26655                                 write_radio_reg(pi,
26656                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26657                                                 RADIO_2056_TX0, 0x6);
26658                                 write_radio_reg(pi,
26659                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26660                                                 RADIO_2056_RX1, 0x6);
26661                         }
26662                 }
26663         }
26664 }
26665
26666 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26667 {
26668         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26669                 if (rx_core == PHY_CORE_0) {
26670                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26671                                 write_radio_reg(
26672                                         pi,
26673                                         RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26674                                         pi->
26675                                         tx_rx_cal_radio_saveregs[0]);
26676                                 write_radio_reg(
26677                                         pi,
26678                                         RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26679                                         pi->
26680                                         tx_rx_cal_radio_saveregs[1]);
26681
26682                         } else {
26683                                 write_radio_reg(
26684                                         pi,
26685                                         RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26686                                         pi->
26687                                         tx_rx_cal_radio_saveregs[0]);
26688                                 write_radio_reg(
26689                                         pi,
26690                                         RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26691                                         pi->
26692                                         tx_rx_cal_radio_saveregs[1]);
26693                         }
26694
26695                 } else {
26696                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26697                                 write_radio_reg(
26698                                         pi,
26699                                         RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26700                                         pi->
26701                                         tx_rx_cal_radio_saveregs[0]);
26702                                 write_radio_reg(
26703                                         pi,
26704                                         RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26705                                         pi->
26706                                         tx_rx_cal_radio_saveregs[1]);
26707
26708                         } else {
26709                                 write_radio_reg(
26710                                         pi,
26711                                         RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26712                                         pi->
26713                                         tx_rx_cal_radio_saveregs[0]);
26714                                 write_radio_reg(
26715                                         pi,
26716                                         RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26717                                         pi->
26718                                         tx_rx_cal_radio_saveregs[1]);
26719                         }
26720                 }
26721
26722         } else {
26723                 if (rx_core == PHY_CORE_0) {
26724                         write_radio_reg(pi,
26725                                         RADIO_2056_TX_RXIQCAL_TXMUX |
26726                                         RADIO_2056_TX1,
26727                                         pi->tx_rx_cal_radio_saveregs[0]);
26728
26729                         write_radio_reg(pi,
26730                                         RADIO_2056_RX_RXIQCAL_RXMUX |
26731                                         RADIO_2056_RX0,
26732                                         pi->tx_rx_cal_radio_saveregs[1]);
26733
26734                         if (pi->pubpi.radiorev >= 5) {
26735                                 write_radio_reg(pi,
26736                                                 RADIO_2056_RX_RXSPARE2 |
26737                                                 RADIO_2056_RX0,
26738                                                 pi->
26739                                                 tx_rx_cal_radio_saveregs[2]);
26740
26741                                 write_radio_reg(pi,
26742                                                 RADIO_2056_TX_TXSPARE2 |
26743                                                 RADIO_2056_TX1,
26744                                                 pi->
26745                                                 tx_rx_cal_radio_saveregs[3]);
26746                         }
26747
26748                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26749                                 if (pi->pubpi.radiorev >= 5)
26750                                         write_radio_reg(
26751                                                 pi,
26752                                                 RADIO_2056_RX_LNAA_MASTER
26753                                                 | RADIO_2056_RX0,
26754                                                 pi->
26755                                                 tx_rx_cal_radio_saveregs
26756                                                 [4]);
26757                                 else
26758                                         write_radio_reg(
26759                                                 pi,
26760                                                 RADIO_2056_RX_LNAA_TUNE
26761                                                 | RADIO_2056_RX0,
26762                                                 pi->
26763                                                 tx_rx_cal_radio_saveregs
26764                                                 [4]);
26765                         } else {
26766                                 if (pi->pubpi.radiorev >= 5)
26767                                         write_radio_reg(
26768                                                 pi,
26769                                                 RADIO_2056_RX_LNAG_MASTER
26770                                                 | RADIO_2056_RX0,
26771                                                 pi->
26772                                                 tx_rx_cal_radio_saveregs
26773                                                 [4]);
26774                                 else
26775                                         write_radio_reg(
26776                                                 pi,
26777                                                 RADIO_2056_RX_LNAG_TUNE
26778                                                 | RADIO_2056_RX0,
26779                                                 pi->
26780                                                 tx_rx_cal_radio_saveregs
26781                                                 [4]);
26782                         }
26783
26784                 } else {
26785                         write_radio_reg(pi,
26786                                         RADIO_2056_TX_RXIQCAL_TXMUX |
26787                                         RADIO_2056_TX0,
26788                                         pi->tx_rx_cal_radio_saveregs[0]);
26789
26790                         write_radio_reg(pi,
26791                                         RADIO_2056_RX_RXIQCAL_RXMUX |
26792                                         RADIO_2056_RX1,
26793                                         pi->tx_rx_cal_radio_saveregs[1]);
26794
26795                         if (pi->pubpi.radiorev >= 5) {
26796                                 write_radio_reg(pi,
26797                                                 RADIO_2056_RX_RXSPARE2 |
26798                                                 RADIO_2056_RX1,
26799                                                 pi->
26800                                                 tx_rx_cal_radio_saveregs[2]);
26801
26802                                 write_radio_reg(pi,
26803                                                 RADIO_2056_TX_TXSPARE2 |
26804                                                 RADIO_2056_TX0,
26805                                                 pi->
26806                                                 tx_rx_cal_radio_saveregs[3]);
26807                         }
26808
26809                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26810                                 if (pi->pubpi.radiorev >= 5)
26811                                         write_radio_reg(
26812                                                 pi,
26813                                                 RADIO_2056_RX_LNAA_MASTER
26814                                                 | RADIO_2056_RX1,
26815                                                 pi->
26816                                                 tx_rx_cal_radio_saveregs
26817                                                 [4]);
26818                                 else
26819                                         write_radio_reg(
26820                                                 pi,
26821                                                 RADIO_2056_RX_LNAA_TUNE
26822                                                 | RADIO_2056_RX1,
26823                                                 pi->
26824                                                 tx_rx_cal_radio_saveregs
26825                                                 [4]);
26826                         } else {
26827                                 if (pi->pubpi.radiorev >= 5)
26828                                         write_radio_reg(
26829                                                 pi,
26830                                                 RADIO_2056_RX_LNAG_MASTER
26831                                                 | RADIO_2056_RX1,
26832                                                 pi->
26833                                                 tx_rx_cal_radio_saveregs
26834                                                 [4]);
26835                                 else
26836                                         write_radio_reg(
26837                                                 pi,
26838                                                 RADIO_2056_RX_LNAG_TUNE
26839                                                 | RADIO_2056_RX1,
26840                                                 pi->
26841                                                 tx_rx_cal_radio_saveregs
26842                                                 [4]);
26843                         }
26844                 }
26845         }
26846 }
26847
26848 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26849 {
26850         u8 tx_core;
26851         u16 rx_antval, tx_antval;
26852
26853         if (NREV_GE(pi->pubpi.phy_rev, 7))
26854                 tx_core = rx_core;
26855         else
26856                 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26857
26858         pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26859         pi->tx_rx_cal_phy_saveregs[1] =
26860                 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26861         pi->tx_rx_cal_phy_saveregs[2] =
26862                 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26863         pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26864         pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26865         pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26866         pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26867         pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26868         pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26869         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26870                 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26871                 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26872                 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26873                 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26874         }
26875
26876         pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26877         pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26878         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26879                     0x29b, (0x1 << 0), (0) << 0);
26880
26881         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26882                     0x29b, (0x1 << 0), (0) << 0);
26883
26884         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26885
26886                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26887
26888                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26889
26890         } else {
26891
26892                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26893                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26894                 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26895                 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26896         }
26897
26898         mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26899         mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26900                     (0x1 << 2), (0x1 << 2));
26901         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26902                 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26903                             (0x1 << 0) | (0x1 << 1), 0);
26904                 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26905                             0x8f : 0xa5,
26906                             (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26907         }
26908
26909         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26910                                          RADIO_MIMO_CORESEL_CORE1 |
26911                                          RADIO_MIMO_CORESEL_CORE2);
26912
26913         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26914                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26915                                                   0, 0, 0,
26916                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26917                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
26918                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26919                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
26920                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26921                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
26922                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26923                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
26924                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26925                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
26926                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26927                 if (CHSPEC_IS40(pi->radio_chanspec))
26928                         wlc_phy_rfctrl_override_nphy_rev7(
26929                                 pi,
26930                                 (0x1 << 7),
26931                                 2, 0, 0,
26932                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26933                 else
26934                         wlc_phy_rfctrl_override_nphy_rev7(
26935                                 pi,
26936                                 (0x1 << 7),
26937                                 0, 0, 0,
26938                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26939
26940                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26941                                                   0, 0, 0,
26942                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26943                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
26944                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26945         } else {
26946                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
26947         }
26948
26949         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
26950
26951         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26952
26953                 wlc_phy_rfctrlintc_override_nphy(pi,
26954                                                  NPHY_RfctrlIntc_override_TRSW,
26955                                                  0x1, rx_core + 1);
26956         } else {
26957
26958                 if (rx_core == PHY_CORE_0) {
26959                         rx_antval = 0x1;
26960                         tx_antval = 0x8;
26961                 } else {
26962                         rx_antval = 0x4;
26963                         tx_antval = 0x2;
26964                 }
26965
26966                 wlc_phy_rfctrlintc_override_nphy(pi,
26967                                                  NPHY_RfctrlIntc_override_TRSW,
26968                                                  rx_antval, rx_core + 1);
26969                 wlc_phy_rfctrlintc_override_nphy(pi,
26970                                                  NPHY_RfctrlIntc_override_TRSW,
26971                                                  tx_antval, tx_core + 1);
26972         }
26973 }
26974
26975 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26976 {
26977
26978         write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
26979         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
26980                       pi->tx_rx_cal_phy_saveregs[1]);
26981         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26982                       pi->tx_rx_cal_phy_saveregs[2]);
26983         write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
26984         write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
26985
26986         write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
26987         write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
26988         write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
26989         write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
26990         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26991                 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
26992                 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
26993                 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
26994                 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
26995         }
26996
26997         write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
26998         write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
26999 }
27000
27001 static void
27002 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
27003                                  u16 *rxgain, u8 cal_type)
27004 {
27005
27006         u16 num_samps;
27007         struct phy_iq_est est[PHY_CORE_MAX];
27008         u8 tx_core;
27009         struct nphy_iq_comp save_comp, zero_comp;
27010         u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
27011             thresh_pwr = 10000;
27012         s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
27013         bool gainctrl_done = false;
27014         u8 mix_tia_gain = 3;
27015         s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
27016         s8 curr_gaintbl_index = 3;
27017         u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
27018         const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
27019         u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
27020         int fine_gain_idx;
27021         s8 txpwrindex;
27022         u16 nphy_rxcal_txgain[2];
27023
27024         if (NREV_GE(pi->pubpi.phy_rev, 7))
27025                 tx_core = rx_core;
27026         else
27027                 tx_core = 1 - rx_core;
27028
27029         num_samps = 1024;
27030         desired_log2_pwr = (cal_type == 0) ? 13 : 13;
27031
27032         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
27033         zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
27034         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
27035
27036         if (CHSPEC_IS5G(pi->radio_chanspec)) {
27037                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27038                         mix_tia_gain = 3;
27039                 else if (NREV_GE(pi->pubpi.phy_rev, 4))
27040                         mix_tia_gain = 4;
27041                 else
27042                         mix_tia_gain = 6;
27043                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27044                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
27045                 else
27046                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
27047         } else {
27048                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27049                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
27050                 else
27051                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
27052         }
27053
27054         do {
27055
27056                 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
27057                         0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
27058                 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
27059                 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
27060                 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
27061                 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
27062                 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
27063
27064                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27065                         wlc_phy_rfctrl_override_1tomany_nphy(
27066                                 pi,
27067                                 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27068                                 ((lpf_biq1 << 12) |
27069                                  (lpf_biq0 << 8) |
27070                                  (mix_tia_gain << 4) | (lna2 << 2)
27071                                  | lna1), 0x3, 0);
27072                 else
27073                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27074                                                      ((hpvga << 12) |
27075                                                       (lpf_biq1 << 10) |
27076                                                       (lpf_biq0 << 8) |
27077                                                       (mix_tia_gain << 4) |
27078                                                       (lna2 << 2) | lna1), 0x3,
27079                                                      0);
27080
27081                 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
27082
27083                 if (txpwrindex == -1) {
27084                         nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
27085                         nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
27086                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
27087                                                  2, 0x110, 16,
27088                                                  nphy_rxcal_txgain);
27089                 } else {
27090                         wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
27091                                                  false);
27092                 }
27093
27094                 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
27095                                      NPHY_RXCAL_TONEFREQ_40MHz :
27096                                      NPHY_RXCAL_TONEFREQ_20MHz,
27097                                      NPHY_RXCAL_TONEAMP, 0, cal_type, false);
27098
27099                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27100                 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
27101                 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
27102                 curr_pwr = i_pwr + q_pwr;
27103
27104                 switch (gainctrl_dirn) {
27105                 case NPHY_RXCAL_GAIN_INIT:
27106                         if (curr_pwr > thresh_pwr) {
27107                                 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27108                                 prev_gaintbl_index = curr_gaintbl_index;
27109                                 curr_gaintbl_index--;
27110                         } else {
27111                                 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27112                                 prev_gaintbl_index = curr_gaintbl_index;
27113                                 curr_gaintbl_index++;
27114                         }
27115                         break;
27116
27117                 case NPHY_RXCAL_GAIN_UP:
27118                         if (curr_pwr > thresh_pwr) {
27119                                 gainctrl_done = true;
27120                                 optim_pwr = prev_pwr;
27121                                 optim_gaintbl_index = prev_gaintbl_index;
27122                         } else {
27123                                 prev_gaintbl_index = curr_gaintbl_index;
27124                                 curr_gaintbl_index++;
27125                         }
27126                         break;
27127
27128                 case NPHY_RXCAL_GAIN_DOWN:
27129                         if (curr_pwr > thresh_pwr) {
27130                                 prev_gaintbl_index = curr_gaintbl_index;
27131                                 curr_gaintbl_index--;
27132                         } else {
27133                                 gainctrl_done = true;
27134                                 optim_pwr = curr_pwr;
27135                                 optim_gaintbl_index = curr_gaintbl_index;
27136                         }
27137                         break;
27138
27139                 default:
27140                         break;
27141                 }
27142
27143                 if ((curr_gaintbl_index < 0) ||
27144                     (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27145                         gainctrl_done = true;
27146                         optim_pwr = curr_pwr;
27147                         optim_gaintbl_index = prev_gaintbl_index;
27148                 } else {
27149                         prev_pwr = curr_pwr;
27150                 }
27151
27152                 wlc_phy_stopplayback_nphy(pi);
27153         } while (!gainctrl_done);
27154
27155         hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27156         lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27157         lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27158         lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27159         lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27160         txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27161
27162         actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27163         delta_pwr = desired_log2_pwr - actual_log2_pwr;
27164
27165         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27166                 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27167
27168                 if (fine_gain_idx + (int)lpf_biq0 > 10)
27169                         lpf_biq1 = 10 - lpf_biq0;
27170                 else
27171                         lpf_biq1 = (u16) max(fine_gain_idx, 0);
27172
27173                 wlc_phy_rfctrl_override_1tomany_nphy(
27174                         pi,
27175                         NPHY_REV7_RfctrlOverride_cmd_rxgain,
27176                         ((lpf_biq1 << 12) |
27177                          (lpf_biq0 << 8) |
27178                          (mix_tia_gain << 4) |
27179                          (lna2 << 2) | lna1), 0x3,
27180                         0);
27181         } else {
27182                 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27183                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27184                                              ((hpvga << 12) |
27185                                               (lpf_biq1 << 10) |
27186                                               (lpf_biq0 << 8) |
27187                                               (mix_tia_gain << 4) |
27188                                               (lna2 << 2) |
27189                                               lna1), 0x3, 0);
27190         }
27191
27192         if (rxgain != NULL) {
27193                 *rxgain++ = lna1;
27194                 *rxgain++ = lna2;
27195                 *rxgain++ = mix_tia_gain;
27196                 *rxgain++ = lpf_biq0;
27197                 *rxgain++ = lpf_biq1;
27198                 *rxgain = hpvga;
27199         }
27200
27201         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27202 }
27203
27204 static void
27205 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27206                             u8 cal_type)
27207 {
27208         wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27209 }
27210
27211 static u8
27212 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27213 {
27214         u32 target_bws[2] = { 9500, 21000 };
27215         u32 ref_tones[2] = { 3000, 6000 };
27216         u32 target_bw, ref_tone;
27217
27218         u32 target_pwr_ratios[2] = { 28606, 18468 };
27219         u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27220
27221         u16 start_rccal_ovr_val = 128;
27222         u16 txlpf_rccal_lpc_ovr_val = 128;
27223         u16 rxlpf_rccal_hpc_ovr_val = 159;
27224
27225         u16 orig_txlpf_rccal_lpc_ovr_val;
27226         u16 orig_rxlpf_rccal_hpc_ovr_val;
27227         u16 radio_addr_offset_rx;
27228         u16 radio_addr_offset_tx;
27229         u16 orig_dcBypass;
27230         u16 orig_RxStrnFilt40Num[6];
27231         u16 orig_RxStrnFilt40Den[4];
27232         u16 orig_rfctrloverride[2];
27233         u16 orig_rfctrlauxreg[2];
27234         u16 orig_rfctrlrssiothers;
27235         u16 tx_lpf_bw = 4;
27236
27237         u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27238         u16 lpf_hpc = 7, hpvga_hpc = 7;
27239
27240         s8 rccal_stepsize;
27241         u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27242         u32 ref_iq_vals = 0, target_iq_vals = 0;
27243         u16 num_samps, log_num_samps = 10;
27244         struct phy_iq_est est[PHY_CORE_MAX];
27245
27246         if (NREV_GE(pi->pubpi.phy_rev, 7))
27247                 return 0;
27248
27249         num_samps = (1 << log_num_samps);
27250
27251         if (CHSPEC_IS40(pi->radio_chanspec)) {
27252                 target_bw = target_bws[1];
27253                 target_pwr_ratio = target_pwr_ratios[1];
27254                 ref_tone = ref_tones[1];
27255                 rx_lpf_bw = rx_lpf_bws[1];
27256         } else {
27257                 target_bw = target_bws[0];
27258                 target_pwr_ratio = target_pwr_ratios[0];
27259                 ref_tone = ref_tones[0];
27260                 rx_lpf_bw = rx_lpf_bws[0];
27261         }
27262
27263         if (core_idx == 0) {
27264                 radio_addr_offset_rx = RADIO_2056_RX0;
27265                 radio_addr_offset_tx =
27266                         (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27267         } else {
27268                 radio_addr_offset_rx = RADIO_2056_RX1;
27269                 radio_addr_offset_tx =
27270                         (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27271         }
27272
27273         orig_txlpf_rccal_lpc_ovr_val =
27274                 read_radio_reg(pi,
27275                                (RADIO_2056_TX_TXLPF_RCCAL |
27276                                 radio_addr_offset_tx));
27277         orig_rxlpf_rccal_hpc_ovr_val =
27278                 read_radio_reg(pi,
27279                                (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27280                                 radio_addr_offset_rx));
27281
27282         orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27283
27284         orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27285         orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27286         orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27287         orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27288         orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27289         orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27290         orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27291         orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27292         orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27293         orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27294
27295         orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27296         orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27297         orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27298         orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27299         orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27300
27301         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27302                         txlpf_rccal_lpc_ovr_val);
27303
27304         write_radio_reg(pi,
27305                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27306                         rxlpf_rccal_hpc_ovr_val);
27307
27308         mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27309
27310         write_phy_reg(pi, 0x267, 0x02d4);
27311         write_phy_reg(pi, 0x268, 0x0000);
27312         write_phy_reg(pi, 0x269, 0x0000);
27313         write_phy_reg(pi, 0x26a, 0x0000);
27314         write_phy_reg(pi, 0x26b, 0x0000);
27315         write_phy_reg(pi, 0x26c, 0x02d4);
27316         write_phy_reg(pi, 0x26d, 0x0000);
27317         write_phy_reg(pi, 0x26e, 0x0000);
27318         write_phy_reg(pi, 0x26f, 0x0000);
27319         write_phy_reg(pi, 0x270, 0x0000);
27320
27321         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27322         or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27323         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27324         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27325
27326         mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27327                     (0x7 << 10), (tx_lpf_bw << 10));
27328         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27329                     (0x7 << 0), (hpvga_hpc << 0));
27330         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27331                     (0x7 << 4), (lpf_hpc << 4));
27332         mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27333                     (0x7 << 8), (rx_lpf_bw << 8));
27334
27335         rccal_stepsize = 16;
27336         rccal_val = start_rccal_ovr_val + rccal_stepsize;
27337
27338         while (rccal_stepsize >= 0) {
27339                 write_radio_reg(pi,
27340                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27341                                  radio_addr_offset_rx), rccal_val);
27342
27343                 if (rccal_stepsize == 16) {
27344
27345                         wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27346                                              0, 1, false);
27347                         udelay(2);
27348
27349                         wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27350
27351                         if (core_idx == 0)
27352                                 ref_iq_vals =
27353                                         max_t(u32, (est[0].i_pwr +
27354                                                     est[0].q_pwr) >>
27355                                               (log_num_samps + 1),
27356                                               1);
27357                         else
27358                                 ref_iq_vals =
27359                                         max_t(u32, (est[1].i_pwr +
27360                                                     est[1].q_pwr) >>
27361                                               (log_num_samps + 1),
27362                                               1);
27363
27364                         wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27365                                              0, 1, false);
27366                         udelay(2);
27367                 }
27368
27369                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27370
27371                 if (core_idx == 0)
27372                         target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27373                                          (log_num_samps + 1);
27374                 else
27375                         target_iq_vals =
27376                                 (est[1].i_pwr +
27377                                  est[1].q_pwr) >> (log_num_samps + 1);
27378
27379                 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27380
27381                 if (rccal_stepsize == 0)
27382                         rccal_stepsize--;
27383                 else if (rccal_stepsize == 1) {
27384                         last_rccal_val = rccal_val;
27385                         rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27386                         last_pwr_ratio = pwr_ratio;
27387                         rccal_stepsize--;
27388                 } else {
27389                         rccal_stepsize = (rccal_stepsize >> 1);
27390                         rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27391                                       rccal_stepsize : (-rccal_stepsize));
27392                 }
27393
27394                 if (rccal_stepsize == -1) {
27395                         best_rccal_val =
27396                                 (abs((int)last_pwr_ratio -
27397                                      (int)target_pwr_ratio) <
27398                                  abs((int)pwr_ratio -
27399                                      (int)target_pwr_ratio)) ? last_rccal_val :
27400                                 rccal_val;
27401
27402                         if (CHSPEC_IS40(pi->radio_chanspec)) {
27403                                 if ((best_rccal_val > 140)
27404                                     || (best_rccal_val < 135))
27405                                         best_rccal_val = 138;
27406                         } else {
27407                                 if ((best_rccal_val > 142)
27408                                     || (best_rccal_val < 137))
27409                                         best_rccal_val = 140;
27410                         }
27411
27412                         write_radio_reg(pi,
27413                                         (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27414                                          radio_addr_offset_rx), best_rccal_val);
27415                 }
27416         }
27417
27418         wlc_phy_stopplayback_nphy(pi);
27419
27420         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27421                         orig_txlpf_rccal_lpc_ovr_val);
27422         write_radio_reg(pi,
27423                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27424                         orig_rxlpf_rccal_hpc_ovr_val);
27425
27426         mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27427
27428         write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27429         write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27430         write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27431         write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27432         write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27433         write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27434         write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27435         write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27436         write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27437         write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27438
27439         write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27440         write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27441         write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27442         write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27443         write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27444
27445         pi->nphy_anarxlpf_adjusted = false;
27446
27447         return best_rccal_val - 0x80;
27448 }
27449
27450 #define WAIT_FOR_SCOPE  4000
27451 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27452                                       struct nphy_txgains target_gain,
27453                                       u8 cal_type, bool debug)
27454 {
27455         u16 orig_BBConfig;
27456         u8 core_no, rx_core;
27457         u8 best_rccal[2];
27458         u16 gain_save[2];
27459         u16 cal_gain[2];
27460         struct nphy_iqcal_params cal_params[2];
27461         u8 rxcore_state;
27462         s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27463         s8 txlpf_idac;
27464         bool phyhang_avoid_state = false;
27465         bool skip_rxiqcal = false;
27466
27467         orig_BBConfig = read_phy_reg(pi, 0x01);
27468         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27469
27470         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27471
27472         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27473                 phyhang_avoid_state = pi->phyhang_avoid;
27474                 pi->phyhang_avoid = false;
27475         }
27476
27477         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27478
27479         for (core_no = 0; core_no <= 1; core_no++) {
27480                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27481                                               &cal_params[core_no]);
27482                 cal_gain[core_no] = cal_params[core_no].cal_gain;
27483         }
27484
27485         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27486
27487         rxcore_state = wlc_phy_rxcore_getstate_nphy(
27488                 (struct brcms_phy_pub *) pi);
27489
27490         for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27491
27492                 skip_rxiqcal =
27493                         ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27494
27495                 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27496
27497                 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27498
27499                 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27500
27501                         wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27502
27503                         wlc_phy_tx_tone_nphy(pi,
27504                                              (CHSPEC_IS40(
27505                                                       pi->radio_chanspec)) ?
27506                                              NPHY_RXCAL_TONEFREQ_40MHz :
27507                                              NPHY_RXCAL_TONEFREQ_20MHz,
27508                                              NPHY_RXCAL_TONEAMP, 0, cal_type,
27509                                              false);
27510
27511                         if (debug)
27512                                 mdelay(WAIT_FOR_SCOPE);
27513
27514                         wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27515                         wlc_phy_stopplayback_nphy(pi);
27516                 }
27517
27518                 if (((cal_type == 1) || (cal_type == 2))
27519                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
27520
27521                         if (rx_core == PHY_CORE_1) {
27522
27523                                 if (rxcore_state == 1)
27524                                         wlc_phy_rxcore_setstate_nphy(
27525                                                 (struct brcms_phy_pub *) pi, 3);
27526
27527                                 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27528                                                             1);
27529
27530                                 best_rccal[rx_core] =
27531                                         wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27532                                 pi->nphy_rccal_value = best_rccal[rx_core];
27533
27534                                 if (rxcore_state == 1)
27535                                         wlc_phy_rxcore_setstate_nphy(
27536                                                 (struct brcms_phy_pub *) pi,
27537                                                 rxcore_state);
27538                         }
27539                 }
27540
27541                 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27542
27543                 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27544                 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27545         }
27546
27547         if ((cal_type == 1) || (cal_type == 2)) {
27548
27549                 best_rccal[0] = best_rccal[1];
27550                 write_radio_reg(pi,
27551                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27552                                  RADIO_2056_RX0), (best_rccal[0] | 0x80));
27553
27554                 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27555                         rxlpf_rccal_hpc =
27556                                 (((int)best_rccal[rx_core] - 12) >> 1) + 10;
27557                         txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27558
27559                         if (PHY_IPA(pi)) {
27560                                 txlpf_rccal_lpc +=
27561                                         (pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27562                                 txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27563                                              0x0e : 0x13;
27564                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27565                                                  TXLPF_IDAC_4, txlpf_idac);
27566                         }
27567
27568                         rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27569                                               0);
27570                         txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27571                                               0);
27572
27573                         write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27574                                              ((rx_core ==
27575                                                PHY_CORE_0) ? RADIO_2056_RX0 :
27576                                               RADIO_2056_RX1)),
27577                                         (rxlpf_rccal_hpc | 0x80));
27578
27579                         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27580                                              ((rx_core ==
27581                                                PHY_CORE_0) ? RADIO_2056_TX0 :
27582                                               RADIO_2056_TX1)),
27583                                         (txlpf_rccal_lpc | 0x80));
27584                 }
27585         }
27586
27587         write_phy_reg(pi, 0x01, orig_BBConfig);
27588
27589         wlc_phy_resetcca_nphy(pi);
27590
27591         if (NREV_GE(pi->pubpi.phy_rev, 7))
27592                 wlc_phy_rfctrl_override_1tomany_nphy(
27593                         pi,
27594                         NPHY_REV7_RfctrlOverride_cmd_rxgain,
27595                         0, 0x3, 1);
27596         else
27597                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27598
27599         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27600
27601         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27602                                  gain_save);
27603
27604         if (NREV_GE(pi->pubpi.phy_rev, 4))
27605                 pi->phyhang_avoid = phyhang_avoid_state;
27606
27607         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27608
27609         return 0;
27610 }
27611
27612 static int
27613 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27614                            struct nphy_txgains target_gain, bool debug)
27615 {
27616         struct phy_iq_est est[PHY_CORE_MAX];
27617         u8 core_num, rx_core, tx_core;
27618         u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27619         u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27620         u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27621         s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27622         s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27623         u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27624         u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27625         u16 num_samps;
27626         u32 i_pwr, q_pwr, tot_pwr[3];
27627         u8 gain_pass, use_hpf_num;
27628         u16 mask, val1, val2;
27629         u16 core_no;
27630         u16 gain_save[2];
27631         u16 cal_gain[2];
27632         struct nphy_iqcal_params cal_params[2];
27633         u8 phy_bw;
27634         int bcmerror = 0;
27635         bool first_playtone = true;
27636
27637         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27638
27639         if (NREV_LT(pi->pubpi.phy_rev, 2))
27640                 wlc_phy_reapply_txcal_coeffs_nphy(pi);
27641
27642         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27643
27644         for (core_no = 0; core_no <= 1; core_no++) {
27645                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27646                                               &cal_params[core_no]);
27647                 cal_gain[core_no] = cal_params[core_no].cal_gain;
27648         }
27649
27650         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27651
27652         num_samps = 1024;
27653         desired_log2_pwr = 13;
27654
27655         for (core_num = 0; core_num < 2; core_num++) {
27656
27657                 rx_core = core_num;
27658                 tx_core = 1 - core_num;
27659
27660                 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27661                 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27662                                                 0xa6 : 0xa7);
27663                 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27664                 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27665                                                  0x91 : 0x92);
27666                 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27667                                                  0x91 : 0x92);
27668
27669                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27670                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27671
27672                 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27673                            ((0x1 << 1) | (0x1 << 2)));
27674                 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27675
27676                 if (((pi->nphy_rxcalparams) & 0xff000000))
27677                         write_phy_reg(pi,
27678                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27679                                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27680                                         0x140 : 0x110));
27681                 else
27682                         write_phy_reg(pi,
27683                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27684                                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27685                                        0x180 : 0x120));
27686
27687                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27688                               (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27689                                0x114));
27690
27691                 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27692                 if (rx_core == PHY_CORE_0) {
27693                         val1 = RADIO_2055_COUPLE_RX_MASK;
27694                         val2 = RADIO_2055_COUPLE_TX_MASK;
27695                 } else {
27696                         val1 = RADIO_2055_COUPLE_TX_MASK;
27697                         val2 = RADIO_2055_COUPLE_RX_MASK;
27698                 }
27699
27700                 if ((pi->nphy_rxcalparams & 0x10000)) {
27701                         mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27702                                       val1);
27703                         mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27704                                       val2);
27705                 }
27706
27707                 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27708
27709                         if (debug)
27710                                 mdelay(WAIT_FOR_SCOPE);
27711
27712                         if (gain_pass < 3) {
27713                                 curr_lna = lna_vals[gain_pass];
27714                                 curr_hpf1 = hpf1_vals[gain_pass];
27715                                 curr_hpf2 = hpf2_vals[gain_pass];
27716                         } else {
27717
27718                                 if (tot_pwr[1] > 10000) {
27719                                         curr_lna = lna_vals[2];
27720                                         curr_hpf1 = hpf1_vals[2];
27721                                         curr_hpf2 = hpf2_vals[2];
27722                                         use_hpf_num = 1;
27723                                         curr_hpf = curr_hpf1;
27724                                         actual_log2_pwr =
27725                                                 wlc_phy_nbits(tot_pwr[2]);
27726                                 } else {
27727                                         if (tot_pwr[0] > 10000) {
27728                                                 curr_lna = lna_vals[1];
27729                                                 curr_hpf1 = hpf1_vals[1];
27730                                                 curr_hpf2 = hpf2_vals[1];
27731                                                 use_hpf_num = 1;
27732                                                 curr_hpf = curr_hpf1;
27733                                                 actual_log2_pwr =
27734                                                         wlc_phy_nbits(
27735                                                                 tot_pwr[1]);
27736                                         } else {
27737                                                 curr_lna = lna_vals[0];
27738                                                 curr_hpf1 = hpf1_vals[0];
27739                                                 curr_hpf2 = hpf2_vals[0];
27740                                                 use_hpf_num = 2;
27741                                                 curr_hpf = curr_hpf2;
27742                                                 actual_log2_pwr =
27743                                                         wlc_phy_nbits(
27744                                                                 tot_pwr[0]);
27745                                         }
27746                                 }
27747
27748                                 hpf_change = desired_log2_pwr - actual_log2_pwr;
27749                                 curr_hpf += hpf_change;
27750                                 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27751                                 if (use_hpf_num == 1)
27752                                         curr_hpf1 = curr_hpf;
27753                                 else
27754                                         curr_hpf2 = curr_hpf;
27755                         }
27756
27757                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27758                                                      ((curr_hpf2 << 8) |
27759                                                       (curr_hpf1 << 4) |
27760                                                       (curr_lna << 2)), 0x3, 0);
27761                         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27762
27763                         wlc_phy_stopplayback_nphy(pi);
27764
27765                         if (first_playtone) {
27766                                 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27767                                                 (u16) (pi->nphy_rxcalparams &
27768                                                        0xffff), 0, 0, true);
27769                                 first_playtone = false;
27770                         } else {
27771                                 phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27772                                           40 : 20;
27773                                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27774                                                         0, 0, 0, true);
27775                         }
27776
27777                         if (bcmerror == 0) {
27778                                 if (gain_pass < 3) {
27779
27780                                         wlc_phy_rx_iq_est_nphy(pi, est,
27781                                                                num_samps, 32,
27782                                                                0);
27783                                         i_pwr = (est[rx_core].i_pwr +
27784                                                  num_samps / 2) / num_samps;
27785                                         q_pwr = (est[rx_core].q_pwr +
27786                                                  num_samps / 2) / num_samps;
27787                                         tot_pwr[gain_pass] = i_pwr + q_pwr;
27788                                 } else {
27789
27790                                         wlc_phy_calc_rx_iq_comp_nphy(pi,
27791                                                                      (1 <<
27792                                                                       rx_core));
27793                                 }
27794
27795                                 wlc_phy_stopplayback_nphy(pi);
27796                         }
27797
27798                         if (bcmerror != 0)
27799                                 break;
27800                 }
27801
27802                 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27803                 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27804
27805                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27806                               0x92, orig_RfctrlIntcTx);
27807                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27808                               0x92, orig_RfctrlIntcRx);
27809                 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27810                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27811                               0xa7, orig_AfectrlCore);
27812                 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27813
27814                 if (bcmerror != 0)
27815                         break;
27816         }
27817
27818         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27819         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27820
27821         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27822                                  gain_save);
27823
27824         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27825
27826         return bcmerror;
27827 }
27828
27829 int
27830 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27831                       u8 cal_type, bool debug)
27832 {
27833         if (NREV_GE(pi->pubpi.phy_rev, 7))
27834                 cal_type = 0;
27835
27836         if (NREV_GE(pi->pubpi.phy_rev, 3))
27837                 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27838                                                   debug);
27839         else
27840                 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27841 }
27842
27843 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27844 {
27845         uint core;
27846         u32 txgain;
27847         u16 rad_gain, dac_gain, bbmult, m1m2;
27848         u8 txpi[2], chan_freq_range;
27849         s32 rfpwr_offset;
27850
27851         if (pi->phyhang_avoid)
27852                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27853
27854         if (pi->sh->sromrev < 4) {
27855                 txpi[0] = txpi[1] = 72;
27856         } else {
27857
27858                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27859                 switch (chan_freq_range) {
27860                 case WL_CHAN_FREQ_RANGE_2G:
27861                 case WL_CHAN_FREQ_RANGE_5GL:
27862                 case WL_CHAN_FREQ_RANGE_5GM:
27863                 case WL_CHAN_FREQ_RANGE_5GH:
27864                         txpi[0] = 0;
27865                         txpi[1] = 0;
27866                         break;
27867                 default:
27868                         txpi[0] = txpi[1] = 91;
27869                         break;
27870                 }
27871         }
27872
27873         if (NREV_GE(pi->pubpi.phy_rev, 7))
27874                 txpi[0] = txpi[1] = 30;
27875         else if (NREV_GE(pi->pubpi.phy_rev, 3))
27876                 txpi[0] = txpi[1] = 40;
27877
27878         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27879
27880                 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27881                     (txpi[1] < 40) || (txpi[1] > 100))
27882                         txpi[0] = txpi[1] = 91;
27883         }
27884
27885         pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27886         pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27887         pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27888         pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27889
27890         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27891                 uint phyrev = pi->pubpi.phy_rev;
27892
27893                 if (NREV_GE(phyrev, 3)) {
27894                         if (PHY_IPA(pi)) {
27895                                 u32 *tx_gaintbl =
27896                                         wlc_phy_get_ipa_gaintbl_nphy(pi);
27897                                 txgain = tx_gaintbl[txpi[core]];
27898                         } else {
27899                                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27900                                         if (NREV_IS(phyrev, 3)) {
27901                                                 txgain =
27902                                                       nphy_tpc_5GHz_txgain_rev3
27903                                                                    [txpi[core]];
27904                                         } else if (NREV_IS(phyrev, 4)) {
27905                                                 txgain = (
27906                                                   pi->srom_fem5g.extpagain ==
27907                                                   3) ?
27908                                                   nphy_tpc_5GHz_txgain_HiPwrEPA
27909                                                  [txpi[core]] :
27910                                                  nphy_tpc_5GHz_txgain_rev4
27911                                                  [txpi[core]];
27912                                         } else {
27913                                                 txgain =
27914                                                       nphy_tpc_5GHz_txgain_rev5
27915                                                                    [txpi[core]];
27916                                         }
27917                                 } else {
27918                                         if (NREV_GE(phyrev, 5) &&
27919                                             (pi->srom_fem2g.extpagain == 3)) {
27920                                                 txgain =
27921                                                         nphy_tpc_txgain_HiPwrEPA
27922                                                         [txpi[core]];
27923                                         } else {
27924                                                 txgain = nphy_tpc_txgain_rev3
27925                                                          [txpi[core]];
27926                                         }
27927                                 }
27928                         }
27929                 } else {
27930                         txgain = nphy_tpc_txgain[txpi[core]];
27931                 }
27932
27933                 if (NREV_GE(phyrev, 3))
27934                         rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27935                 else
27936                         rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27937
27938                 if (NREV_GE(phyrev, 7))
27939                         dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27940                 else
27941                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27942
27943                 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27944
27945                 if (NREV_GE(phyrev, 3))
27946                         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27947                                          0xa5), (0x1 << 8), (0x1 << 8));
27948                 else
27949                         mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27950
27951                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27952
27953                 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27954                                          &rad_gain);
27955
27956                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27957                 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27958                 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27959                 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27960
27961                 if (PHY_IPA(pi)) {
27962                         wlc_phy_table_read_nphy(pi,
27963                                                 (core ==
27964                                                  PHY_CORE_0 ?
27965                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
27966                                                  NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27967                                                 576 + txpi[core], 32,
27968                                                 &rfpwr_offset);
27969
27970                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27971                                     0x29b, (0x1ff << 4),
27972                                     ((s16) rfpwr_offset) << 4);
27973
27974                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27975                                     0x29b, (0x1 << 2), (1) << 2);
27976
27977                 }
27978         }
27979
27980         and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27981
27982         if (pi->phyhang_avoid)
27983                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27984 }
27985
27986 static void
27987 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27988                                 u8 tmp_max_pwr, u8 rate_start,
27989                                 u8 rate_end)
27990 {
27991         u8 rate;
27992         u8 word_num, nibble_num;
27993         u8 tmp_nibble;
27994
27995         for (rate = rate_start; rate <= rate_end; rate++) {
27996                 word_num = (rate - rate_start) >> 2;
27997                 nibble_num = (rate - rate_start) & 0x3;
27998                 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27999
28000                 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
28001         }
28002 }
28003
28004 static void
28005 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
28006                             u8 rate_start, u8 rate_end)
28007 {
28008         u8 rate;
28009
28010         for (rate = rate_start; rate <= rate_end; rate++)
28011                 srom_max[rate] -= 2 * pwr_offset;
28012 }
28013
28014 void
28015 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
28016                                 u8 rate_mcs_end, u8 rate_ofdm_start)
28017 {
28018         u8 rate1, rate2;
28019
28020         rate2 = rate_ofdm_start;
28021         for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
28022                 power[rate1] = power[rate2];
28023                 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
28024         }
28025         power[rate_mcs_end] = power[rate_mcs_end - 1];
28026 }
28027
28028 void
28029 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
28030                                 u8 rate_ofdm_end, u8 rate_mcs_start)
28031 {
28032         u8 rate1, rate2;
28033
28034         for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
28035              rate1 <= rate_ofdm_end; rate1++, rate2++) {
28036                 power[rate1] = power[rate2];
28037                 if (rate1 == rate_ofdm_start)
28038                         power[++rate1] = power[rate2];
28039         }
28040 }
28041
28042 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
28043 {
28044         uint rate1, rate2, band_num;
28045         u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
28046         u8 tmp_max_pwr = 0;
28047         u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
28048         u8 *tx_srom_max_rate = NULL;
28049
28050         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
28051              band_num++) {
28052                 switch (band_num) {
28053                 case 0:
28054
28055                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
28056                                           pi->nphy_pwrctrl_info[1].max_pwr_2g);
28057
28058                         pwr_offsets1[0] = pi->cck2gpo;
28059                         wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
28060                                                         pwr_offsets1,
28061                                                         tmp_max_pwr,
28062                                                         TXP_FIRST_CCK,
28063                                                         TXP_LAST_CCK);
28064
28065                         pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
28066                         pwr_offsets1[1] =
28067                                 (u16) (pi->ofdm2gpo >> 16) & 0xffff;
28068
28069                         pwr_offsets2 = pi->mcs2gpo;
28070
28071                         tmp_cddpo = pi->cdd2gpo;
28072                         tmp_stbcpo = pi->stbc2gpo;
28073                         tmp_bw40po = pi->bw402gpo;
28074
28075                         tx_srom_max_rate = pi->tx_srom_max_rate_2g;
28076                         break;
28077                 case 1:
28078
28079                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
28080                                           pi->nphy_pwrctrl_info[1].max_pwr_5gm);
28081
28082                         pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
28083                         pwr_offsets1[1] =
28084                                 (u16) (pi->ofdm5gpo >> 16) & 0xffff;
28085
28086                         pwr_offsets2 = pi->mcs5gpo;
28087
28088                         tmp_cddpo = pi->cdd5gpo;
28089                         tmp_stbcpo = pi->stbc5gpo;
28090                         tmp_bw40po = pi->bw405gpo;
28091
28092                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
28093                         break;
28094                 case 2:
28095
28096                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
28097                                           pi->nphy_pwrctrl_info[1].max_pwr_5gl);
28098
28099                         pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
28100                         pwr_offsets1[1] =
28101                                 (u16) (pi->ofdm5glpo >> 16) & 0xffff;
28102
28103                         pwr_offsets2 = pi->mcs5glpo;
28104
28105                         tmp_cddpo = pi->cdd5glpo;
28106                         tmp_stbcpo = pi->stbc5glpo;
28107                         tmp_bw40po = pi->bw405glpo;
28108
28109                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28110                         break;
28111                 case 3:
28112
28113                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28114                                           pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28115
28116                         pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28117                         pwr_offsets1[1] =
28118                                 (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28119
28120                         pwr_offsets2 = pi->mcs5ghpo;
28121
28122                         tmp_cddpo = pi->cdd5ghpo;
28123                         tmp_stbcpo = pi->stbc5ghpo;
28124                         tmp_bw40po = pi->bw405ghpo;
28125
28126                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28127                         break;
28128                 }
28129
28130                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28131                                                 tmp_max_pwr, TXP_FIRST_OFDM,
28132                                                 TXP_LAST_OFDM);
28133
28134                 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28135                                                 TXP_FIRST_MCS_20_SISO,
28136                                                 TXP_LAST_MCS_20_SISO,
28137                                                 TXP_FIRST_OFDM);
28138
28139                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28140                                                 tmp_max_pwr,
28141                                                 TXP_FIRST_MCS_20_CDD,
28142                                                 TXP_LAST_MCS_20_CDD);
28143
28144                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28145                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28146                                                     TXP_FIRST_MCS_20_CDD,
28147                                                     TXP_LAST_MCS_20_CDD);
28148
28149                 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28150                                                 TXP_FIRST_OFDM_20_CDD,
28151                                                 TXP_LAST_OFDM_20_CDD,
28152                                                 TXP_FIRST_MCS_20_CDD);
28153
28154                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28155                                                 tmp_max_pwr,
28156                                                 TXP_FIRST_MCS_20_STBC,
28157                                                 TXP_LAST_MCS_20_STBC);
28158
28159                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28160                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28161                                                     tmp_stbcpo,
28162                                                     TXP_FIRST_MCS_20_STBC,
28163                                                     TXP_LAST_MCS_20_STBC);
28164
28165                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28166                                                 &pwr_offsets2[2], tmp_max_pwr,
28167                                                 TXP_FIRST_MCS_20_SDM,
28168                                                 TXP_LAST_MCS_20_SDM);
28169
28170                 if (NPHY_IS_SROM_REINTERPRET) {
28171
28172                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28173                                                         &pwr_offsets2[4],
28174                                                         tmp_max_pwr,
28175                                                         TXP_FIRST_MCS_40_SISO,
28176                                                         TXP_LAST_MCS_40_SISO);
28177
28178                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28179                                                         TXP_FIRST_OFDM_40_SISO,
28180                                                         TXP_LAST_OFDM_40_SISO,
28181                                                         TXP_FIRST_MCS_40_SISO);
28182
28183                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28184                                                         &pwr_offsets2[4],
28185                                                         tmp_max_pwr,
28186                                                         TXP_FIRST_MCS_40_CDD,
28187                                                         TXP_LAST_MCS_40_CDD);
28188
28189                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28190                                                     TXP_FIRST_MCS_40_CDD,
28191                                                     TXP_LAST_MCS_40_CDD);
28192
28193                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28194                                                         TXP_FIRST_OFDM_40_CDD,
28195                                                         TXP_LAST_OFDM_40_CDD,
28196                                                         TXP_FIRST_MCS_40_CDD);
28197
28198                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28199                                                         &pwr_offsets2[4],
28200                                                         tmp_max_pwr,
28201                                                         TXP_FIRST_MCS_40_STBC,
28202                                                         TXP_LAST_MCS_40_STBC);
28203
28204                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28205                                                     tmp_stbcpo,
28206                                                     TXP_FIRST_MCS_40_STBC,
28207                                                     TXP_LAST_MCS_40_STBC);
28208
28209                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28210                                                         &pwr_offsets2[6],
28211                                                         tmp_max_pwr,
28212                                                         TXP_FIRST_MCS_40_SDM,
28213                                                         TXP_LAST_MCS_40_SDM);
28214                 } else {
28215
28216                         for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28217                                      TXP_FIRST_OFDM;
28218                              rate1 <= TXP_LAST_MCS_40_SDM;
28219                              rate1++, rate2++)
28220                                 tx_srom_max_rate[rate1] =
28221                                         tx_srom_max_rate[rate2];
28222                 }
28223
28224                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28225                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28226                                                     tmp_bw40po,
28227                                                     TXP_FIRST_OFDM_40_SISO,
28228                                                     TXP_LAST_MCS_40_SDM);
28229
28230                 tx_srom_max_rate[TXP_MCS_32] =
28231                         tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28232         }
28233
28234         return;
28235 }
28236
28237 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28238 {
28239         u8 tx_pwr_ctrl_state;
28240         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28241         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28242
28243         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28244
28245         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28246                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28247                 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
28248                 udelay(1);
28249         }
28250
28251         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28252
28253         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28254                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28255 }
28256
28257 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28258 {
28259         return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28260                                             (0x1 << 14) | (0x1 << 13));
28261 }
28262
28263 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28264 {
28265         u16 tmp;
28266         u16 pwr_idx[2];
28267
28268         if (wlc_phy_txpwr_ison_nphy(pi)) {
28269                 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28270                 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28271
28272                 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28273         } else {
28274                 tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28275                         << 8) |
28276                         (pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28277         }
28278
28279         return tmp;
28280 }
28281
28282 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28283 {
28284         if (PHY_IPA(pi)
28285             && (pi->nphy_force_papd_cal
28286                 || (wlc_phy_txpwr_ison_nphy(pi)
28287                     &&
28288                     (((u32)
28289                       abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28290                           pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28291                      || ((u32)
28292                          abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28293                              pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28294                 wlc_phy_a4(pi, true);
28295 }
28296
28297 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28298 {
28299         u16 mask = 0, val = 0, ishw = 0;
28300         u8 ctr;
28301         uint core;
28302         u32 tbl_offset;
28303         u32 tbl_len;
28304         u16 regval[84];
28305
28306         if (pi->phyhang_avoid)
28307                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28308
28309         switch (ctrl_type) {
28310         case PHY_TPC_HW_OFF:
28311         case PHY_TPC_HW_ON:
28312                 pi->nphy_txpwrctrl = ctrl_type;
28313                 break;
28314         default:
28315                 break;
28316         }
28317
28318         if (ctrl_type == PHY_TPC_HW_OFF) {
28319                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28320
28321                         if (wlc_phy_txpwr_ison_nphy(pi)) {
28322                                 for (core = 0; core < pi->pubpi.phy_corenum;
28323                                      core++)
28324                                         pi->nphy_txpwr_idx[core] =
28325                                                 wlc_phy_txpwr_idx_cur_get_nphy(
28326                                                         pi,
28327                                                         (u8) core);
28328                         }
28329
28330                 }
28331
28332                 tbl_len = 84;
28333                 tbl_offset = 64;
28334                 for (ctr = 0; ctr < tbl_len; ctr++)
28335                         regval[ctr] = 0;
28336                 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28337                                          regval);
28338                 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28339                                          regval);
28340
28341                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28342                         and_phy_reg(pi, 0x1e7,
28343                                     (u16) (~((0x1 << 15) |
28344                                              (0x1 << 14) | (0x1 << 13))));
28345                 else
28346                         and_phy_reg(pi, 0x1e7,
28347                                     (u16) (~((0x1 << 14) | (0x1 << 13))));
28348
28349                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28350                         or_phy_reg(pi, 0x8f, (0x1 << 8));
28351                         or_phy_reg(pi, 0xa5, (0x1 << 8));
28352                 } else {
28353                         or_phy_reg(pi, 0xa5, (0x1 << 14));
28354                 }
28355
28356                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28357                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28358                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28359                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28360
28361                 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28362                     pi->bw == WL_CHANSPEC_BW_40)
28363                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28364                                        MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28365
28366         } else {
28367
28368                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28369                                          8, pi->adj_pwr_tbl_nphy);
28370                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28371                                          8, pi->adj_pwr_tbl_nphy);
28372
28373                 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28374                 mask = (0x1 << 14) | (0x1 << 13);
28375                 val = (ishw << 14) | (ishw << 13);
28376
28377                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28378                         mask |= (0x1 << 15);
28379                         val |= (ishw << 15);
28380                 }
28381
28382                 mod_phy_reg(pi, 0x1e7, mask, val);
28383
28384                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28385                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28386                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28387                                 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28388                         } else {
28389                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28390                                 if (NREV_GT(pi->pubpi.phy_rev, 1))
28391                                         mod_phy_reg(pi, 0x222,
28392                                                     (0xff << 0), 0x64);
28393                         }
28394                 }
28395
28396                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28397                         if ((pi->nphy_txpwr_idx[0] != 128)
28398                             && (pi->nphy_txpwr_idx[1] != 128))
28399                                 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28400                                                                pi->
28401                                                                nphy_txpwr_idx
28402                                                                [0],
28403                                                                pi->
28404                                                                nphy_txpwr_idx
28405                                                                [1]);
28406                 }
28407
28408                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28409                         and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28410                         and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28411                 } else {
28412                         and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28413                 }
28414
28415                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28416                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28417                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28418                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28419
28420                 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28421                     pi->bw == WL_CHANSPEC_BW_40)
28422                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28423                                        0x0, BRCM_BAND_ALL);
28424
28425                 if (PHY_IPA(pi)) {
28426                         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28427                                     0x29b, (0x1 << 2), (0) << 2);
28428
28429                         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28430                                     0x29b, (0x1 << 2), (0) << 2);
28431
28432                 }
28433
28434         }
28435
28436         if (pi->phyhang_avoid)
28437                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28438 }
28439
28440 void
28441 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28442                          bool restore_cals)
28443 {
28444         u8 core, txpwrctl_tbl;
28445         u16 tx_ind0, iq_ind0, lo_ind0;
28446         u16 m1m2;
28447         u32 txgain;
28448         u16 rad_gain, dac_gain;
28449         u8 bbmult;
28450         u32 iqcomp;
28451         u16 iqcomp_a, iqcomp_b;
28452         u32 locomp;
28453         u16 tmpval;
28454         u8 tx_pwr_ctrl_state;
28455         s32 rfpwr_offset;
28456         u16 regval[2];
28457
28458         if (pi->phyhang_avoid)
28459                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28460
28461         tx_ind0 = 192;
28462         iq_ind0 = 320;
28463         lo_ind0 = 448;
28464
28465         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28466
28467                 if ((core_mask & (1 << core)) == 0)
28468                         continue;
28469
28470                 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28471
28472                 if (txpwrindex < 0) {
28473                         if (pi->nphy_txpwrindex[core].index < 0)
28474                                 continue;
28475
28476                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28477                                 mod_phy_reg(pi, 0x8f,
28478                                             (0x1 << 8),
28479                                             pi->nphy_txpwrindex[core].
28480                                             AfectrlOverride);
28481                                 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28482                                             pi->nphy_txpwrindex[core].
28483                                             AfectrlOverride);
28484                         } else {
28485                                 mod_phy_reg(pi, 0xa5,
28486                                             (0x1 << 14),
28487                                             pi->nphy_txpwrindex[core].
28488                                             AfectrlOverride);
28489                         }
28490
28491                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28492                                       0xaa : 0xab,
28493                                       pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28494
28495                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28496                                                  &pi->nphy_txpwrindex[core].
28497                                                  rad_gain);
28498
28499                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28500                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28501                         m1m2 |= ((core == PHY_CORE_0) ?
28502                                  (pi->nphy_txpwrindex[core].bbmult << 8) :
28503                                  (pi->nphy_txpwrindex[core].bbmult << 0));
28504                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28505
28506                         if (restore_cals) {
28507                                 wlc_phy_table_write_nphy(
28508                                         pi, 15, 2, (80 + 2 * core), 16,
28509                                         &pi->nphy_txpwrindex[core].iqcomp_a);
28510                                 wlc_phy_table_write_nphy(
28511                                         pi, 15, 1, (85 + core), 16,
28512                                         &pi->nphy_txpwrindex[core].locomp);
28513                                 wlc_phy_table_write_nphy(
28514                                         pi, 15, 1, (93 + core), 16,
28515                                         &pi->nphy_txpwrindex[core].locomp);
28516                         }
28517
28518                         wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28519
28520                         pi->nphy_txpwrindex[core].index_internal =
28521                                 pi->nphy_txpwrindex[core].index_internal_save;
28522                 } else {
28523
28524                         if (pi->nphy_txpwrindex[core].index < 0) {
28525
28526                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28527                                         mod_phy_reg(pi, 0x8f,
28528                                                     (0x1 << 8),
28529                                                     pi->nphy_txpwrindex[core].
28530                                                     AfectrlOverride);
28531                                         mod_phy_reg(pi, 0xa5, (0x1 << 8),
28532                                                     pi->nphy_txpwrindex[core].
28533                                                     AfectrlOverride);
28534                                 } else {
28535                                         pi->nphy_txpwrindex[core].
28536                                         AfectrlOverride =
28537                                                 read_phy_reg(pi, 0xa5);
28538                                 }
28539
28540                                 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28541                                         read_phy_reg(pi, (core == PHY_CORE_0) ?
28542                                                          0xaa : 0xab);
28543
28544                                 wlc_phy_table_read_nphy(pi, 7, 1,
28545                                                         (0x110 + core), 16,
28546                                                         &pi->
28547                                                         nphy_txpwrindex[core].
28548                                                         rad_gain);
28549
28550                                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28551                                                         &tmpval);
28552                                 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28553                                 tmpval &= 0xff;
28554                                 pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28555
28556                                 wlc_phy_table_read_nphy(pi, 15, 2,
28557                                                         (80 + 2 * core), 16,
28558                                                         &pi->
28559                                                         nphy_txpwrindex[core].
28560                                                         iqcomp_a);
28561
28562                                 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28563                                                         16,
28564                                                         &pi->
28565                                                         nphy_txpwrindex[core].
28566                                                         locomp);
28567
28568                                 pi->nphy_txpwrindex[core].index_internal_save =
28569                                         pi->nphy_txpwrindex[core].
28570                                         index_internal;
28571                         }
28572
28573                         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28574                         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28575
28576                         if (NREV_IS(pi->pubpi.phy_rev, 1))
28577                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28578
28579                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28580                                                 (tx_ind0 + txpwrindex), 32,
28581                                                 &txgain);
28582
28583                         if (NREV_GE(pi->pubpi.phy_rev, 3))
28584                                 rad_gain = (txgain >> 16) &
28585                                            ((1 << (32 - 16 + 1)) - 1);
28586                         else
28587                                 rad_gain = (txgain >> 16) &
28588                                            ((1 << (28 - 16 + 1)) - 1);
28589
28590                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28591                         bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28592
28593                         if (NREV_GE(pi->pubpi.phy_rev, 3))
28594                                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28595                                                  0xa5), (0x1 << 8), (0x1 << 8));
28596                         else
28597                                 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28598
28599                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28600                                       0xaa : 0xab, dac_gain);
28601
28602                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28603                                                  &rad_gain);
28604
28605                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28606                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28607                         m1m2 |= ((core == PHY_CORE_0) ?
28608                                 (bbmult << 8) : (bbmult << 0));
28609
28610                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28611
28612                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28613                                                 (iq_ind0 + txpwrindex), 32,
28614                                                 &iqcomp);
28615                         iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28616                         iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28617
28618                         if (restore_cals) {
28619                                 regval[0] = (u16) iqcomp_a;
28620                                 regval[1] = (u16) iqcomp_b;
28621                                 wlc_phy_table_write_nphy(pi, 15, 2,
28622                                                          (80 + 2 * core), 16,
28623                                                          regval);
28624                         }
28625
28626                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28627                                                 (lo_ind0 + txpwrindex), 32,
28628                                                 &locomp);
28629                         if (restore_cals)
28630                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28631                                                          16, &locomp);
28632
28633                         if (NREV_IS(pi->pubpi.phy_rev, 1))
28634                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28635
28636                         if (PHY_IPA(pi)) {
28637                                 wlc_phy_table_read_nphy(pi,
28638                                                 (core == PHY_CORE_0 ?
28639                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
28640                                                  NPHY_TBL_ID_CORE2TXPWRCTL),
28641                                                 1, 576 + txpwrindex, 32,
28642                                                 &rfpwr_offset);
28643
28644                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28645                                             0x29b, (0x1ff << 4),
28646                                             ((s16) rfpwr_offset) << 4);
28647
28648                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28649                                             0x29b, (0x1 << 2), (1) << 2);
28650
28651                         }
28652
28653                         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28654                 }
28655
28656                 pi->nphy_txpwrindex[core].index = txpwrindex;
28657         }
28658
28659         if (pi->phyhang_avoid)
28660                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28661 }
28662
28663 void
28664 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28665                                    u8 txp_rate_idx)
28666 {
28667         u8 chan_freq_range;
28668
28669         chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28670         switch (chan_freq_range) {
28671         case WL_CHAN_FREQ_RANGE_2G:
28672                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28673                 break;
28674         case WL_CHAN_FREQ_RANGE_5GM:
28675                 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28676                 break;
28677         case WL_CHAN_FREQ_RANGE_5GL:
28678                 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28679                 break;
28680         case WL_CHAN_FREQ_RANGE_5GH:
28681                 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28682                 break;
28683         default:
28684                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28685                 break;
28686         }
28687
28688         return;
28689 }
28690
28691 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28692 {
28693         u16 clip_off[] = { 0xffff, 0xffff };
28694
28695         if (enable) {
28696                 if (pi->nphy_deaf_count == 0) {
28697                         pi->classifier_state =
28698                                 wlc_phy_classifier_nphy(pi, 0, 0);
28699                         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28700                         wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28701                         wlc_phy_clip_det_nphy(pi, 1, clip_off);
28702                 }
28703
28704                 pi->nphy_deaf_count++;
28705
28706                 wlc_phy_resetcca_nphy(pi);
28707
28708         } else {
28709                 pi->nphy_deaf_count--;
28710
28711                 if (pi->nphy_deaf_count == 0) {
28712                         wlc_phy_classifier_nphy(pi, (0x7 << 0),
28713                                                 pi->classifier_state);
28714                         wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28715                 }
28716         }
28717 }
28718
28719 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28720 {
28721         wlapi_suspend_mac_and_wait(pi->sh->physhim);
28722
28723         if (mode) {
28724                 if (pi->nphy_deaf_count == 0)
28725                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
28726         } else if (pi->nphy_deaf_count > 0) {
28727                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28728         }
28729
28730         wlapi_enable_mac(pi->sh->physhim);
28731 }