staging: brcm80211: remove include file sbhndpio.h
[firefly-linux-kernel-4.4.55.git] / drivers / staging / brcm80211 / brcmsmac / phy / wlc_phy_n.c
1 /*
2  * Copyright (c) 2010 Broadcom Corporation
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
11  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
13  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16
17 #include <linux/kernel.h>
18 #include <linux/string.h>
19 #include <bcmdefs.h>
20 #include <wlc_cfg.h>
21 #include <linux/delay.h>
22 #include <linux/pci.h>
23 #include <osl.h>
24 #include <siutils.h>
25 #include <sbchipc.h>
26 #include <hndpmu.h>
27
28 #include <bcmdevs.h>
29 #include <sbhnddma.h>
30
31 #include <wlc_phy_radio.h>
32 #include <wlc_phy_int.h>
33 #include <wlc_phyreg_n.h>
34 #include <wlc_phytbl_n.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) ? radio_type##_##jspace##0 : radio_type##_##jspace##1))
39 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
40         write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
41         ((core == PHY_CORE_0) ? radio_type##_##jspace##0 : radio_type##_##jspace##1), value);
42 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
43         write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value);
44
45 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
46         read_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##jspace##0##_##reg_name : \
47         radio_type##_##jspace##1##_##reg_name));
48 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
49         write_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##jspace##0##_##reg_name : \
50         radio_type##_##jspace##1##_##reg_name), value);
51 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
52         read_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##reg_name##_##jspace##0 : \
53         radio_type##_##reg_name##_##jspace##1));
54 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
55         write_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##reg_name##_##jspace##0 : \
56         radio_type##_##reg_name##_##jspace##1), value);
57
58 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
59 #define NPHY_ACI_CHANNEL_DELTA 5
60 #define NPHY_ACI_CHANNEL_SKIP 4
61 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
62 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
63 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
64 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
65 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
66 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
67
68 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
69
70 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
71
72 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
73
74 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
75
76 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
77
78 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
79
80 #define NPHY_NOISE_NOASSOC_ENTER_TH  400
81
82 #define NPHY_NOISE_ASSOC_ENTER_TH  400
83
84 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
85
86 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
87 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
88
89 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
90
91 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
92
93 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
94
95 #define NPHY_RSSICAL_MAXREAD 31
96
97 #define NPHY_RSSICAL_NPOLL 8
98 #define NPHY_RSSICAL_MAXD  (1<<20)
99 #define NPHY_MIN_RXIQ_PWR 2
100
101 #define NPHY_RSSICAL_W1_TARGET 25
102 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
103 #define NPHY_RSSICAL_NB_TARGET 0
104
105 #define NPHY_RSSICAL_W1_TARGET_REV3 29
106 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
107
108 #define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
109 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
110 #define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
111 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - NPHY_RSSICAL_MAXREAD)
112 #define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
113 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - NPHY_RSSICAL_MAXREAD)
114 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
115 #define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
116                                ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
117 #define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
118                                ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
119 #define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
120                                ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
121
122 #define NPHY_IQCAL_NUMGAINS 9
123 #define NPHY_N_GCTL 0x66
124
125 #define NPHY_PAPD_EPS_TBL_SIZE 64
126 #define NPHY_PAPD_SCL_TBL_SIZE 64
127 #define NPHY_NUM_DIG_FILT_COEFFS 15
128
129 #define NPHY_PAPD_COMP_OFF 0
130 #define NPHY_PAPD_COMP_ON  1
131
132 #define NPHY_SROM_TEMPSHIFT             32
133 #define NPHY_SROM_MAXTEMPOFFSET         16
134 #define NPHY_SROM_MINTEMPOFFSET         -16
135
136 #define NPHY_CAL_MAXTEMPDELTA           64
137
138 #define NPHY_NOISEVAR_TBLLEN40 256
139 #define NPHY_NOISEVAR_TBLLEN20 128
140
141 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
142
143 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
144
145 typedef struct _nphy_iqcal_params {
146         u16 txlpf;
147         u16 txgm;
148         u16 pga;
149         u16 pad;
150         u16 ipa;
151         u16 cal_gain;
152         u16 ncorr[5];
153 } nphy_iqcal_params_t;
154
155 typedef struct _nphy_txiqcal_ladder {
156         u8 percent;
157         u8 g_env;
158 } nphy_txiqcal_ladder_t;
159
160 typedef struct {
161         nphy_txgains_t gains;
162         bool useindex;
163         u8 index;
164 } nphy_ipa_txcalgains_t;
165
166 typedef struct nphy_papd_restore_state_t {
167         u16 fbmix[2];
168         u16 vga_master[2];
169         u16 intpa_master[2];
170         u16 afectrl[2];
171         u16 afeoverride[2];
172         u16 pwrup[2];
173         u16 atten[2];
174         u16 mm;
175 } nphy_papd_restore_state;
176
177 typedef struct _nphy_ipa_txrxgain {
178         u16 hpvga;
179         u16 lpf_biq1;
180         u16 lpf_biq0;
181         u16 lna2;
182         u16 lna1;
183         s8 txpwrindex;
184 } nphy_ipa_txrxgain_t;
185
186 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
187
188 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_5GHz[] = { {0, 0, 0, 0, 0, 100},
189 {0, 0, 0, 0, 0, 50},
190 {0, 0, 0, 0, 0, -1},
191 {0, 0, 0, 3, 0, -1},
192 {0, 0, 3, 3, 0, -1},
193 {0, 2, 3, 3, 0, -1}
194 };
195
196 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_2GHz[] = { {0, 0, 0, 0, 0, 128},
197 {0, 0, 0, 0, 0, 70},
198 {0, 0, 0, 0, 0, 20},
199 {0, 0, 0, 3, 0, 20},
200 {0, 0, 3, 3, 0, 20},
201 {0, 2, 3, 3, 0, 20}
202 };
203
204 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = { {0, 0, 0, 0, 0, 100},
205 {0, 0, 0, 0, 0, 50},
206 {0, 0, 0, 0, 0, -1},
207 {0, 0, 0, 3, 0, -1},
208 {0, 0, 3, 3, 0, -1},
209 {0, 0, 5, 3, 0, -1}
210 };
211
212 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = { {0, 0, 0, 0, 0, 10},
213 {0, 0, 0, 1, 0, 10},
214 {0, 0, 1, 2, 0, 10},
215 {0, 0, 1, 3, 0, 10},
216 {0, 0, 4, 3, 0, 10},
217 {0, 0, 6, 3, 0, 10}
218 };
219
220 #define NPHY_RXCAL_TONEAMP 181
221 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
222 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
223
224 enum {
225         NPHY_RXCAL_GAIN_INIT = 0,
226         NPHY_RXCAL_GAIN_UP,
227         NPHY_RXCAL_GAIN_DOWN
228 };
229
230 #define wlc_phy_get_papd_nphy(pi) \
231         (read_phy_reg((pi), 0x1e7) & \
232                         ((0x1 << 15) | \
233                         (0x1 << 14) | \
234                         (0x1 << 13)))
235
236 #define TXFILT_SHAPING_OFDM20   0
237 #define TXFILT_SHAPING_OFDM40   1
238 #define TXFILT_SHAPING_CCK      2
239 #define TXFILT_DEFAULT_OFDM20   3
240 #define TXFILT_DEFAULT_OFDM40   4
241
242 u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
243         {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
244          230, -44, 230, 201, -191, 201},
245         {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
246          26, 34, -32, 34},
247         {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
248          121, -73, 121, 91, 124, 91},
249         {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
250          151, 301, 151, 602, -752, 602},
251         {-92, 58, -96, 49, -104, 44, 17, 35, 17,
252          12, 25, 12, 13, 27, 13},
253         {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
254          230, -44, 230, 201, -191, 201},
255         {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
256          0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
257 };
258
259 typedef struct _chan_info_nphy_2055 {
260         u16 chan;
261         u16 freq;
262         uint unknown;
263         u8 RF_pll_ref;
264         u8 RF_rf_pll_mod1;
265         u8 RF_rf_pll_mod0;
266         u8 RF_vco_cap_tail;
267         u8 RF_vco_cal1;
268         u8 RF_vco_cal2;
269         u8 RF_pll_lf_c1;
270         u8 RF_pll_lf_r1;
271         u8 RF_pll_lf_c2;
272         u8 RF_lgbuf_cen_buf;
273         u8 RF_lgen_tune1;
274         u8 RF_lgen_tune2;
275         u8 RF_core1_lgbuf_a_tune;
276         u8 RF_core1_lgbuf_g_tune;
277         u8 RF_core1_rxrf_reg1;
278         u8 RF_core1_tx_pga_pad_tn;
279         u8 RF_core1_tx_mx_bgtrim;
280         u8 RF_core2_lgbuf_a_tune;
281         u8 RF_core2_lgbuf_g_tune;
282         u8 RF_core2_rxrf_reg1;
283         u8 RF_core2_tx_pga_pad_tn;
284         u8 RF_core2_tx_mx_bgtrim;
285         u16 PHY_BW1a;
286         u16 PHY_BW2;
287         u16 PHY_BW3;
288         u16 PHY_BW4;
289         u16 PHY_BW5;
290         u16 PHY_BW6;
291 } chan_info_nphy_2055_t;
292
293 typedef struct _chan_info_nphy_radio205x {
294         u16 chan;
295         u16 freq;
296         u8 RF_SYN_pll_vcocal1;
297         u8 RF_SYN_pll_vcocal2;
298         u8 RF_SYN_pll_refdiv;
299         u8 RF_SYN_pll_mmd2;
300         u8 RF_SYN_pll_mmd1;
301         u8 RF_SYN_pll_loopfilter1;
302         u8 RF_SYN_pll_loopfilter2;
303         u8 RF_SYN_pll_loopfilter3;
304         u8 RF_SYN_pll_loopfilter4;
305         u8 RF_SYN_pll_loopfilter5;
306         u8 RF_SYN_reserved_addr27;
307         u8 RF_SYN_reserved_addr28;
308         u8 RF_SYN_reserved_addr29;
309         u8 RF_SYN_logen_VCOBUF1;
310         u8 RF_SYN_logen_MIXER2;
311         u8 RF_SYN_logen_BUF3;
312         u8 RF_SYN_logen_BUF4;
313         u8 RF_RX0_lnaa_tune;
314         u8 RF_RX0_lnag_tune;
315         u8 RF_TX0_intpaa_boost_tune;
316         u8 RF_TX0_intpag_boost_tune;
317         u8 RF_TX0_pada_boost_tune;
318         u8 RF_TX0_padg_boost_tune;
319         u8 RF_TX0_pgaa_boost_tune;
320         u8 RF_TX0_pgag_boost_tune;
321         u8 RF_TX0_mixa_boost_tune;
322         u8 RF_TX0_mixg_boost_tune;
323         u8 RF_RX1_lnaa_tune;
324         u8 RF_RX1_lnag_tune;
325         u8 RF_TX1_intpaa_boost_tune;
326         u8 RF_TX1_intpag_boost_tune;
327         u8 RF_TX1_pada_boost_tune;
328         u8 RF_TX1_padg_boost_tune;
329         u8 RF_TX1_pgaa_boost_tune;
330         u8 RF_TX1_pgag_boost_tune;
331         u8 RF_TX1_mixa_boost_tune;
332         u8 RF_TX1_mixg_boost_tune;
333         u16 PHY_BW1a;
334         u16 PHY_BW2;
335         u16 PHY_BW3;
336         u16 PHY_BW4;
337         u16 PHY_BW5;
338         u16 PHY_BW6;
339 } chan_info_nphy_radio205x_t;
340
341 typedef struct _chan_info_nphy_radio2057 {
342         u16 chan;
343         u16 freq;
344         u8 RF_vcocal_countval0;
345         u8 RF_vcocal_countval1;
346         u8 RF_rfpll_refmaster_sparextalsize;
347         u8 RF_rfpll_loopfilter_r1;
348         u8 RF_rfpll_loopfilter_c2;
349         u8 RF_rfpll_loopfilter_c1;
350         u8 RF_cp_kpd_idac;
351         u8 RF_rfpll_mmd0;
352         u8 RF_rfpll_mmd1;
353         u8 RF_vcobuf_tune;
354         u8 RF_logen_mx2g_tune;
355         u8 RF_logen_mx5g_tune;
356         u8 RF_logen_indbuf2g_tune;
357         u8 RF_logen_indbuf5g_tune;
358         u8 RF_txmix2g_tune_boost_pu_core0;
359         u8 RF_pad2g_tune_pus_core0;
360         u8 RF_pga_boost_tune_core0;
361         u8 RF_txmix5g_boost_tune_core0;
362         u8 RF_pad5g_tune_misc_pus_core0;
363         u8 RF_lna2g_tune_core0;
364         u8 RF_lna5g_tune_core0;
365         u8 RF_txmix2g_tune_boost_pu_core1;
366         u8 RF_pad2g_tune_pus_core1;
367         u8 RF_pga_boost_tune_core1;
368         u8 RF_txmix5g_boost_tune_core1;
369         u8 RF_pad5g_tune_misc_pus_core1;
370         u8 RF_lna2g_tune_core1;
371         u8 RF_lna5g_tune_core1;
372         u16 PHY_BW1a;
373         u16 PHY_BW2;
374         u16 PHY_BW3;
375         u16 PHY_BW4;
376         u16 PHY_BW5;
377         u16 PHY_BW6;
378 } chan_info_nphy_radio2057_t;
379
380 typedef struct _chan_info_nphy_radio2057_rev5 {
381         u16 chan;
382         u16 freq;
383         u8 RF_vcocal_countval0;
384         u8 RF_vcocal_countval1;
385         u8 RF_rfpll_refmaster_sparextalsize;
386         u8 RF_rfpll_loopfilter_r1;
387         u8 RF_rfpll_loopfilter_c2;
388         u8 RF_rfpll_loopfilter_c1;
389         u8 RF_cp_kpd_idac;
390         u8 RF_rfpll_mmd0;
391         u8 RF_rfpll_mmd1;
392         u8 RF_vcobuf_tune;
393         u8 RF_logen_mx2g_tune;
394         u8 RF_logen_indbuf2g_tune;
395         u8 RF_txmix2g_tune_boost_pu_core0;
396         u8 RF_pad2g_tune_pus_core0;
397         u8 RF_lna2g_tune_core0;
398         u8 RF_txmix2g_tune_boost_pu_core1;
399         u8 RF_pad2g_tune_pus_core1;
400         u8 RF_lna2g_tune_core1;
401         u16 PHY_BW1a;
402         u16 PHY_BW2;
403         u16 PHY_BW3;
404         u16 PHY_BW4;
405         u16 PHY_BW5;
406         u16 PHY_BW6;
407 } chan_info_nphy_radio2057_rev5_t;
408
409 typedef struct nphy_sfo_cfg {
410         u16 PHY_BW1a;
411         u16 PHY_BW2;
412         u16 PHY_BW3;
413         u16 PHY_BW4;
414         u16 PHY_BW5;
415         u16 PHY_BW6;
416 } nphy_sfo_cfg_t;
417
418 static chan_info_nphy_2055_t chan_info_nphy_2055[] = {
419         {
420          184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
421          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
422          0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
423         {
424          186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
425          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
426          0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
427         {
428          188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
429          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
430          0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
431         {
432          190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
433          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
434          0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
435         {
436          192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
437          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
438          0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
439         {
440          194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
441          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
442          0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
443         {
444          196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
445          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
446          0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
447         {
448          198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
449          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
450          0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
451         {
452          200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
453          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
454          0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
455         {
456          202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
457          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
458          0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
459         {
460          204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
461          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
462          0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
463         {
464          206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
465          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
466          0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
467         {
468          208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
469          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
470          0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
471         {
472          210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
473          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
474          0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
475         {
476          212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
477          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
478          0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
479         {
480          214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
481          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
482          0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
483         {
484          216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
485          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
486          0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
487         {
488          218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
489          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
490          0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
491         {
492          220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
493          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
494          0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
495         {
496          222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
497          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
498          0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
499         {
500          224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
501          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
502          0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
503         {
504          226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
505          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
506          0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
507         {
508          228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
509          0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
510          0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
511         {
512          32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
513          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
514          0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
515         {
516          34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
517          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
518          0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
519         {
520          36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
521          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
522          0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
523         {
524          38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
525          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
526          0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
527         {
528          40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
529          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
530          0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
531         {
532          42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
533          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
534          0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
535         {
536          44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
537          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
538          0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
539         {
540          46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
541          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
542          0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
543         {
544          48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
545          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
546          0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
547         {
548          50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
549          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
550          0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
551         {
552          52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
553          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
554          0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
555         {
556          54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
557          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
558          0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
559         {
560          56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
561          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
562          0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
563         {
564          58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
565          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
566          0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
567         {
568          60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
569          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
570          0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
571         {
572          62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
573          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
574          0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
575         {
576          64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
577          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
578          0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
579         {
580          66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
581          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
582          0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
583         {
584          68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
585          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
586          0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
587         {
588          70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
589          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
590          0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
591         {
592          72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
593          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
594          0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
595         {
596          74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
597          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
598          0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
599         {
600          76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
601          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
602          0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
603         {
604          78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
605          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
606          0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
607         {
608          80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
609          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
610          0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
611         {
612          82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
613          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
614          0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
615         {
616          84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
617          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
618          0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
619         {
620          86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
621          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
622          0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
623         {
624          88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
625          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
626          0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
627         {
628          90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
629          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
630          0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
631         {
632          92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
633          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
634          0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
635         {
636          94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
637          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
638          0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
639         {
640          96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
641          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
642          0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
643         {
644          98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
645          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
646          0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
647         {
648          100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
649          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
650          0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
651         {
652          102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
653          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
654          0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
655         {
656          104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
657          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
658          0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
659         {
660          106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
661          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
662          0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
663         {
664          108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
665          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
666          0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
667         {
668          110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
669          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
670          0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
671         {
672          112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
673          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
674          0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
675         {
676          114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
677          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
678          0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
679         {
680          116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
681          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
682          0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
683         {
684          118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
685          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
686          0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
687         {
688          120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
689          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
690          0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
691         {
692          122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
693          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
694          0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
695         {
696          124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
697          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
698          0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
699         {
700          126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
701          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
702          0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
703         {
704          128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
705          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
706          0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
707         {
708          130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
709          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
710          0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
711         {
712          132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
713          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
714          0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
715         {
716          134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
717          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
718          0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
719         {
720          136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
721          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
722          0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
723         {
724          138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
725          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
726          0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
727         {
728          140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
729          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
730          0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
731         {
732          142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
733          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
734          0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
735         {
736          144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
737          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
738          0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
739         {
740          145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
741          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
742          0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
743         {
744          146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
745          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
746          0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
747         {
748          147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
749          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
750          0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
751         {
752          148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
753          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
754          0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
755         {
756          149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
757          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
758          0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
759         {
760          150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
761          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
762          0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
763         {
764          151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
765          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
766          0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
767         {
768          152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
769          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
770          0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
771         {
772          153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
773          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
774          0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
775         {
776          154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
777          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
778          0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
779         {
780          155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
781          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
782          0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
783         {
784          156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
785          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
786          0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
787         {
788          157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
789          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
790          0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
791         {
792          158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
793          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
794          0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
795         {
796          159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
797          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
798          0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
799         {
800          160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
801          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
802          0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
803         {
804          161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
805          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
806          0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
807         {
808          162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
809          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
810          0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
811         {
812          163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
813          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
814          0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
815         {
816          164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
817          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
818          0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
819         {
820          165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
821          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
822          0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
823         {
824          166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
825          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
826          0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
827         {
828          168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
829          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
830          0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
831         {
832          170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
833          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
834          0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
835         {
836          172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
837          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
838          0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
839         {
840          174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
841          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
842          0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
843         {
844          176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
845          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
846          0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
847         {
848          178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
849          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
850          0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
851         {
852          180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
853          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
854          0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
855         {
856          182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
857          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
858          0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
859         {
860          1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
861          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
862          0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
863         {
864          2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
865          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
866          0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
867         {
868          3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
869          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
870          0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
871         {
872          4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
873          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
874          0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
875         {
876          5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
877          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
878          0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
879         {
880          6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
881          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
882          0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
883         {
884          7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
885          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
886          0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
887         {
888          8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
889          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
890          0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
891         {
892          9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
893          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
894          0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
895         {
896          10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
897          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
898          0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
899         {
900          11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
901          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
902          0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
903         {
904          12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
905          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
906          0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
907         {
908          13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
909          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
910          0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
911         {
912          14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
913          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
914          0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
915 };
916
917 static chan_info_nphy_radio205x_t chan_info_nphyrev3_2056[] = {
918         {
919          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
920          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
921          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
922          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
923         {
924          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
925          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
926          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
927          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
928         {
929          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
930          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
931          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
932          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
933         {
934          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
935          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
936          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
937          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
938         {
939          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
940          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
941          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
942          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
943         {
944          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
945          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
946          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
947          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
948         {
949          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
950          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
951          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
952          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
953         {
954          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
955          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
956          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
957          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
958         {
959          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
960          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
961          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
962          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
963         {
964          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
965          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
966          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
967          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
968         {
969          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
970          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
971          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
972          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
973         {
974          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
975          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
976          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
977          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
978         {
979          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
980          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
981          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
982          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
983         {
984          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
985          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
986          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
987          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
988         {
989          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
990          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
991          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
992          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
993         {
994          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
995          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
996          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
997          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
998         {
999          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1000          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1001          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1002          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1003         {
1004          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1005          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1006          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1007          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1008         {
1009          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1010          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1011          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1012          0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1013         {
1014          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1015          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1016          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1017          0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1018         {
1019          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1020          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1021          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1022          0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1023         {
1024          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1025          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1026          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1027          0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1028         {
1029          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1030          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1031          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1032          0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1033         {
1034          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1035          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1036          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1037          0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1038         {
1039          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1040          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1041          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1042          0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1043         {
1044          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1045          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1046          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1047          0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1048         {
1049          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1050          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1051          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1052          0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1053         {
1054          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1055          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1056          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1057          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1058         {
1059          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1060          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1061          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1062          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1063         {
1064          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1065          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1066          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1067          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1068         {
1069          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1070          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1071          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1072          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1073         {
1074          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1075          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1076          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1077          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1078         {
1079          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1080          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1081          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1082          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1083         {
1084          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1085          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1086          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1087          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1088         {
1089          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1090          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1091          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1092          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1093         {
1094          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1095          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1096          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1097          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1098         {
1099          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1100          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1101          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1102          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1103         {
1104          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1105          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1106          0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1107          0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1108         {
1109          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1110          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1111          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1112          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1113         {
1114          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1115          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1116          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1117          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1118         {
1119          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1120          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1121          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1122          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1123         {
1124          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1125          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1126          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1127          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1128         {
1129          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1130          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1131          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1132          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1133         {
1134          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1135          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1136          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1137          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1138         {
1139          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1140          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1141          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1142          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1143         {
1144          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1145          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1146          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1147          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1148         {
1149          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1150          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1151          0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1152          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1153         {
1154          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1155          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1156          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1157          0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1158         {
1159          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1160          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1161          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1162          0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1163         {
1164          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1165          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1166          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1167          0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1168         {
1169          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1170          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1171          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1172          0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1173         {
1174          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1175          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1176          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1177          0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1178         {
1179          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1180          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1181          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1182          0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1183         {
1184          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1185          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1186          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1187          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1188         {
1189          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1190          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1191          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1192          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1193         {
1194          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1195          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1196          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1197          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1198         {
1199          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1200          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1201          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1202          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1203         {
1204          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1205          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1206          0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1207          0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1208         {
1209          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1210          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1211          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1212          0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1213         {
1214          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1215          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1216          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1217          0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1218         {
1219          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1220          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1221          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1222          0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1223         {
1224          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1225          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1226          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1227          0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1228         {
1229          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1230          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1231          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1232          0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1233         {
1234          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1235          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1236          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1237          0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1238         {
1239          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1240          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1241          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1242          0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1243         {
1244          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1245          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1246          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1247          0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1248         {
1249          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1250          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1251          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1252          0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1253         {
1254          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1255          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1256          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1257          0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1258         {
1259          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1260          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1261          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1262          0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1263         {
1264          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1265          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1266          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1267          0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1268         {
1269          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1270          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1271          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1272          0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1273         {
1274          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1275          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1276          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1277          0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1278         {
1279          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1280          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1281          0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1282          0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1283         {
1284          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1285          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1286          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1287          0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1288         {
1289          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1290          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1291          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1292          0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1293         {
1294          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1295          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1296          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1297          0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1298         {
1299          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1300          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1301          0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1302          0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1303         {
1304          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1305          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1306          0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1307          0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1308         {
1309          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1310          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1311          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1312          0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1313         {
1314          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1315          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1316          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1317          0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1318         {
1319          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1320          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1321          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1322          0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1323         {
1324          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1325          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1326          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1327          0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1328         {
1329          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1330          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1331          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1332          0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1333         {
1334          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1335          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1336          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1337          0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1338         {
1339          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1340          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1341          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1342          0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1343         {
1344          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1345          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1346          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1347          0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1348         {
1349          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1350          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1351          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1352          0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1353         {
1354          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1355          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1356          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1357          0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1358         {
1359          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1360          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1361          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1362          0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1363         {
1364          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1365          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1366          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1367          0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1368         {
1369          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1370          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1371          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1372          0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1373         {
1374          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1375          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1376          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1377          0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1378         {
1379          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1380          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1381          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1382          0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1383         {
1384          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1385          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1386          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1387          0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1388         {
1389          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1390          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1391          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1392          0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1393         {
1394          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1395          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1396          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1397          0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1398         {
1399          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1400          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1401          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1402          0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1403         {
1404          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1405          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1406          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1407          0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1408         {
1409          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1410          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1411          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1412          0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1413         {
1414          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1415          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1416          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1417          0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1418         {
1419          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1420          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1421          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1422          0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1423         {
1424          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1425          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1426          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1427          0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1428         {
1429          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1430          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1431          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1432          0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1433         {
1434          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1435          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1436          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1437          0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1438         {
1439          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1440          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1441          0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1442          0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1443         {
1444          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1445          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1446          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1447          0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1448         {
1449          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1450          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1451          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1452          0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1453         {
1454          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1455          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1456          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1457          0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1458         {
1459          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1460          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1461          0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1462          0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1463         {
1464          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1465          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1466          0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1467          0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1468         {
1469          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1470          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1471          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1472          0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1473         {
1474          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1475          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1476          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1477          0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1478         {
1479          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1480          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1481          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1482          0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1483         {
1484          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1485          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1486          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1487          0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1488         {
1489          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1490          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1491          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1492          0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1493         {
1494          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1495          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1496          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1497          0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1498         {
1499          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1500          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1501          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1502          0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1503         {
1504          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1505          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1506          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1507          0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1508         {
1509          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1510          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1511          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1512          0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1513         {
1514          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1515          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1516          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1517          0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1518         {
1519          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1520          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1521          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1522          0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1523         {
1524          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1525          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1526          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1527          0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1528         {
1529          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1530          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1531          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1532          0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1533         {
1534          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1535          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1536          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1537          0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1538 };
1539
1540 static chan_info_nphy_radio205x_t chan_info_nphyrev4_2056_A1[] = {
1541         {
1542          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1543          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1544          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1545          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1546         {
1547          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1548          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1549          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1550          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1551         {
1552          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1553          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1554          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1555          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1556         {
1557          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1558          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1559          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1560          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1561         {
1562          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1563          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1564          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1565          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1566         {
1567          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1568          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1569          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1570          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1571         {
1572          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1573          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1574          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1575          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1576         {
1577          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1578          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1579          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1580          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1581         {
1582          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1583          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1584          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1585          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1586         {
1587          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1588          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1589          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1590          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1591         {
1592          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1593          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1594          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1595          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1596         {
1597          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1598          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1599          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1600          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1601         {
1602          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1603          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1604          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1605          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1606         {
1607          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1608          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1609          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1610          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1611         {
1612          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1613          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1614          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1615          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1616         {
1617          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1618          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1619          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1620          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1621         {
1622          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1623          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1624          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1625          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1626         {
1627          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1628          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1629          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1630          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1631         {
1632          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1633          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1634          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1635          0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1636         {
1637          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1638          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1639          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1640          0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1641         {
1642          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1643          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1644          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1645          0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1646         {
1647          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1648          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1649          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1650          0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1651         {
1652          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1653          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1654          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1655          0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1656         {
1657          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1658          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1659          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1660          0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1661         {
1662          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1663          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1664          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1665          0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1666         {
1667          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1668          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1669          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1670          0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1671         {
1672          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1673          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1674          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1675          0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1676         {
1677          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1678          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1679          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1680          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1681         {
1682          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1683          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1684          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1685          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1686         {
1687          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1688          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1689          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1690          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1691         {
1692          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1693          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1694          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1695          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1696         {
1697          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1698          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1699          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1700          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1701         {
1702          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1703          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1704          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1705          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1706         {
1707          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1708          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1709          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1710          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1711         {
1712          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1713          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1714          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1715          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1716         {
1717          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1718          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1719          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1720          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1721         {
1722          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1723          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1724          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1725          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1726         {
1727          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1728          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1729          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1730          0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1731         {
1732          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1733          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1734          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1735          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1736         {
1737          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1738          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1739          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1740          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1741         {
1742          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1743          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1744          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1745          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1746         {
1747          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1748          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1749          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1750          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1751         {
1752          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1753          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1754          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1755          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1756         {
1757          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1758          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1759          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1760          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1761         {
1762          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1763          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1764          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1765          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1766         {
1767          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1768          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1769          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1770          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1771         {
1772          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1773          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1774          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1775          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1776         {
1777          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1778          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1779          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1780          0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1781         {
1782          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1783          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1784          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1785          0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1786         {
1787          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1788          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1789          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1790          0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1791         {
1792          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1793          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1794          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1795          0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1796         {
1797          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1798          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1799          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1800          0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1801         {
1802          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1803          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1804          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1805          0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1806         {
1807          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1808          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1809          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1810          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1811         {
1812          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1813          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1814          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1815          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1816         {
1817          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1818          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1819          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1820          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1821         {
1822          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1823          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1824          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1825          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1826         {
1827          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1828          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1829          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1830          0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1831         {
1832          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1833          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1834          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1835          0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1836         {
1837          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1838          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1839          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1840          0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1841         {
1842          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1843          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1844          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1845          0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1846         {
1847          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1848          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1849          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1850          0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1851         {
1852          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1853          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1854          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1855          0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1856         {
1857          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1858          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1859          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1860          0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1861         {
1862          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1863          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1864          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1865          0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1866         {
1867          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1868          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1869          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1870          0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1871         {
1872          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1873          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1874          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1875          0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1876         {
1877          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1878          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1879          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1880          0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1881         {
1882          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1883          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1884          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1885          0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1886         {
1887          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1888          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1889          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1890          0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1891         {
1892          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1893          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1894          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1895          0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1896         {
1897          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1898          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1899          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1900          0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1901         {
1902          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1903          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1904          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1905          0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1906         {
1907          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1908          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1909          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1910          0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1911         {
1912          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1913          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1914          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1915          0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1916         {
1917          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1918          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1919          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1920          0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1921         {
1922          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1923          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1924          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1925          0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1926         {
1927          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1928          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1929          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1930          0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1931         {
1932          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1933          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1934          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1935          0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1936         {
1937          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1938          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1939          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1940          0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1941         {
1942          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1943          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1944          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1945          0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1946         {
1947          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1948          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1949          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1950          0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1951         {
1952          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1953          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1954          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1955          0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1956         {
1957          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1958          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1959          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1960          0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1961         {
1962          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1963          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1964          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1965          0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1966         {
1967          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1968          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1969          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1970          0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1971         {
1972          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1973          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1974          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1975          0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1976         {
1977          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1978          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1979          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1980          0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1981         {
1982          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1983          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1984          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1985          0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1986         {
1987          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1988          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1989          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1990          0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1991         {
1992          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1993          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1994          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1995          0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1996         {
1997          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1998          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1999          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2000          0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2001         {
2002          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2003          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2004          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2005          0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2006         {
2007          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2008          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2009          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2010          0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2011         {
2012          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2013          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2014          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2015          0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2016         {
2017          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2018          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2019          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2020          0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2021         {
2022          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2023          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2024          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2025          0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2026         {
2027          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2028          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2029          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2030          0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2031         {
2032          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2033          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2034          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2035          0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2036         {
2037          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2038          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2039          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2040          0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2041         {
2042          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2043          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2044          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2045          0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2046         {
2047          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2048          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2049          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2050          0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2051         {
2052          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2053          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2054          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2055          0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2056         {
2057          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2058          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2059          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2060          0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2061         {
2062          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2063          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2064          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2065          0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2066         {
2067          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2068          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2069          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2070          0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2071         {
2072          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2073          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2074          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2075          0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2076         {
2077          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2078          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2079          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2080          0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2081         {
2082          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2083          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2084          0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2085          0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2086         {
2087          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2088          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2089          0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2090          0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2091         {
2092          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2093          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2094          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2095          0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2096         {
2097          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2098          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2099          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2100          0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2101         {
2102          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2103          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2104          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2105          0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2106         {
2107          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2108          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2109          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2110          0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2111         {
2112          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2113          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2114          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2115          0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2116         {
2117          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2118          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2119          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2120          0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2121         {
2122          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2123          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2124          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2125          0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2126         {
2127          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2128          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2129          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2130          0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2131         {
2132          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2133          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2134          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2135          0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2136         {
2137          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2138          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2139          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2140          0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2141         {
2142          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2143          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2144          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2145          0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2146         {
2147          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2148          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2149          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2150          0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2151         {
2152          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2153          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2154          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2155          0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2156         {
2157          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2158          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2159          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2160          0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2161 };
2162
2163 static chan_info_nphy_radio205x_t chan_info_nphyrev5_2056v5[] = {
2164         {
2165          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2166          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2167          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2168          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2169         {
2170          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2171          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2172          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2173          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2174         {
2175          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2176          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2177          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2178          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2179         {
2180          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2181          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2182          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2183          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2184         {
2185          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2186          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2187          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2188          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2189         {
2190          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2191          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2192          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2193          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2194         {
2195          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2196          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2197          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2198          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2199         {
2200          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2201          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2202          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2203          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2204         {
2205          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2206          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2207          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2208          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2209         {
2210          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2211          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2212          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2213          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2214         {
2215          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2216          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2217          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2218          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2219         {
2220          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2221          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2222          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2223          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2224         {
2225          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2226          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2227          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2228          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2229         {
2230          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2231          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2232          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2233          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2234         {
2235          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2236          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2237          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2238          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2239         {
2240          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2241          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2242          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2243          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2244         {
2245          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2246          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2247          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2248          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2249         {
2250          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2251          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2252          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2253          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2254         {
2255          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2256          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2257          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2258          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2259         {
2260          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2261          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2262          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2263          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2264         {
2265          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2266          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2267          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2268          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2269         {
2270          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2271          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2272          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2273          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2274         {
2275          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2276          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2277          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2278          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2279         {
2280          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2281          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2282          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2283          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2284         {
2285          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2286          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2287          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2288          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2289         {
2290          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2291          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2292          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2293          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2294         {
2295          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2296          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2297          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2298          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2299         {
2300          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2301          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2302          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2303          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2304         {
2305          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2306          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2307          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2308          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2309         {
2310          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2311          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2312          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2313          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2314         {
2315          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2316          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2317          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2318          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2319         {
2320          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2321          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2322          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2323          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2324         {
2325          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2326          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2327          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2328          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2329         {
2330          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2331          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2332          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2333          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2334         {
2335          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2336          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2337          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2338          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2339         {
2340          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2341          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2342          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2343          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2344         {
2345          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2346          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2347          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2348          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2349         {
2350          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2351          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2352          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2353          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2354         {
2355          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2356          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2357          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2358          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2359         {
2360          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2361          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2362          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2363          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2364         {
2365          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2366          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2367          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2368          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2369         {
2370          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2371          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2372          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2373          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2374         {
2375          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2376          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2377          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2378          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2379         {
2380          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2381          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2382          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2383          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2384         {
2385          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2386          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2387          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2388          0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2389         {
2390          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2391          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2392          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2393          0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2394         {
2395          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2396          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2397          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2398          0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2399         {
2400          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2401          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2402          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2403          0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2404         {
2405          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2406          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2407          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2408          0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2409         {
2410          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2411          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2412          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2413          0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2414         {
2415          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2416          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2417          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2418          0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2419         {
2420          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2421          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2422          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2423          0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2424         {
2425          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2426          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2427          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2428          0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2429         {
2430          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2431          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2432          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2433          0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2434         {
2435          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2436          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2437          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2438          0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2439         {
2440          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2441          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2442          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2443          0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2444         {
2445          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2446          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2447          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2448          0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2449         {
2450          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2451          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2452          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2453          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2454         {
2455          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2456          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2457          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2458          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2459         {
2460          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2461          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2462          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2463          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2464         {
2465          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2466          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2467          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2468          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2469         {
2470          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2471          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2472          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2473          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2474         {
2475          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2476          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2477          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2478          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2479         {
2480          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2481          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2482          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2483          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2484         {
2485          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2486          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2487          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2488          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2489         {
2490          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2491          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2492          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2493          0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2494         {
2495          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2496          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2497          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2498          0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2499         {
2500          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2501          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2502          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2503          0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2504         {
2505          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2506          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2507          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2508          0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2509         {
2510          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2511          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2512          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2513          0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2514         {
2515          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2516          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2517          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2518          0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2519         {
2520          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2521          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2522          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2523          0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2524         {
2525          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2526          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2527          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2528          0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2529         {
2530          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2531          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2532          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2533          0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2534         {
2535          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2536          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2537          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2538          0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2539         {
2540          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2541          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2542          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2543          0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2544         {
2545          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2546          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2547          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2548          0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2549         {
2550          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2551          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2552          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2553          0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2554         {
2555          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2556          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2557          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2558          0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2559         {
2560          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2561          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2562          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2563          0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2564         {
2565          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2566          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2567          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2568          0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2569         {
2570          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2571          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2572          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2573          0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2574         {
2575          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2576          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2577          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2578          0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2579         {
2580          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2581          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2582          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2583          0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2584         {
2585          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2586          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2587          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2588          0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2589         {
2590          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2591          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2592          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2593          0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2594         {
2595          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2596          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2597          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2598          0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2599         {
2600          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2601          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2602          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2603          0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2604         {
2605          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2606          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2607          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2608          0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2609         {
2610          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2611          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2612          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2613          0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2614         {
2615          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2616          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2617          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2618          0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2619         {
2620          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2621          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2622          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2623          0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2624         {
2625          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2626          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2627          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2628          0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2629         {
2630          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2631          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2632          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2633          0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2634         {
2635          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2636          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2637          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2638          0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2639         {
2640          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2641          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2642          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2643          0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2644         {
2645          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2646          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2647          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2648          0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2649         {
2650          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2651          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2652          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2653          0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2654         {
2655          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2656          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2657          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2658          0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2659         {
2660          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2661          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2662          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2663          0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2664         {
2665          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2666          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2667          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2668          0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2669         {
2670          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2671          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2672          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2673          0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2674         {
2675          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2676          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2677          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2678          0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2679         {
2680          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2681          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2682          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2683          0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2684         {
2685          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2686          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2687          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2688          0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2689         {
2690          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2691          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2692          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2693          0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2694         {
2695          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2696          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2697          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2698          0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2699         {
2700          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2701          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2702          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2703          0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2704         {
2705          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2706          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2707          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2708          0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2709         {
2710          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2711          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2712          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2713          0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2714         {
2715          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2716          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2717          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2718          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2719         {
2720          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2721          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2722          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2723          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2724         {
2725          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2726          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2727          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2728          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2729         {
2730          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2731          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2732          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2733          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2734         {
2735          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2736          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2737          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2738          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2739         {
2740          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2741          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2742          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2743          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2744         {
2745          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2746          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2747          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2748          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2749         {
2750          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2751          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2752          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2753          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2754         {
2755          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2756          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2757          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2758          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2759         {
2760          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2761          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2762          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2763          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2764         {
2765          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2766          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2767          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2768          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2769         {
2770          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2771          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2772          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2773          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2774         {
2775          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2776          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2777          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2778          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2779         {
2780          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2781          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2782          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2783          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2784 };
2785
2786 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v6[] = {
2787         {
2788          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2789          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2790          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2791          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2792         {
2793          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2794          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2795          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2796          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2797         {
2798          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2799          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2800          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2801          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2802         {
2803          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2804          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2805          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2806          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2807         {
2808          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2809          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2810          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2811          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2812         {
2813          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2814          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2815          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2816          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2817         {
2818          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2819          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2820          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2821          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2822         {
2823          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2824          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2825          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2826          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2827         {
2828          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2829          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2830          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2831          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2832         {
2833          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2834          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2835          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2836          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2837         {
2838          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2839          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2840          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2841          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2842         {
2843          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2844          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2845          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2846          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2847         {
2848          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2849          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2850          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2851          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2852         {
2853          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2854          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2855          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2856          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2857         {
2858          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2859          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2860          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2861          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2862         {
2863          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2864          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2865          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2866          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2867         {
2868          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2869          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2870          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2871          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2872         {
2873          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2874          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2875          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2876          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2877         {
2878          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2879          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2880          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2881          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2882         {
2883          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2884          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2885          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2886          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2887         {
2888          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2889          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2890          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2891          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2892         {
2893          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2894          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2895          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2896          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2897         {
2898          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2899          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2900          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2901          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2902         {
2903          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2904          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2905          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2906          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2907         {
2908          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2909          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2910          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2911          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2912         {
2913          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2914          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2915          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2916          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2917         {
2918          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2919          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2920          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2921          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2922         {
2923          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2924          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2925          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2926          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2927         {
2928          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2929          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2930          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2931          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2932         {
2933          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2934          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2935          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2936          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2937         {
2938          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2939          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2940          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2941          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2942         {
2943          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2944          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2945          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2946          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2947         {
2948          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2949          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2950          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2951          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2952         {
2953          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2954          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2955          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2956          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2957         {
2958          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2959          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2960          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2961          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2962         {
2963          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2964          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2965          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2966          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2967         {
2968          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2969          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2970          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2971          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2972         {
2973          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2974          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2975          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2976          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2977         {
2978          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2979          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2980          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2981          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2982         {
2983          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2984          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
2985          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2986          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2987         {
2988          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2989          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
2990          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
2991          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2992         {
2993          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2994          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
2995          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
2996          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2997         {
2998          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2999          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3000          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3001          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3002         {
3003          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3004          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3005          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3006          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3007         {
3008          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3009          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3010          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3011          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3012         {
3013          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3014          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3015          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3016          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3017         {
3018          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3019          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3020          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3021          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3022         {
3023          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3024          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3025          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3026          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3027         {
3028          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3029          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3030          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3031          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3032         {
3033          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3034          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3035          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3036          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3037         {
3038          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3039          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3040          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3041          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3042         {
3043          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3044          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3045          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3046          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3047         {
3048          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3049          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3050          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3051          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3052         {
3053          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3054          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3055          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3056          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3057         {
3058          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3059          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3060          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3061          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3062         {
3063          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3064          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3065          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3066          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3067         {
3068          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3069          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3070          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3071          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3072         {
3073          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3074          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3075          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3076          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3077         {
3078          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3079          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3080          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3081          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3082         {
3083          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3084          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3085          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3086          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3087         {
3088          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3089          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3090          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3091          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3092         {
3093          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3094          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3095          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3096          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3097         {
3098          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3099          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3100          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3101          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3102         {
3103          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3104          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3105          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3106          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3107         {
3108          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3109          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3110          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3111          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3112         {
3113          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3114          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3115          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3116          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3117         {
3118          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3119          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3120          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3121          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3122         {
3123          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3124          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3125          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3126          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3127         {
3128          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3129          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3130          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3131          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3132         {
3133          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3134          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3135          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3136          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3137         {
3138          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3139          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3140          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3141          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3142         {
3143          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3144          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3145          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3146          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3147         {
3148          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3149          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3150          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3151          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3152         {
3153          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3154          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3155          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3156          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3157         {
3158          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3159          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3160          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3161          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3162         {
3163          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3164          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3165          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3166          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3167         {
3168          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3169          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3170          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3171          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3172         {
3173          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3174          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3175          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3176          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3177         {
3178          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3179          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3180          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3181          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3182         {
3183          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3184          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3185          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3186          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3187         {
3188          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3189          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3190          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3191          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3192         {
3193          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3194          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3195          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3196          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3197         {
3198          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3199          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3200          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3201          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3202         {
3203          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3204          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3205          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3206          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3207         {
3208          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3209          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3210          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3211          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3212         {
3213          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3214          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3215          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3216          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3217         {
3218          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3219          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3220          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3221          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3222         {
3223          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3224          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3225          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3226          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3227         {
3228          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3229          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3230          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3231          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3232         {
3233          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3234          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3235          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3236          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3237         {
3238          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3239          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3240          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3241          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3242         {
3243          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3244          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3245          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3246          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3247         {
3248          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3249          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3250          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3251          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3252         {
3253          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3254          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3255          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3256          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3257         {
3258          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3259          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3260          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3261          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3262         {
3263          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3264          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3265          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3266          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3267         {
3268          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3269          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3270          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3271          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3272         {
3273          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3274          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3275          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3276          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3277         {
3278          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3279          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3280          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3281          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3282         {
3283          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3284          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3285          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3286          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3287         {
3288          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3289          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3290          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3291          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3292         {
3293          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3294          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3295          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3296          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3297         {
3298          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3299          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3300          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3301          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3302         {
3303          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3304          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3305          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3306          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3307         {
3308          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3309          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3310          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3311          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3312         {
3313          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3314          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3315          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3316          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3317         {
3318          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3319          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3320          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3321          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3322         {
3323          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3324          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3325          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3326          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3327         {
3328          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3329          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3330          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3331          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3332         {
3333          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3334          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3335          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3336          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3337         {
3338          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3339          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3340          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3341          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3342         {
3343          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3344          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3345          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3346          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3347         {
3348          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3349          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3350          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3351          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3352         {
3353          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3354          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3355          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3356          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3357         {
3358          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3359          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3360          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3361          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3362         {
3363          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3364          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3365          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3366          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3367         {
3368          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3369          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3370          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3371          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3372         {
3373          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3374          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3375          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3376          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3377         {
3378          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3379          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3380          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3381          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3382         {
3383          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3384          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3385          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3386          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3387         {
3388          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3389          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3390          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3391          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3392         {
3393          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3394          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3395          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3396          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3397         {
3398          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3399          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3400          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3401          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3402         {
3403          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3404          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3405          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3406          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3407 };
3408
3409 static chan_info_nphy_radio205x_t chan_info_nphyrev5n6_2056v7[] = {
3410         {
3411          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3412          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3413          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3414          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3415         {
3416          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3417          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3418          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3419          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3420         {
3421          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3422          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3423          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3424          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3425         {
3426          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3427          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3428          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3429          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3430         {
3431          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3432          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3433          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3434          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3435         {
3436          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3437          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3438          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3439          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3440         {
3441          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3442          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3443          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3444          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3445         {
3446          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3447          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3448          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3449          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3450         {
3451          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3452          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3453          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3454          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3455         {
3456          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3457          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3458          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3459          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3460         {
3461          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3462          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3463          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3464          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3465         {
3466          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3467          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3468          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3469          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3470         {
3471          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3472          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3473          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3474          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3475         {
3476          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3477          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3478          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3479          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3480         {
3481          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3482          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3483          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3484          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3485         {
3486          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3487          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3488          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3489          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3490         {
3491          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3492          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3493          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3494          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3495         {
3496          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3497          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3498          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3499          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3500         {
3501          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3502          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3503          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3504          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3505         {
3506          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3507          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3508          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3509          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3510         {
3511          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3512          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3513          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3514          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3515         {
3516          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3517          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3518          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3519          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3520         {
3521          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3522          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3523          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3524          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3525         {
3526          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3527          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3528          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3529          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3530         {
3531          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3532          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3533          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3534          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3535         {
3536          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3537          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3538          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3539          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3540         {
3541          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3542          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3543          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3544          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3545         {
3546          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3547          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3548          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3549          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3550         {
3551          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3552          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3553          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3554          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3555         {
3556          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3557          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3558          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3559          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3560         {
3561          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3562          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3563          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3564          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3565         {
3566          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3567          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3568          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3569          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3570         {
3571          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3572          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3573          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3574          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3575         {
3576          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3577          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3578          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3579          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3580         {
3581          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3582          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3583          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3584          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3585         {
3586          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3587          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3588          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3589          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3590         {
3591          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3592          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3593          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3594          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3595         {
3596          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3597          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3598          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3599          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3600         {
3601          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3602          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3603          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3604          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3605         {
3606          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3607          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3608          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3609          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3610         {
3611          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3612          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3613          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3614          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3615         {
3616          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3617          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3618          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3619          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3620         {
3621          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3622          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3623          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3624          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3625         {
3626          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3627          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3628          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3629          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3630         {
3631          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3632          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3633          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3634          0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3635         {
3636          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3637          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3638          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3639          0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3640         {
3641          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3642          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3643          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3644          0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3645         {
3646          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3647          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3648          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3649          0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3650         {
3651          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3652          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3653          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3654          0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3655         {
3656          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3657          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3658          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3659          0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3660         {
3661          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3662          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3663          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3664          0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3665         {
3666          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3667          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3668          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3669          0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3670         {
3671          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3672          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3673          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3674          0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3675         {
3676          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3677          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3678          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3679          0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3680         {
3681          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3682          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3683          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3684          0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3685         {
3686          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3687          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3688          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3689          0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3690         {
3691          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3692          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3693          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3694          0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3695         {
3696          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3697          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3698          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3699          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3700         {
3701          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3702          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3703          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3704          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3705         {
3706          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3707          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3708          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3709          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3710         {
3711          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3712          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3713          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3714          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3715         {
3716          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3717          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3718          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3719          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3720         {
3721          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3722          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3723          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3724          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3725         {
3726          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3727          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3728          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3729          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3730         {
3731          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3732          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3733          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3734          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3735         {
3736          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3737          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3738          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3739          0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3740         {
3741          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3742          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3743          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3744          0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3745         {
3746          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3747          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3748          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3749          0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3750         {
3751          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3752          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3753          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3754          0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3755         {
3756          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3757          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3758          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3759          0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3760         {
3761          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3762          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3763          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3764          0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3765         {
3766          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3767          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3768          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3769          0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3770         {
3771          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3772          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3773          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3774          0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3775         {
3776          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3777          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3778          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3779          0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3780         {
3781          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3782          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3783          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3784          0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3785         {
3786          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3787          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3788          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3789          0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3790         {
3791          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3792          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3793          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3794          0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3795         {
3796          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3797          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3798          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3799          0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3800         {
3801          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3802          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3803          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3804          0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3805         {
3806          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3807          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3808          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3809          0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3810         {
3811          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3812          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3813          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3814          0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3815         {
3816          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3817          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3818          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3819          0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3820         {
3821          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3822          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3823          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3824          0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3825         {
3826          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3827          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3828          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3829          0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3830         {
3831          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3832          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3833          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3834          0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3835         {
3836          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3837          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3838          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3839          0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3840         {
3841          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3842          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3843          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3844          0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3845         {
3846          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3847          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3848          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3849          0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3850         {
3851          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3852          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3853          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3854          0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3855         {
3856          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3857          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3858          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3859          0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3860         {
3861          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3862          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3863          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3864          0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3865         {
3866          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3867          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3868          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3869          0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3870         {
3871          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3872          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3873          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3874          0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3875         {
3876          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3877          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3878          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3879          0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3880         {
3881          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3882          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3883          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3884          0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3885         {
3886          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3887          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3888          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3889          0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3890         {
3891          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3892          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3893          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3894          0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3895         {
3896          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3897          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3898          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3899          0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3900         {
3901          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3902          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3903          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3904          0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3905         {
3906          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3907          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3908          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3909          0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3910         {
3911          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3912          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3913          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3914          0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3915         {
3916          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3917          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3918          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3919          0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3920         {
3921          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3922          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3923          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3924          0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3925         {
3926          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3927          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3928          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3929          0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3930         {
3931          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3932          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3933          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3934          0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3935         {
3936          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3937          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3938          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3939          0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3940         {
3941          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3942          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3943          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3944          0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3945         {
3946          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3947          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3948          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3949          0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3950         {
3951          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3952          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3953          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3954          0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3955         {
3956          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3957          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3958          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3959          0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3960         {
3961          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3962          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3963          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3964          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3965         {
3966          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3967          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3968          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3969          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3970         {
3971          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3972          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3973          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3974          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3975         {
3976          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3977          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3978          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3979          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3980         {
3981          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3982          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
3983          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
3984          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3985         {
3986          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3987          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
3988          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
3989          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3990         {
3991          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3992          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
3993          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
3994          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3995         {
3996          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3997          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
3998          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
3999          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4000         {
4001          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4002          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4003          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4004          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4005         {
4006          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4007          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4008          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4009          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4010         {
4011          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4012          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4013          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4014          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4015         {
4016          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4017          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4018          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4019          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4020         {
4021          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4022          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4023          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4024          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4025         {
4026          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4027          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4028          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4029          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4030 };
4031
4032 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v8[] = {
4033         {
4034          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4035          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4036          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4037          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4038         {
4039          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4040          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4041          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4042          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4043         {
4044          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4045          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4046          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4047          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4048         {
4049          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4050          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4051          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4052          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4053         {
4054          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4055          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4056          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4057          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4058         {
4059          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4060          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4061          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4062          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4063         {
4064          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4065          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4066          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4067          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4068         {
4069          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4070          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4071          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4072          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4073         {
4074          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4075          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4076          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4077          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4078         {
4079          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4080          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4081          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4082          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4083         {
4084          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4085          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4086          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4087          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4088         {
4089          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4090          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4091          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4092          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4093         {
4094          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4095          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4096          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4097          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4098         {
4099          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4100          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4101          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4102          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4103         {
4104          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4105          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4106          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4107          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4108         {
4109          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4110          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4111          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4112          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4113         {
4114          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4115          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4116          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4117          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4118         {
4119          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4120          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4121          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4122          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4123         {
4124          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4125          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4126          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4127          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4128         {
4129          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4130          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4131          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4132          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4133         {
4134          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4135          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4136          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4137          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4138         {
4139          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4140          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4141          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4142          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4143         {
4144          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4145          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4146          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4147          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4148         {
4149          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4150          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4151          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4152          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4153         {
4154          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4155          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4156          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4157          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4158         {
4159          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4160          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4161          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4162          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4163         {
4164          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4165          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4166          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4167          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4168         {
4169          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4170          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4171          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4172          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4173         {
4174          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4175          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4176          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4177          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4178         {
4179          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4180          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4181          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4182          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4183         {
4184          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4185          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4186          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4187          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4188         {
4189          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4190          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4191          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4192          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4193         {
4194          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4195          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4196          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4197          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4198         {
4199          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4200          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4201          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4202          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4203         {
4204          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4205          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4206          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4207          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4208         {
4209          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4210          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4211          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4212          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4213         {
4214          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4215          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4216          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4217          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4218         {
4219          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4220          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4221          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4222          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4223         {
4224          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4225          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4226          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4227          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4228         {
4229          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4230          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4231          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4232          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4233         {
4234          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4235          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4236          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4237          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4238         {
4239          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4240          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4241          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4242          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4243         {
4244          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4245          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4246          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4247          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4248         {
4249          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4250          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4251          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4252          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4253         {
4254          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4255          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4256          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4257          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4258         {
4259          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4260          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4261          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4262          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4263         {
4264          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4265          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4266          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4267          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4268         {
4269          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4270          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4271          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4272          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4273         {
4274          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4275          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4276          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4277          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4278         {
4279          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4280          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4281          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4282          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4283         {
4284          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4285          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4286          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4287          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4288         {
4289          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4290          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4291          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4292          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4293         {
4294          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4295          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4296          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4297          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4298         {
4299          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4300          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4301          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4302          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4303         {
4304          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4305          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4306          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4307          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4308         {
4309          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4310          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4311          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4312          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4313         {
4314          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4315          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4316          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4317          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4318         {
4319          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4320          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4321          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4322          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4323         {
4324          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4325          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4326          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4327          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4328         {
4329          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4330          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4331          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4332          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4333         {
4334          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4335          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4336          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4337          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4338         {
4339          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4340          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4341          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4342          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4343         {
4344          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4345          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4346          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4347          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4348         {
4349          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4350          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4351          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4352          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4353         {
4354          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4355          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4356          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4357          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4358         {
4359          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4360          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4361          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4362          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4363         {
4364          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4365          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4366          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4367          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4368         {
4369          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4370          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4371          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4372          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4373         {
4374          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4375          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4376          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4377          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4378         {
4379          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4380          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4381          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4382          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4383         {
4384          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4385          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4386          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4387          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4388         {
4389          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4390          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4391          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4392          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4393         {
4394          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4395          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4396          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4397          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4398         {
4399          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4400          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4401          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4402          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4403         {
4404          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4405          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4406          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4407          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4408         {
4409          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4410          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4411          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4412          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4413         {
4414          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4415          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4416          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4417          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4418         {
4419          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4420          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4421          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4422          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4423         {
4424          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4425          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4426          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4427          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4428         {
4429          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4430          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4431          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4432          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4433         {
4434          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4435          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4436          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4437          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4438         {
4439          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4440          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4441          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4442          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4443         {
4444          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4445          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4446          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4447          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4448         {
4449          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4450          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4451          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4452          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4453         {
4454          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4455          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4456          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4457          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4458         {
4459          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4460          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4461          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4462          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4463         {
4464          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4465          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4466          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4467          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4468         {
4469          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4470          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4471          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4472          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4473         {
4474          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4475          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4476          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4477          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4478         {
4479          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4480          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4481          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4482          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4483         {
4484          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4485          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4486          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4487          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4488         {
4489          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4490          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4491          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4492          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4493         {
4494          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4495          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4496          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4497          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4498         {
4499          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4500          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4501          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4502          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4503         {
4504          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4505          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4506          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4507          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4508         {
4509          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4510          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4511          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4512          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4513         {
4514          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4515          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4516          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4517          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4518         {
4519          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4520          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4521          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4522          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4523         {
4524          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4525          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4526          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4527          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4528         {
4529          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4530          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4531          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4532          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4533         {
4534          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4535          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4536          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4537          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4538         {
4539          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4540          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4541          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4542          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4543         {
4544          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4545          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4546          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4547          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4548         {
4549          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4550          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4551          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4552          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4553         {
4554          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4555          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4556          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4557          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4558         {
4559          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4560          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4561          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4562          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4563         {
4564          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4565          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4566          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4567          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4568         {
4569          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4570          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4571          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4572          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4573         {
4574          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4575          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4576          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4577          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4578         {
4579          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4580          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4581          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4582          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4583         {
4584          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4585          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4586          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4587          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4588         {
4589          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4590          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4591          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4592          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4593         {
4594          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4595          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4596          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4597          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4598         {
4599          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4600          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4601          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4602          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4603         {
4604          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4605          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4606          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4607          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4608         {
4609          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4610          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4611          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4612          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4613         {
4614          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4615          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4616          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4617          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4618         {
4619          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4620          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4621          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4622          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4623         {
4624          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4625          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4626          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4627          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4628         {
4629          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4630          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4631          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4632          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4633         {
4634          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4635          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4636          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4637          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4638         {
4639          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4640          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4641          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4642          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4643         {
4644          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4645          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4646          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4647          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4648         {
4649          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4650          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4651          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4652          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4653 };
4654
4655 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v11[] = {
4656         {
4657          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4658          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4659          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4660          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4661         {
4662          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4663          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4664          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4665          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4666         {
4667          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4668          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4669          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4670          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4671         {
4672          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4673          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4674          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4675          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4676         {
4677          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4678          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4679          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4680          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4681         {
4682          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4683          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4684          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4685          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4686         {
4687          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4688          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4689          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4690          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4691         {
4692          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4693          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4694          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4695          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4696         {
4697          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4698          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4699          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4700          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4701         {
4702          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4703          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4704          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4705          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4706         {
4707          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4708          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4709          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4710          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4711         {
4712          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4713          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4714          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4715          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4716         {
4717          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4718          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4719          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4720          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4721         {
4722          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4723          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4724          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4725          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4726         {
4727          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4728          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4729          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4730          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4731         {
4732          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4733          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4734          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4735          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4736         {
4737          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4738          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4739          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4740          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4741         {
4742          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4743          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4744          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4745          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4746         {
4747          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4748          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4749          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4750          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4751         {
4752          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4753          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4754          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4755          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4756         {
4757          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4758          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4759          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4760          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4761         {
4762          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4763          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4764          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4765          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4766         {
4767          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4768          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4769          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4770          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4771         {
4772          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4773          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4774          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4775          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4776         {
4777          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4778          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4779          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4780          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4781         {
4782          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4783          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4784          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4785          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4786         {
4787          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4788          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4789          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4790          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4791         {
4792          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4793          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4794          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4795          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4796         {
4797          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4798          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4799          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4800          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4801         {
4802          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4803          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4804          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4805          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4806         {
4807          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4808          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4809          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4810          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4811         {
4812          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4813          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4814          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4815          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4816         {
4817          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4818          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4819          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4820          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4821         {
4822          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4823          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4824          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4825          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4826         {
4827          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4828          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4829          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4830          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4831         {
4832          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4833          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4834          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4835          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4836         {
4837          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4838          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4839          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4840          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4841         {
4842          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4843          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4844          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4845          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4846         {
4847          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4848          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4849          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4850          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4851         {
4852          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4853          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4854          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4855          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4856         {
4857          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4858          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4859          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4860          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4861         {
4862          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4863          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4864          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4865          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4866         {
4867          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4868          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4869          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4870          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4871         {
4872          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4873          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4874          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4875          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4876         {
4877          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4878          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4879          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4880          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4881         {
4882          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4883          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4884          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4885          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4886         {
4887          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4888          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4889          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4890          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4891         {
4892          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4893          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4894          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4895          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4896         {
4897          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4898          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4899          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4900          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4901         {
4902          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4903          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4904          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4905          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4906         {
4907          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4908          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4909          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4910          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4911         {
4912          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4913          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4914          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4915          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4916         {
4917          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4918          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4919          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4920          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4921         {
4922          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4923          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4924          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4925          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4926         {
4927          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4928          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4929          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4930          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4931         {
4932          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4933          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4934          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4935          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4936         {
4937          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4938          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4939          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4940          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4941         {
4942          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4943          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4944          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4945          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4946         {
4947          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4948          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4949          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4950          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4951         {
4952          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4953          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4954          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4955          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4956         {
4957          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4958          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4959          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4960          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4961         {
4962          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4963          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4964          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4965          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4966         {
4967          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4968          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4969          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4970          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4971         {
4972          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4973          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4974          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4975          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4976         {
4977          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4978          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4979          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4980          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4981         {
4982          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4983          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4984          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4985          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4986         {
4987          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4988          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4989          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4990          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4991         {
4992          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
4993          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4994          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4995          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4996         {
4997          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
4998          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4999          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5000          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5001         {
5002          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5003          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5004          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5005          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5006         {
5007          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5008          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5009          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5010          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5011         {
5012          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5013          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5014          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5015          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5016         {
5017          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5018          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5019          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5020          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5021         {
5022          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5023          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5024          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5025          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5026         {
5027          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5028          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5029          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5030          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5031         {
5032          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5033          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5034          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5035          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5036         {
5037          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5038          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5039          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5040          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5041         {
5042          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5043          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5044          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5045          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5046         {
5047          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5048          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5049          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5050          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5051         {
5052          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5053          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5054          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5055          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5056         {
5057          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5058          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5059          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5060          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5061         {
5062          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5063          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5064          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5065          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5066         {
5067          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5068          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5069          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5070          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5071         {
5072          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5073          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5074          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5075          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5076         {
5077          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5078          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5079          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5080          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5081         {
5082          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5083          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5084          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5085          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5086         {
5087          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5088          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5089          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5090          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5091         {
5092          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5093          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5094          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5095          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5096         {
5097          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5098          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5099          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5100          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5101         {
5102          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5103          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5104          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5105          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5106         {
5107          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5108          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5109          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5110          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5111         {
5112          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5113          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5114          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5115          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5116         {
5117          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5118          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5119          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5120          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5121         {
5122          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5123          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5124          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5125          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5126         {
5127          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5128          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5129          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5130          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5131         {
5132          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5133          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5134          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5135          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5136         {
5137          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5138          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5139          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5140          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5141         {
5142          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5143          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5144          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5145          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5146         {
5147          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5148          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5149          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5150          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5151         {
5152          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5153          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5154          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5155          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5156         {
5157          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5158          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5159          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5160          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5161         {
5162          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5163          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5164          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5165          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5166         {
5167          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5168          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5169          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5170          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5171         {
5172          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5173          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5174          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5175          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5176         {
5177          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5178          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5179          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5180          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5181         {
5182          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5183          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5184          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5185          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5186         {
5187          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5188          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5189          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5190          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5191         {
5192          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5193          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5194          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5195          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5196         {
5197          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5198          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5199          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5200          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5201         {
5202          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5203          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5204          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5205          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5206         {
5207          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5208          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5209          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5210          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5211         {
5212          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5213          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5214          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5215          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5216         {
5217          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5218          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5219          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5220          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5221         {
5222          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5223          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5224          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5225          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5226         {
5227          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5228          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5229          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5230          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5231         {
5232          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5233          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5234          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5235          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5236         {
5237          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5238          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5239          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5240          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5241         {
5242          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5243          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5244          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5245          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5246         {
5247          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5248          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5249          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5250          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5251         {
5252          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5253          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5254          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5255          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5256         {
5257          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5258          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5259          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5260          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5261         {
5262          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5263          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5264          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5265          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5266         {
5267          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5268          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5269          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5270          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5271         {
5272          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5273          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5274          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5275          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5276 };
5277
5278 static chan_info_nphy_radio2057_t chan_info_nphyrev7_2057_rev4[] = {
5279         {
5280          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5281          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5282          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5283          0x0215,
5284          0x0216,
5285          },
5286         {
5287          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5288          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5289          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5290          0x0214,
5291          0x0215,
5292          },
5293         {
5294          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5295          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5296          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5297          0x0213,
5298          0x0214,
5299          },
5300         {
5301          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5302          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5303          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5304          0x0212,
5305          0x0213,
5306          },
5307         {
5308          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5309          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5310          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5311          0x0211,
5312          0x0212,
5313          },
5314         {
5315          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5316          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5317          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5318          0x020f,
5319          0x0211,
5320          },
5321         {
5322          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5323          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5324          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5325          0x020e,
5326          0x020f,
5327          },
5328         {
5329          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5330          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5331          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5332          0x020d,
5333          0x020e,
5334          },
5335         {
5336          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5337          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5338          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5339          0x020c,
5340          0x020d,
5341          },
5342         {
5343          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5344          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5345          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5346          0x020b,
5347          0x020c,
5348          },
5349         {
5350          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5351          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5352          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5353          0x020a,
5354          0x020b,
5355          },
5356         {
5357          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5358          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5359          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5360          0x0209,
5361          0x020a,
5362          },
5363         {
5364          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5365          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5366          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5367          0x0208,
5368          0x0209,
5369          },
5370         {
5371          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5372          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5373          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5374          0x0207,
5375          0x0208,
5376          },
5377         {
5378          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5379          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5380          0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5381          0x0206,
5382          0x0207,
5383          },
5384         {
5385          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5386          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5387          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5388          0x0205,
5389          0x0206,
5390          },
5391         {
5392          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5393          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5394          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5395          0x0204,
5396          0x0205,
5397          },
5398         {
5399          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5400          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5401          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5402          0x0203,
5403          0x0204,
5404          },
5405         {
5406          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5407          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5408          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5409          0x0202,
5410          0x0203,
5411          },
5412         {
5413          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5414          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5415          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5416          0x0201,
5417          0x0202,
5418          },
5419         {
5420          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5421          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5422          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5423          0x0200,
5424          0x0201,
5425          },
5426         {
5427          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5428          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5429          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5430          0x01ff,
5431          0x0200,
5432          },
5433         {
5434          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5435          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5436          0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5437          0x01fe,
5438          0x01ff,
5439          },
5440         {
5441          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5442          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5443          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5444          0x01fc,
5445          0x01fd,
5446          },
5447         {
5448          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5449          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5450          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5451          0x01fb,
5452          0x01fc,
5453          },
5454         {
5455          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5456          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5457          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5458          0x01fa,
5459          0x01fb,
5460          },
5461         {
5462          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5463          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5464          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5465          0x01f9,
5466          0x01fa,
5467          },
5468         {
5469          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5470          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5471          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5472          0x01f8,
5473          0x01f9,
5474          },
5475         {
5476          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5477          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5478          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5479          0x01f7,
5480          0x01f8,
5481          },
5482         {
5483          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5484          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5485          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5486          0x01f6,
5487          0x01f7,
5488          },
5489         {
5490          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5491          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5492          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5493          0x01f5,
5494          0x01f6,
5495          },
5496         {
5497          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5498          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5499          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5500          0x01f4,
5501          0x01f5,
5502          },
5503         {
5504          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5505          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5506          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5507          0x01f3,
5508          0x01f4,
5509          },
5510         {
5511          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5512          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5513          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5514          0x01f2,
5515          0x01f3,
5516          },
5517         {
5518          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5519          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5520          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5521          0x01f1,
5522          0x01f2,
5523          },
5524         {
5525          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5526          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5527          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5528          0x01f0,
5529          0x01f1,
5530          },
5531         {
5532          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5533          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5534          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5535          0x01f0,
5536          0x01f0,
5537          },
5538         {
5539          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5540          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5541          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5542          0x01ef,
5543          0x01f0,
5544          },
5545         {
5546          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5547          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5548          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5549          0x01ee,
5550          0x01ef,
5551          },
5552         {
5553          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5554          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5555          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5556          0x01ed,
5557          0x01ee,
5558          },
5559         {
5560          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5561          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5562          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5563          0x01ec,
5564          0x01ed,
5565          },
5566         {
5567          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5568          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5569          0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5570          0x01eb,
5571          0x01ec,
5572          },
5573         {
5574          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5575          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5576          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5577          0x01ea,
5578          0x01eb,
5579          },
5580         {
5581          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5582          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5583          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5584          0x01e9,
5585          0x01ea,
5586          },
5587         {
5588          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5589          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5590          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5591          0x01e8,
5592          0x01e9,
5593          },
5594         {
5595          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5596          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5597          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5598          0x01e7,
5599          0x01e8,
5600          },
5601         {
5602          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5603          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5604          0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5605          0x01e6,
5606          0x01e7,
5607          },
5608         {
5609          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5610          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5611          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5612          0x01e5,
5613          0x01e6,
5614          },
5615         {
5616          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5617          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5618          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5619          0x01e5,
5620          0x01e5,
5621          },
5622         {
5623          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5624          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5625          0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5626          0x01e4,
5627          0x01e5,
5628          },
5629         {
5630          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5631          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5632          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5633          0x01e3,
5634          0x01e4,
5635          },
5636         {
5637          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5638          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5639          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5640          0x01e2,
5641          0x01e3,
5642          },
5643         {
5644          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5645          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5646          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5647          0x01e1,
5648          0x01e2,
5649          },
5650         {
5651          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5652          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5653          0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5654          0x01e0,
5655          0x01e1,
5656          },
5657         {
5658          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5659          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5660          0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5661          0x01df,
5662          0x01e0,
5663          },
5664         {
5665          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5666          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5667          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5668          0x01de,
5669          0x01df,
5670          },
5671         {
5672          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5673          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5674          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5675          0x01dd,
5676          0x01de,
5677          },
5678         {
5679          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5680          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5681          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5682          0x01dd,
5683          0x01dd,
5684          },
5685         {
5686          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5687          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5688          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5689          0x01dc,
5690          0x01dd,
5691          },
5692         {
5693          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5694          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5695          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5696          0x01db,
5697          0x01dc,
5698          },
5699         {
5700          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5701          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5702          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5703          0x01da,
5704          0x01db,
5705          },
5706         {
5707          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5708          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5709          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5710          0x01d9,
5711          0x01da,
5712          },
5713         {
5714          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5715          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5716          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5717          0x01d8,
5718          0x01d9,
5719          },
5720         {
5721          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5722          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5723          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5724          0x01d7,
5725          0x01d8,
5726          },
5727         {
5728          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5729          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5730          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5731          0x01d7,
5732          0x01d7,
5733          },
5734         {
5735          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5736          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5737          0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5738          0x01d6,
5739          0x01d7,
5740          },
5741         {
5742          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5743          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5744          0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5745          0x01d5,
5746          0x01d6,
5747          },
5748         {
5749          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5750          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5751          0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5752          0x01d4,
5753          0x01d5,
5754          },
5755         {
5756          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5757          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5758          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5759          0x01d3,
5760          0x01d4,
5761          },
5762         {
5763          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5764          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5765          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5766          0x01d2,
5767          0x01d3,
5768          },
5769         {
5770          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5771          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5772          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5773          0x01d2,
5774          0x01d2,
5775          },
5776         {
5777          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5778          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5779          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5780          0x01d1,
5781          0x01d2,
5782          },
5783         {
5784          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5785          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5786          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5787          0x01d0,
5788          0x01d1,
5789          },
5790         {
5791          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5792          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5793          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5794          0x01cf,
5795          0x01d0,
5796          },
5797         {
5798          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5799          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5800          0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5801          0x01ce,
5802          0x01cf,
5803          },
5804         {
5805          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5806          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5807          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5808          0x01ce,
5809          0x01ce,
5810          },
5811         {
5812          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5813          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5814          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5815          0x01cd,
5816          0x01ce,
5817          },
5818         {
5819          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5820          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5821          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5822          0x01cc,
5823          0x01cd,
5824          },
5825         {
5826          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5827          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5828          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5829          0x01cb,
5830          0x01cc,
5831          },
5832         {
5833          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5834          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5835          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5836          0x01ca,
5837          0x01cb,
5838          },
5839         {
5840          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5841          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5842          0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5843          0x01ca,
5844          0x01cb,
5845          },
5846         {
5847          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5848          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5849          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5850          0x01c9,
5851          0x01ca,
5852          },
5853         {
5854          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5855          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5856          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5857          0x01c9,
5858          0x01ca,
5859          },
5860         {
5861          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5862          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5863          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5864          0x01c9,
5865          0x01c9,
5866          },
5867         {
5868          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5869          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5870          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5871          0x01c8,
5872          0x01c9,
5873          },
5874         {
5875          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5876          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5877          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5878          0x01c8,
5879          0x01c9,
5880          },
5881         {
5882          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5883          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5884          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5885          0x01c8,
5886          0x01c8,
5887          },
5888         {
5889          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5890          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5891          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5892          0x01c7,
5893          0x01c8,
5894          },
5895         {
5896          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5897          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5898          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5899          0x01c7,
5900          0x01c8,
5901          },
5902         {
5903          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5904          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5905          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5906          0x01c6,
5907          0x01c7,
5908          },
5909         {
5910          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5911          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5912          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5913          0x01c6,
5914          0x01c7,
5915          },
5916         {
5917          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5918          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5919          0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5920          0x01c6,
5921          0x01c6,
5922          },
5923         {
5924          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5925          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5926          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5927          0x01c5,
5928          0x01c6,
5929          },
5930         {
5931          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5932          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5933          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5934          0x01c5,
5935          0x01c6,
5936          },
5937         {
5938          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5939          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5940          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5941          0x01c4,
5942          0x01c5,
5943          },
5944         {
5945          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5946          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5947          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5948          0x01c4,
5949          0x01c5,
5950          },
5951         {
5952          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5953          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5954          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5955          0x01c4,
5956          0x01c4,
5957          },
5958         {
5959          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5960          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5961          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5962          0x01c3,
5963          0x01c4,
5964          },
5965         {
5966          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5967          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5968          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
5969          0x01c3,
5970          0x01c4,
5971          },
5972         {
5973          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
5974          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5975          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
5976          0x01c2,
5977          0x01c3,
5978          },
5979         {
5980          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
5981          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5982          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
5983          0x01c2,
5984          0x01c3,
5985          },
5986         {
5987          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
5988          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5989          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
5990          0x01c2,
5991          0x01c2,
5992          },
5993         {
5994          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
5995          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5996          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
5997          0x01c1,
5998          0x01c2,
5999          },
6000         {
6001          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6002          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6003          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6004          0x01c0,
6005          0x01c1,
6006          },
6007         {
6008          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6009          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6010          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6011          0x01bf,
6012          0x01c0,
6013          },
6014         {
6015          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6016          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6017          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6018          0x01bf,
6019          0x01bf,
6020          },
6021         {
6022          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6023          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6024          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6025          0x01be,
6026          0x01bf,
6027          },
6028         {
6029          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6030          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6031          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6032          0x01bd,
6033          0x01be,
6034          },
6035         {
6036          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6037          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6038          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6039          0x01bc,
6040          0x01bd,
6041          },
6042         {
6043          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6044          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6045          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6046          0x043f,
6047          0x0443,
6048          },
6049         {
6050          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6051          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6052          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6053          0x043d,
6054          0x0441,
6055          },
6056         {
6057          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6058          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6059          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6060          0x043a,
6061          0x043f,
6062          },
6063         {
6064          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6065          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6066          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6067          0x0438,
6068          0x043d,
6069          },
6070         {
6071          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6072          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6073          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6074          0x0436,
6075          0x043a,
6076          },
6077         {
6078          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6079          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6080          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6081          0x0434,
6082          0x0438,
6083          },
6084         {
6085          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6086          0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6087          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6088          0x0431,
6089          0x0436,
6090          },
6091         {
6092          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6093          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6094          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6095          0x042f,
6096          0x0434,
6097          },
6098         {
6099          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6100          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6101          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6102          0x042d,
6103          0x0431,
6104          },
6105         {
6106          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6107          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6108          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6109          0x042b,
6110          0x042f,
6111          },
6112         {
6113          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6114          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6115          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6116          0x0429,
6117          0x042d,
6118          },
6119         {
6120          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6121          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6122          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6123          0x0427,
6124          0x042b,
6125          },
6126         {
6127          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6128          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6129          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6130          0x0424,
6131          0x0429,
6132          },
6133         {
6134          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6135          0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6136          0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6137          0x041f,
6138          0x0424}
6139 };
6140
6141 static chan_info_nphy_radio2057_rev5_t chan_info_nphyrev8_2057_rev5[] = {
6142         {
6143          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6144          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6145          0x043a, 0x043f, 0x0443},
6146         {
6147          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6148          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6149          0x0438, 0x043d, 0x0441},
6150         {
6151          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6152          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6153          0x0436, 0x043a, 0x043f},
6154         {
6155          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6156          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6157          0x0434, 0x0438, 0x043d},
6158         {
6159          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6160          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6161          0x0431, 0x0436, 0x043a},
6162         {
6163          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6164          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6165          0x042f, 0x0434, 0x0438},
6166         {
6167          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6168          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6169          0x042d, 0x0431, 0x0436},
6170         {
6171          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6172          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6173          0x042b, 0x042f, 0x0434},
6174         {
6175          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6176          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6177          0x0429, 0x042d, 0x0431},
6178         {
6179          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6180          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6181          0x0427, 0x042b, 0x042f},
6182         {
6183          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6184          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6185          0x0424, 0x0429, 0x042d},
6186         {
6187          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6188          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6189          0x0422, 0x0427, 0x042b},
6190         {
6191          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6192          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6193          0x0420, 0x0424, 0x0429},
6194         {
6195          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6196          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6197          0x041b, 0x041f, 0x0424}
6198 };
6199
6200 static chan_info_nphy_radio2057_rev5_t chan_info_nphyrev9_2057_rev5v1[] = {
6201         {
6202          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6203          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6204          0x043a, 0x043f, 0x0443},
6205         {
6206          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6207          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6208          0x0438, 0x043d, 0x0441},
6209         {
6210          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6211          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6212          0x0436, 0x043a, 0x043f},
6213         {
6214          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6215          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6216          0x0434, 0x0438, 0x043d},
6217         {
6218          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6219          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6220          0x0431, 0x0436, 0x043a},
6221         {
6222          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6223          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6224          0x042f, 0x0434, 0x0438},
6225         {
6226          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6227          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6228          0x042d, 0x0431, 0x0436},
6229         {
6230          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6231          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6232          0x042b, 0x042f, 0x0434},
6233         {
6234          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6235          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6236          0x0429, 0x042d, 0x0431},
6237         {
6238          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6239          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6240          0x0427, 0x042b, 0x042f},
6241         {
6242          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6243          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6244          0x0424, 0x0429, 0x042d},
6245         {
6246          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6247          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6248          0x0422, 0x0427, 0x042b},
6249         {
6250          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6251          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6252          0x0420, 0x0424, 0x0429},
6253         {
6254          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6255          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6256          0x041b, 0x041f, 0x0424}
6257 };
6258
6259 static chan_info_nphy_radio2057_t chan_info_nphyrev8_2057_rev7[] = {
6260         {
6261          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6262          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6263          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6264          0x0215,
6265          0x0216},
6266         {
6267          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6268          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6269          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6270          0x0214,
6271          0x0215},
6272         {
6273          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6274          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6275          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6276          0x0213,
6277          0x0214},
6278         {
6279          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6280          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6281          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6282          0x0212,
6283          0x0213},
6284         {
6285          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6286          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6287          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6288          0x0211,
6289          0x0212},
6290         {
6291          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6292          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6293          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6294          0x020f,
6295          0x0211},
6296         {
6297          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6298          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6299          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6300          0x020e,
6301          0x020f},
6302         {
6303          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6304          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6305          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6306          0x020d,
6307          0x020e},
6308         {
6309          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6310          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6311          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6312          0x020c,
6313          0x020d},
6314         {
6315          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6316          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6317          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6318          0x020b,
6319          0x020c},
6320         {
6321          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6322          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6323          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6324          0x020a,
6325          0x020b},
6326         {
6327          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6328          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6329          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6330          0x0209,
6331          0x020a},
6332         {
6333          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6334          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6335          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6336          0x0208,
6337          0x0209},
6338         {
6339          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6340          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6341          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6342          0x0207,
6343          0x0208},
6344         {
6345          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6346          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6347          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6348          0x0206,
6349          0x0207},
6350         {
6351          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6352          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6353          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6354          0x0205,
6355          0x0206},
6356         {
6357          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6358          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6359          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6360          0x0204,
6361          0x0205},
6362         {
6363          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6364          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6365          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6366          0x0203,
6367          0x0204},
6368         {
6369          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6370          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6371          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6372          0x0202,
6373          0x0203},
6374         {
6375          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6376          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6377          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6378          0x0201,
6379          0x0202},
6380         {
6381          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6382          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6383          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6384          0x0200,
6385          0x0201},
6386         {
6387          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6388          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6389          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6390          0x01ff,
6391          0x0200},
6392         {
6393          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6394          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6395          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6396          0x01fe,
6397          0x01ff},
6398         {
6399          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6400          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6401          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6402          0x01fc,
6403          0x01fd},
6404         {
6405          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6406          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6407          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6408          0x01fb,
6409          0x01fc},
6410         {
6411          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6412          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6413          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6414          0x01fa,
6415          0x01fb},
6416         {
6417          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6418          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6419          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6420          0x01f9,
6421          0x01fa},
6422         {
6423          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6424          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6425          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6426          0x01f8,
6427          0x01f9},
6428         {
6429          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6430          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6431          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6432          0x01f7,
6433          0x01f8},
6434         {
6435          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6436          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6437          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6438          0x01f6,
6439          0x01f7},
6440         {
6441          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6442          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6443          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6444          0x01f5,
6445          0x01f6},
6446         {
6447          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6448          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6449          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6450          0x01f4,
6451          0x01f5},
6452         {
6453          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6454          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6455          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6456          0x01f3,
6457          0x01f4},
6458         {
6459          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6460          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6461          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6462          0x01f2,
6463          0x01f3},
6464         {
6465          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6466          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6467          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6468          0x01f1,
6469          0x01f2},
6470         {
6471          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6472          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6473          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6474          0x01f0,
6475          0x01f1},
6476         {
6477          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6478          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6479          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6480          0x01f0,
6481          0x01f0},
6482         {
6483          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6484          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6485          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6486          0x01ef,
6487          0x01f0},
6488         {
6489          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6490          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6491          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6492          0x01ee,
6493          0x01ef},
6494         {
6495          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6496          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6497          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6498          0x01ed,
6499          0x01ee},
6500         {
6501          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6502          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6503          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6504          0x01ec,
6505          0x01ed},
6506         {
6507          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6508          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6509          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6510          0x01eb,
6511          0x01ec},
6512         {
6513          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6514          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6515          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6516          0x01ea,
6517          0x01eb},
6518         {
6519          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6520          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6521          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6522          0x01e9,
6523          0x01ea},
6524         {
6525          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6526          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6527          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6528          0x01e8,
6529          0x01e9},
6530         {
6531          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6532          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6533          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6534          0x01e7,
6535          0x01e8},
6536         {
6537          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6538          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6539          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6540          0x01e6,
6541          0x01e7},
6542         {
6543          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6544          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6545          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6546          0x01e5,
6547          0x01e6},
6548         {
6549          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6550          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6551          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6552          0x01e5,
6553          0x01e5},
6554         {
6555          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6556          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6557          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6558          0x01e4,
6559          0x01e5},
6560         {
6561          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6562          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6563          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6564          0x01e3,
6565          0x01e4},
6566         {
6567          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6568          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6569          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6570          0x01e2,
6571          0x01e3},
6572         {
6573          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6574          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6575          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6576          0x01e1,
6577          0x01e2},
6578         {
6579          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6580          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6581          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6582          0x01e0,
6583          0x01e1},
6584         {
6585          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6586          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6587          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6588          0x01df,
6589          0x01e0},
6590         {
6591          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6592          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6593          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6594          0x01de,
6595          0x01df},
6596         {
6597          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6598          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6599          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6600          0x01dd,
6601          0x01de},
6602         {
6603          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6604          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6605          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6606          0x01dd,
6607          0x01dd},
6608         {
6609          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6610          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6611          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6612          0x01dc,
6613          0x01dd},
6614         {
6615          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6616          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6617          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6618          0x01db,
6619          0x01dc},
6620         {
6621          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6622          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6623          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6624          0x01da,
6625          0x01db},
6626         {
6627          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6628          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6629          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6630          0x01d9,
6631          0x01da},
6632         {
6633          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6634          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6635          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6636          0x01d8,
6637          0x01d9},
6638         {
6639          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6640          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6641          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6642          0x01d7,
6643          0x01d8},
6644         {
6645          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6646          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6647          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6648          0x01d7,
6649          0x01d7},
6650         {
6651          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6652          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6653          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6654          0x01d6,
6655          0x01d7},
6656         {
6657          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6658          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6659          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6660          0x01d5,
6661          0x01d6},
6662         {
6663          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6664          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6665          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6666          0x01d4,
6667          0x01d5},
6668         {
6669          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6670          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6671          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6672          0x01d3,
6673          0x01d4},
6674         {
6675          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6676          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6677          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6678          0x01d2,
6679          0x01d3},
6680         {
6681          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6682          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6683          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6684          0x01d2,
6685          0x01d2},
6686         {
6687          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6688          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6689          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6690          0x01d1,
6691          0x01d2},
6692         {
6693          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6694          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6695          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6696          0x01d0,
6697          0x01d1},
6698         {
6699          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6700          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6701          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6702          0x01cf,
6703          0x01d0},
6704         {
6705          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6706          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6707          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6708          0x01ce,
6709          0x01cf},
6710         {
6711          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6712          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6713          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6714          0x01ce,
6715          0x01ce},
6716         {
6717          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6718          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6719          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6720          0x01cd,
6721          0x01ce},
6722         {
6723          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6724          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6725          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6726          0x01cc,
6727          0x01cd},
6728         {
6729          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6730          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6731          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6732          0x01cb,
6733          0x01cc},
6734         {
6735          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6736          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6737          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6738          0x01ca,
6739          0x01cb},
6740         {
6741          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6742          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6743          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6744          0x01ca,
6745          0x01cb},
6746         {
6747          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6748          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6749          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6750          0x01c9,
6751          0x01ca},
6752         {
6753          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6754          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6755          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6756          0x01c9,
6757          0x01ca},
6758         {
6759          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6760          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6761          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6762          0x01c9,
6763          0x01c9},
6764         {
6765          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6766          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6767          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6768          0x01c8,
6769          0x01c9},
6770         {
6771          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6772          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6773          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6774          0x01c8,
6775          0x01c9},
6776         {
6777          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6778          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6779          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6780          0x01c8,
6781          0x01c8},
6782         {
6783          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6784          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6785          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6786          0x01c7,
6787          0x01c8},
6788         {
6789          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6790          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6791          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6792          0x01c7,
6793          0x01c8},
6794         {
6795          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6796          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6797          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6798          0x01c6,
6799          0x01c7},
6800         {
6801          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6802          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6803          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6804          0x01c6,
6805          0x01c7},
6806         {
6807          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6808          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6809          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6810          0x01c6,
6811          0x01c6},
6812         {
6813          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6814          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6815          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6816          0x01c5,
6817          0x01c6},
6818         {
6819          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6820          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6821          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6822          0x01c5,
6823          0x01c6},
6824         {
6825          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6826          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6827          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6828          0x01c4,
6829          0x01c5},
6830         {
6831          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6832          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6833          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6834          0x01c4,
6835          0x01c5},
6836         {
6837          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6838          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6839          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6840          0x01c4,
6841          0x01c4},
6842         {
6843          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6844          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6845          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6846          0x01c3,
6847          0x01c4},
6848         {
6849          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6850          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6851          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6852          0x01c3,
6853          0x01c4},
6854         {
6855          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6856          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6857          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6858          0x01c2,
6859          0x01c3},
6860         {
6861          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6862          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6863          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6864          0x01c2,
6865          0x01c3},
6866         {
6867          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6868          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6869          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6870          0x01c2,
6871          0x01c2},
6872         {
6873          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6874          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6875          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6876          0x01c1,
6877          0x01c2},
6878         {
6879          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6880          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6881          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6882          0x01c0,
6883          0x01c1},
6884         {
6885          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6886          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6887          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6888          0x01bf,
6889          0x01c0},
6890         {
6891          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6892          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6893          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6894          0x01bf,
6895          0x01bf},
6896         {
6897          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6898          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6899          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6900          0x01be,
6901          0x01bf},
6902         {
6903          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6904          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6905          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6906          0x01bd,
6907          0x01be},
6908         {
6909          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6910          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6911          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6912          0x01bc,
6913          0x01bd},
6914         {
6915          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6916          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6917          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6918          0x043f,
6919          0x0443},
6920         {
6921          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6922          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6923          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6924          0x043d,
6925          0x0441},
6926         {
6927          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6928          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6929          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6930          0x043a,
6931          0x043f},
6932         {
6933          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6934          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6935          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6936          0x0438,
6937          0x043d},
6938         {
6939          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6940          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6941          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6942          0x0436,
6943          0x043a},
6944         {
6945          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6946          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6947          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6948          0x0434,
6949          0x0438},
6950         {
6951          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6952          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6953          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6954          0x0431,
6955          0x0436},
6956         {
6957          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6958          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6959          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6960          0x042f,
6961          0x0434},
6962         {
6963          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6964          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6965          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6966          0x042d,
6967          0x0431},
6968         {
6969          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6970          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6971          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6972          0x042b,
6973          0x042f},
6974         {
6975          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6976          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6977          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6978          0x0429,
6979          0x042d},
6980         {
6981          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6982          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6983          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6984          0x0427,
6985          0x042b},
6986         {
6987          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6988          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6989          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6990          0x0424,
6991          0x0429},
6992         {
6993          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6994          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
6995          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6996          0x041f,
6997          0x0424}
6998 };
6999
7000 static chan_info_nphy_radio2057_t chan_info_nphyrev8_2057_rev8[] = {
7001         {
7002          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7003          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7004          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7005          0x0214,
7006          0x0215},
7007         {
7008          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7009          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7010          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7011          0x0213,
7012          0x0214},
7013         {
7014          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7015          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7016          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7017          0x0212,
7018          0x0213},
7019         {
7020          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7021          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7022          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7023          0x0211,
7024          0x0212},
7025         {
7026          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7027          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7028          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7029          0x020f,
7030          0x0211},
7031         {
7032          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7033          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7034          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7035          0x020e,
7036          0x020f},
7037         {
7038          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7039          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7040          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7041          0x020d,
7042          0x020e},
7043         {
7044          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7045          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7046          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7047          0x020c,
7048          0x020d},
7049         {
7050          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7051          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7052          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7053          0x020b,
7054          0x020c},
7055         {
7056          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7057          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7058          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7059          0x020a,
7060          0x020b},
7061         {
7062          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7063          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7064          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7065          0x0209,
7066          0x020a},
7067         {
7068          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7069          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7070          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7071          0x0208,
7072          0x0209},
7073         {
7074          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7075          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7076          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7077          0x0207,
7078          0x0208},
7079         {
7080          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7081          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7082          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7083          0x0206,
7084          0x0207},
7085         {
7086          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7087          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7088          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7089          0x0205,
7090          0x0206},
7091         {
7092          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7093          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7094          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7095          0x0204,
7096          0x0205},
7097         {
7098          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7099          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7100          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7101          0x0203,
7102          0x0204},
7103         {
7104          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7105          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7106          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7107          0x0202,
7108          0x0203},
7109         {
7110          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7111          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7112          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7113          0x0201,
7114          0x0202},
7115         {
7116          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7117          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7118          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7119          0x0200,
7120          0x0201},
7121         {
7122          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7123          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7124          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7125          0x01ff,
7126          0x0200},
7127         {
7128          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7129          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7130          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7131          0x01fe,
7132          0x01ff},
7133         {
7134          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7135          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7136          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7137          0x01fc,
7138          0x01fd},
7139         {
7140          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7141          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7142          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7143          0x01fb,
7144          0x01fc},
7145         {
7146          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7147          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7148          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7149          0x01fa,
7150          0x01fb},
7151         {
7152          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7153          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7154          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7155          0x01f9,
7156          0x01fa},
7157         {
7158          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7159          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7160          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7161          0x01f8,
7162          0x01f9},
7163         {
7164          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7165          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7166          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7167          0x01f7,
7168          0x01f8},
7169         {
7170          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7171          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7172          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7173          0x01f6,
7174          0x01f7},
7175         {
7176          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7177          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7178          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7179          0x01f5,
7180          0x01f6},
7181         {
7182          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7183          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7184          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7185          0x01f4,
7186          0x01f5},
7187         {
7188          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7189          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7190          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7191          0x01f3,
7192          0x01f4},
7193         {
7194          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7195          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7196          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7197          0x01f2,
7198          0x01f3},
7199         {
7200          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7201          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7202          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7203          0x01f1,
7204          0x01f2},
7205         {
7206          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7207          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7208          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7209          0x01f0,
7210          0x01f1},
7211         {
7212          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7213          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7214          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7215          0x01f0,
7216          0x01f0},
7217         {
7218          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7219          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7220          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7221          0x01ef,
7222          0x01f0},
7223         {
7224          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7225          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7226          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7227          0x01ee,
7228          0x01ef},
7229         {
7230          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7231          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7232          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7233          0x01ed,
7234          0x01ee},
7235         {
7236          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7237          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7238          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7239          0x01ec,
7240          0x01ed},
7241         {
7242          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7243          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7244          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7245          0x01eb,
7246          0x01ec},
7247         {
7248          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7249          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7250          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7251          0x01ea,
7252          0x01eb},
7253         {
7254          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7255          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7256          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7257          0x01e9,
7258          0x01ea},
7259         {
7260          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7261          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7262          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7263          0x01e8,
7264          0x01e9},
7265         {
7266          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7267          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7268          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7269          0x01e7,
7270          0x01e8},
7271         {
7272          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7273          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7274          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7275          0x01e6,
7276          0x01e7},
7277         {
7278          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7279          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7280          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7281          0x01e5,
7282          0x01e6},
7283         {
7284          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7285          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7286          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7287          0x01e5,
7288          0x01e5},
7289         {
7290          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7291          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7292          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7293          0x01e4,
7294          0x01e5},
7295         {
7296          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7297          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7298          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7299          0x01e3,
7300          0x01e4},
7301         {
7302          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7303          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7304          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7305          0x01e2,
7306          0x01e3},
7307         {
7308          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7309          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7310          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7311          0x01e1,
7312          0x01e2},
7313         {
7314          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7315          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7316          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7317          0x01e0,
7318          0x01e1},
7319         {
7320          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7321          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7322          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7323          0x01df,
7324          0x01e0},
7325         {
7326          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7327          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7328          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7329          0x01de,
7330          0x01df},
7331         {
7332          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7333          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7334          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7335          0x01dd,
7336          0x01de},
7337         {
7338          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7339          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7340          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7341          0x01dd,
7342          0x01dd},
7343         {
7344          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7345          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7346          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7347          0x01dc,
7348          0x01dd},
7349         {
7350          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7351          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7352          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7353          0x01db,
7354          0x01dc},
7355         {
7356          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7357          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7358          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7359          0x01da,
7360          0x01db},
7361         {
7362          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7363          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7364          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7365          0x01d9,
7366          0x01da},
7367         {
7368          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7369          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7370          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7371          0x01d8,
7372          0x01d9},
7373         {
7374          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7375          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7376          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7377          0x01d7,
7378          0x01d8},
7379         {
7380          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7381          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7382          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7383          0x01d7,
7384          0x01d7},
7385         {
7386          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7387          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7388          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7389          0x01d6,
7390          0x01d7},
7391         {
7392          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7393          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7394          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7395          0x01d5,
7396          0x01d6},
7397         {
7398          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7399          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7400          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7401          0x01d4,
7402          0x01d5},
7403         {
7404          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7405          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7406          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7407          0x01d3,
7408          0x01d4},
7409         {
7410          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7411          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7412          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7413          0x01d2,
7414          0x01d3},
7415         {
7416          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7417          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7418          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7419          0x01d2,
7420          0x01d2},
7421         {
7422          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7423          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7424          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7425          0x01d1,
7426          0x01d2},
7427         {
7428          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7429          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7430          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7431          0x01d0,
7432          0x01d1},
7433         {
7434          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7435          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7436          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7437          0x01cf,
7438          0x01d0},
7439         {
7440          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7441          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7442          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7443          0x01ce,
7444          0x01cf},
7445         {
7446          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7447          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7448          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7449          0x01ce,
7450          0x01ce},
7451         {
7452          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7453          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7454          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7455          0x01cd,
7456          0x01ce},
7457         {
7458          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7459          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7460          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7461          0x01cc,
7462          0x01cd},
7463         {
7464          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7465          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7466          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7467          0x01cb,
7468          0x01cc},
7469         {
7470          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7471          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7472          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7473          0x01ca,
7474          0x01cb},
7475         {
7476          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7477          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7478          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7479          0x01ca,
7480          0x01cb},
7481         {
7482          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7483          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7484          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7485          0x01c9,
7486          0x01ca},
7487         {
7488          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7489          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7490          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7491          0x01c9,
7492          0x01ca},
7493         {
7494          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7495          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7496          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7497          0x01c9,
7498          0x01c9},
7499         {
7500          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7501          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7502          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7503          0x01c8,
7504          0x01c9},
7505         {
7506          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7507          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7508          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7509          0x01c8,
7510          0x01c9},
7511         {
7512          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7513          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7514          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7515          0x01c8,
7516          0x01c8},
7517         {
7518          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7519          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7520          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7521          0x01c7,
7522          0x01c8},
7523         {
7524          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7525          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7526          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7527          0x01c7,
7528          0x01c8},
7529         {
7530          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7531          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7532          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7533          0x01c6,
7534          0x01c7},
7535         {
7536          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7537          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7538          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7539          0x01c6,
7540          0x01c7},
7541         {
7542          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7543          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7544          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7545          0x01c6,
7546          0x01c6},
7547         {
7548          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7549          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7550          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7551          0x01c5,
7552          0x01c6},
7553         {
7554          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7555          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7556          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7557          0x01c5,
7558          0x01c6},
7559         {
7560          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7561          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7562          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7563          0x01c4,
7564          0x01c5},
7565         {
7566          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7567          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7568          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7569          0x01c4,
7570          0x01c5},
7571         {
7572          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7573          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7574          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7575          0x01c4,
7576          0x01c4},
7577         {
7578          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7579          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7580          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7581          0x01c3,
7582          0x01c4},
7583         {
7584          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7585          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7586          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7587          0x01c3,
7588          0x01c4},
7589         {
7590          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7591          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7592          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7593          0x01c2,
7594          0x01c3},
7595         {
7596          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7597          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7598          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7599          0x01c2,
7600          0x01c3},
7601         {
7602          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7603          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7604          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7605          0x01c2,
7606          0x01c2},
7607         {
7608          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7609          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7610          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7611          0x01c1,
7612          0x01c2},
7613         {
7614          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7615          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7616          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7617          0x01c0,
7618          0x01c1},
7619         {
7620          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7621          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7622          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7623          0x01bf,
7624          0x01c0},
7625         {
7626          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7627          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7628          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7629          0x01bf,
7630          0x01bf},
7631         {
7632          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7633          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7634          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7635          0x01be,
7636          0x01bf},
7637         {
7638          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7639          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7640          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7641          0x01bd,
7642          0x01be},
7643         {
7644          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7645          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7646          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7647          0x01bc,
7648          0x01bd},
7649         {
7650          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7651          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7652          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7653          0x043f,
7654          0x0443},
7655         {
7656          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7657          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7658          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7659          0x043d,
7660          0x0441},
7661         {
7662          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7663          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7664          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7665          0x043a,
7666          0x043f},
7667         {
7668          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7669          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7670          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7671          0x0438,
7672          0x043d},
7673         {
7674          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7675          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7676          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7677          0x0436,
7678          0x043a},
7679         {
7680          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7681          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7682          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7683          0x0434,
7684          0x0438},
7685         {
7686          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7687          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7688          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7689          0x0431,
7690          0x0436},
7691         {
7692          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7693          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7694          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7695          0x042f,
7696          0x0434},
7697         {
7698          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7699          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7700          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7701          0x042d,
7702          0x0431},
7703         {
7704          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7705          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7706          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7707          0x042b,
7708          0x042f},
7709         {
7710          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7711          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7712          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7713          0x0429,
7714          0x042d},
7715         {
7716          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7717          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7718          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7719          0x0427,
7720          0x042b},
7721         {
7722          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7723          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7724          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7725          0x0424,
7726          0x0429},
7727         {
7728          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7729          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7730          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7731          0x041f,
7732          0x0424}
7733 };
7734
7735 radio_regs_t regs_2055[] = {
7736         {0x02, 0x80, 0x80, 0, 0},
7737         {0x03, 0, 0, 0, 0},
7738         {0x04, 0x27, 0x27, 0, 0},
7739         {0x05, 0, 0, 0, 0},
7740         {0x06, 0x27, 0x27, 0, 0},
7741         {0x07, 0x7f, 0x7f, 1, 1},
7742         {0x08, 0x7, 0x7, 1, 1},
7743         {0x09, 0x7f, 0x7f, 1, 1},
7744         {0x0A, 0x7, 0x7, 1, 1},
7745         {0x0B, 0x15, 0x15, 0, 0},
7746         {0x0C, 0x15, 0x15, 0, 0},
7747         {0x0D, 0x4f, 0x4f, 1, 1},
7748         {0x0E, 0x5, 0x5, 1, 1},
7749         {0x0F, 0x4f, 0x4f, 1, 1},
7750         {0x10, 0x5, 0x5, 1, 1},
7751         {0x11, 0xd0, 0xd0, 0, 0},
7752         {0x12, 0x2, 0x2, 0, 0},
7753         {0x13, 0, 0, 0, 0},
7754         {0x14, 0x40, 0x40, 0, 0},
7755         {0x15, 0, 0, 0, 0},
7756         {0x16, 0, 0, 0, 0},
7757         {0x17, 0, 0, 0, 0},
7758         {0x18, 0, 0, 0, 0},
7759         {0x19, 0, 0, 0, 0},
7760         {0x1A, 0, 0, 0, 0},
7761         {0x1B, 0, 0, 0, 0},
7762         {0x1C, 0, 0, 0, 0},
7763         {0x1D, 0xc0, 0xc0, 0, 0},
7764         {0x1E, 0xff, 0xff, 0, 0},
7765         {0x1F, 0xc0, 0xc0, 0, 0},
7766         {0x20, 0xff, 0xff, 0, 0},
7767         {0x21, 0xc0, 0xc0, 0, 0},
7768         {0x22, 0, 0, 0, 0},
7769         {0x23, 0x2c, 0x2c, 0, 0},
7770         {0x24, 0, 0, 0, 0},
7771         {0x25, 0, 0, 0, 0},
7772         {0x26, 0, 0, 0, 0},
7773         {0x27, 0, 0, 0, 0},
7774         {0x28, 0, 0, 0, 0},
7775         {0x29, 0, 0, 0, 0},
7776         {0x2A, 0, 0, 0, 0},
7777         {0x2B, 0, 0, 0, 0},
7778         {0x2C, 0, 0, 0, 0},
7779         {0x2D, 0xa4, 0xa4, 0, 0},
7780         {0x2E, 0x38, 0x38, 0, 0},
7781         {0x2F, 0, 0, 0, 0},
7782         {0x30, 0x4, 0x4, 1, 1},
7783         {0x31, 0, 0, 0, 0},
7784         {0x32, 0xa, 0xa, 0, 0},
7785         {0x33, 0x87, 0x87, 0, 0},
7786         {0x34, 0x9, 0x9, 0, 0},
7787         {0x35, 0x70, 0x70, 0, 0},
7788         {0x36, 0x11, 0x11, 0, 0},
7789         {0x37, 0x18, 0x18, 1, 1},
7790         {0x38, 0x6, 0x6, 0, 0},
7791         {0x39, 0x4, 0x4, 1, 1},
7792         {0x3A, 0x6, 0x6, 0, 0},
7793         {0x3B, 0x9e, 0x9e, 0, 0},
7794         {0x3C, 0x9, 0x9, 0, 0},
7795         {0x3D, 0xc8, 0xc8, 1, 1},
7796         {0x3E, 0x88, 0x88, 0, 0},
7797         {0x3F, 0, 0, 0, 0},
7798         {0x40, 0, 0, 0, 0},
7799         {0x41, 0, 0, 0, 0},
7800         {0x42, 0x1, 0x1, 0, 0},
7801         {0x43, 0x2, 0x2, 0, 0},
7802         {0x44, 0x96, 0x96, 0, 0},
7803         {0x45, 0x3e, 0x3e, 0, 0},
7804         {0x46, 0x3e, 0x3e, 0, 0},
7805         {0x47, 0x13, 0x13, 0, 0},
7806         {0x48, 0x2, 0x2, 0, 0},
7807         {0x49, 0x15, 0x15, 0, 0},
7808         {0x4A, 0x7, 0x7, 0, 0},
7809         {0x4B, 0, 0, 0, 0},
7810         {0x4C, 0, 0, 0, 0},
7811         {0x4D, 0, 0, 0, 0},
7812         {0x4E, 0, 0, 0, 0},
7813         {0x4F, 0, 0, 0, 0},
7814         {0x50, 0x8, 0x8, 0, 0},
7815         {0x51, 0x8, 0x8, 0, 0},
7816         {0x52, 0x6, 0x6, 0, 0},
7817         {0x53, 0x84, 0x84, 1, 1},
7818         {0x54, 0xc3, 0xc3, 0, 0},
7819         {0x55, 0x8f, 0x8f, 0, 0},
7820         {0x56, 0xff, 0xff, 0, 0},
7821         {0x57, 0xff, 0xff, 0, 0},
7822         {0x58, 0x88, 0x88, 0, 0},
7823         {0x59, 0x88, 0x88, 0, 0},
7824         {0x5A, 0, 0, 0, 0},
7825         {0x5B, 0xcc, 0xcc, 0, 0},
7826         {0x5C, 0x6, 0x6, 0, 0},
7827         {0x5D, 0x80, 0x80, 0, 0},
7828         {0x5E, 0x80, 0x80, 0, 0},
7829         {0x5F, 0xf8, 0xf8, 0, 0},
7830         {0x60, 0x88, 0x88, 0, 0},
7831         {0x61, 0x88, 0x88, 0, 0},
7832         {0x62, 0x88, 0x8, 1, 1},
7833         {0x63, 0x88, 0x88, 0, 0},
7834         {0x64, 0, 0, 0, 0},
7835         {0x65, 0x1, 0x1, 1, 1},
7836         {0x66, 0x8a, 0x8a, 0, 0},
7837         {0x67, 0x8, 0x8, 0, 0},
7838         {0x68, 0x83, 0x83, 0, 0},
7839         {0x69, 0x6, 0x6, 0, 0},
7840         {0x6A, 0xa0, 0xa0, 0, 0},
7841         {0x6B, 0xa, 0xa, 0, 0},
7842         {0x6C, 0x87, 0x87, 1, 1},
7843         {0x6D, 0x2a, 0x2a, 0, 0},
7844         {0x6E, 0x2a, 0x2a, 0, 0},
7845         {0x6F, 0x2a, 0x2a, 0, 0},
7846         {0x70, 0x2a, 0x2a, 0, 0},
7847         {0x71, 0x18, 0x18, 0, 0},
7848         {0x72, 0x6a, 0x6a, 1, 1},
7849         {0x73, 0xab, 0xab, 1, 1},
7850         {0x74, 0x13, 0x13, 1, 1},
7851         {0x75, 0xc1, 0xc1, 1, 1},
7852         {0x76, 0xaa, 0xaa, 1, 1},
7853         {0x77, 0x87, 0x87, 1, 1},
7854         {0x78, 0, 0, 0, 0},
7855         {0x79, 0x6, 0x6, 0, 0},
7856         {0x7A, 0x7, 0x7, 0, 0},
7857         {0x7B, 0x7, 0x7, 0, 0},
7858         {0x7C, 0x15, 0x15, 0, 0},
7859         {0x7D, 0x55, 0x55, 0, 0},
7860         {0x7E, 0x97, 0x97, 1, 1},
7861         {0x7F, 0x8, 0x8, 0, 0},
7862         {0x80, 0x14, 0x14, 1, 1},
7863         {0x81, 0x33, 0x33, 0, 0},
7864         {0x82, 0x88, 0x88, 0, 0},
7865         {0x83, 0x6, 0x6, 0, 0},
7866         {0x84, 0x3, 0x3, 1, 1},
7867         {0x85, 0xa, 0xa, 0, 0},
7868         {0x86, 0x3, 0x3, 1, 1},
7869         {0x87, 0x2a, 0x2a, 0, 0},
7870         {0x88, 0xa4, 0xa4, 0, 0},
7871         {0x89, 0x18, 0x18, 0, 0},
7872         {0x8A, 0x28, 0x28, 0, 0},
7873         {0x8B, 0, 0, 0, 0},
7874         {0x8C, 0x4a, 0x4a, 0, 0},
7875         {0x8D, 0, 0, 0, 0},
7876         {0x8E, 0xf8, 0xf8, 0, 0},
7877         {0x8F, 0x88, 0x88, 0, 0},
7878         {0x90, 0x88, 0x88, 0, 0},
7879         {0x91, 0x88, 0x8, 1, 1},
7880         {0x92, 0x88, 0x88, 0, 0},
7881         {0x93, 0, 0, 0, 0},
7882         {0x94, 0x1, 0x1, 1, 1},
7883         {0x95, 0x8a, 0x8a, 0, 0},
7884         {0x96, 0x8, 0x8, 0, 0},
7885         {0x97, 0x83, 0x83, 0, 0},
7886         {0x98, 0x6, 0x6, 0, 0},
7887         {0x99, 0xa0, 0xa0, 0, 0},
7888         {0x9A, 0xa, 0xa, 0, 0},
7889         {0x9B, 0x87, 0x87, 1, 1},
7890         {0x9C, 0x2a, 0x2a, 0, 0},
7891         {0x9D, 0x2a, 0x2a, 0, 0},
7892         {0x9E, 0x2a, 0x2a, 0, 0},
7893         {0x9F, 0x2a, 0x2a, 0, 0},
7894         {0xA0, 0x18, 0x18, 0, 0},
7895         {0xA1, 0x6a, 0x6a, 1, 1},
7896         {0xA2, 0xab, 0xab, 1, 1},
7897         {0xA3, 0x13, 0x13, 1, 1},
7898         {0xA4, 0xc1, 0xc1, 1, 1},
7899         {0xA5, 0xaa, 0xaa, 1, 1},
7900         {0xA6, 0x87, 0x87, 1, 1},
7901         {0xA7, 0, 0, 0, 0},
7902         {0xA8, 0x6, 0x6, 0, 0},
7903         {0xA9, 0x7, 0x7, 0, 0},
7904         {0xAA, 0x7, 0x7, 0, 0},
7905         {0xAB, 0x15, 0x15, 0, 0},
7906         {0xAC, 0x55, 0x55, 0, 0},
7907         {0xAD, 0x97, 0x97, 1, 1},
7908         {0xAE, 0x8, 0x8, 0, 0},
7909         {0xAF, 0x14, 0x14, 1, 1},
7910         {0xB0, 0x33, 0x33, 0, 0},
7911         {0xB1, 0x88, 0x88, 0, 0},
7912         {0xB2, 0x6, 0x6, 0, 0},
7913         {0xB3, 0x3, 0x3, 1, 1},
7914         {0xB4, 0xa, 0xa, 0, 0},
7915         {0xB5, 0x3, 0x3, 1, 1},
7916         {0xB6, 0x2a, 0x2a, 0, 0},
7917         {0xB7, 0xa4, 0xa4, 0, 0},
7918         {0xB8, 0x18, 0x18, 0, 0},
7919         {0xB9, 0x28, 0x28, 0, 0},
7920         {0xBA, 0, 0, 0, 0},
7921         {0xBB, 0x4a, 0x4a, 0, 0},
7922         {0xBC, 0, 0, 0, 0},
7923         {0xBD, 0x71, 0x71, 0, 0},
7924         {0xBE, 0x72, 0x72, 0, 0},
7925         {0xBF, 0x73, 0x73, 0, 0},
7926         {0xC0, 0x74, 0x74, 0, 0},
7927         {0xC1, 0x75, 0x75, 0, 0},
7928         {0xC2, 0x76, 0x76, 0, 0},
7929         {0xC3, 0x77, 0x77, 0, 0},
7930         {0xC4, 0x78, 0x78, 0, 0},
7931         {0xC5, 0x79, 0x79, 0, 0},
7932         {0xC6, 0x7a, 0x7a, 0, 0},
7933         {0xC7, 0, 0, 0, 0},
7934         {0xC8, 0, 0, 0, 0},
7935         {0xC9, 0, 0, 0, 0},
7936         {0xCA, 0, 0, 0, 0},
7937         {0xCB, 0, 0, 0, 0},
7938         {0xCC, 0, 0, 0, 0},
7939         {0xCD, 0, 0, 0, 0},
7940         {0xCE, 0x6, 0x6, 0, 0},
7941         {0xCF, 0, 0, 0, 0},
7942         {0xD0, 0, 0, 0, 0},
7943         {0xD1, 0x18, 0x18, 0, 0},
7944         {0xD2, 0x88, 0x88, 0, 0},
7945         {0xD3, 0, 0, 0, 0},
7946         {0xD4, 0, 0, 0, 0},
7947         {0xD5, 0, 0, 0, 0},
7948         {0xD6, 0, 0, 0, 0},
7949         {0xD7, 0, 0, 0, 0},
7950         {0xD8, 0, 0, 0, 0},
7951         {0xD9, 0, 0, 0, 0},
7952         {0xDA, 0x6, 0x6, 0, 0},
7953         {0xDB, 0, 0, 0, 0},
7954         {0xDC, 0, 0, 0, 0},
7955         {0xDD, 0x18, 0x18, 0, 0},
7956         {0xDE, 0x88, 0x88, 0, 0},
7957         {0xDF, 0, 0, 0, 0},
7958         {0xE0, 0, 0, 0, 0},
7959         {0xE1, 0, 0, 0, 0},
7960         {0xE2, 0, 0, 0, 0},
7961         {0xFFFF, 0, 0, 0, 0},
7962 };
7963
7964 radio_regs_t regs_SYN_2056[] = {
7965         {0x02, 0, 0, 0, 0},
7966         {0x03, 0, 0, 0, 0},
7967         {0x04, 0, 0, 0, 0},
7968         {0x05, 0, 0, 0, 0},
7969         {0x06, 0, 0, 0, 0},
7970         {0x07, 0, 0, 0, 0},
7971         {0x08, 0, 0, 0, 0},
7972         {0x09, 0x1, 0x1, 0, 0},
7973         {0x0A, 0, 0, 0, 0},
7974         {0x0B, 0, 0, 0, 0},
7975         {0x0C, 0, 0, 0, 0},
7976         {0x0D, 0, 0, 0, 0},
7977         {0x0E, 0, 0, 0, 0},
7978         {0x0F, 0, 0, 0, 0},
7979         {0x10, 0, 0, 0, 0},
7980         {0x11, 0, 0, 0, 0},
7981         {0x12, 0, 0, 0, 0},
7982         {0x13, 0, 0, 0, 0},
7983         {0x14, 0, 0, 0, 0},
7984         {0x15, 0, 0, 0, 0},
7985         {0x16, 0, 0, 0, 0},
7986         {0x17, 0, 0, 0, 0},
7987         {0x18, 0, 0, 0, 0},
7988         {0x19, 0, 0, 0, 0},
7989         {0x1A, 0, 0, 0, 0},
7990         {0x1B, 0, 0, 0, 0},
7991         {0x1C, 0, 0, 0, 0},
7992         {0x1D, 0, 0, 0, 0},
7993         {0x1E, 0, 0, 0, 0},
7994         {0x1F, 0, 0, 0, 0},
7995         {0x20, 0, 0, 0, 0},
7996         {0x21, 0, 0, 0, 0},
7997         {0x22, 0x60, 0x60, 0, 0},
7998         {0x23, 0x6, 0x6, 0, 0},
7999         {0x24, 0xc, 0xc, 0, 0},
8000         {0x25, 0, 0, 0, 0},
8001         {0x26, 0, 0, 0, 0},
8002         {0x27, 0, 0, 0, 0},
8003         {0x28, 0x1, 0x1, 0, 0},
8004         {0x29, 0, 0, 0, 0},
8005         {0x2A, 0, 0, 0, 0},
8006         {0x2B, 0, 0, 0, 0},
8007         {0x2C, 0, 0, 0, 0},
8008         {0x2D, 0, 0, 0, 0},
8009         {0x2E, 0xd, 0xd, 0, 0},
8010         {0x2F, 0x1f, 0x1f, 0, 0},
8011         {0x30, 0x15, 0x15, 0, 0},
8012         {0x31, 0xf, 0xf, 0, 0},
8013         {0x32, 0, 0, 0, 0},
8014         {0x33, 0, 0, 0, 0},
8015         {0x34, 0, 0, 0, 0},
8016         {0x35, 0, 0, 0, 0},
8017         {0x36, 0, 0, 0, 0},
8018         {0x37, 0, 0, 0, 0},
8019         {0x38, 0, 0, 0, 0},
8020         {0x39, 0, 0, 0, 0},
8021         {0x3A, 0, 0, 0, 0},
8022         {0x3B, 0, 0, 0, 0},
8023         {0x3C, 0x13, 0x13, 0, 0},
8024         {0x3D, 0xf, 0xf, 0, 0},
8025         {0x3E, 0x18, 0x18, 0, 0},
8026         {0x3F, 0, 0, 0, 0},
8027         {0x40, 0, 0, 0, 0},
8028         {0x41, 0x20, 0x20, 0, 0},
8029         {0x42, 0x20, 0x20, 0, 0},
8030         {0x43, 0, 0, 0, 0},
8031         {0x44, 0x77, 0x77, 0, 0},
8032         {0x45, 0x7, 0x7, 0, 0},
8033         {0x46, 0x1, 0x1, 0, 0},
8034         {0x47, 0x4, 0x4, 0, 0},
8035         {0x48, 0xf, 0xf, 0, 0},
8036         {0x49, 0x30, 0x30, 0, 0},
8037         {0x4A, 0x32, 0x32, 0, 0},
8038         {0x4B, 0xd, 0xd, 0, 0},
8039         {0x4C, 0xd, 0xd, 0, 0},
8040         {0x4D, 0x4, 0x4, 0, 0},
8041         {0x4E, 0x6, 0x6, 0, 0},
8042         {0x4F, 0x1, 0x1, 0, 0},
8043         {0x50, 0x1c, 0x1c, 0, 0},
8044         {0x51, 0x2, 0x2, 0, 0},
8045         {0x52, 0x2, 0x2, 0, 0},
8046         {0x53, 0xf7, 0xf7, 1, 1},
8047         {0x54, 0xb4, 0xb4, 0, 0},
8048         {0x55, 0xd2, 0xd2, 0, 0},
8049         {0x56, 0, 0, 0, 0},
8050         {0x57, 0, 0, 0, 0},
8051         {0x58, 0x4, 0x4, 0, 0},
8052         {0x59, 0x96, 0x96, 0, 0},
8053         {0x5A, 0x3e, 0x3e, 0, 0},
8054         {0x5B, 0x3e, 0x3e, 0, 0},
8055         {0x5C, 0x13, 0x13, 0, 0},
8056         {0x5D, 0x2, 0x2, 0, 0},
8057         {0x5E, 0, 0, 0, 0},
8058         {0x5F, 0x7, 0x7, 0, 0},
8059         {0x60, 0x7, 0x7, 1, 1},
8060         {0x61, 0x8, 0x8, 0, 0},
8061         {0x62, 0x3, 0x3, 0, 0},
8062         {0x63, 0, 0, 0, 0},
8063         {0x64, 0, 0, 0, 0},
8064         {0x65, 0, 0, 0, 0},
8065         {0x66, 0, 0, 0, 0},
8066         {0x67, 0, 0, 0, 0},
8067         {0x68, 0x40, 0x40, 0, 0},
8068         {0x69, 0, 0, 0, 0},
8069         {0x6A, 0, 0, 0, 0},
8070         {0x6B, 0, 0, 0, 0},
8071         {0x6C, 0, 0, 0, 0},
8072         {0x6D, 0x1, 0x1, 0, 0},
8073         {0x6E, 0, 0, 0, 0},
8074         {0x6F, 0, 0, 0, 0},
8075         {0x70, 0x60, 0x60, 0, 0},
8076         {0x71, 0x66, 0x66, 0, 0},
8077         {0x72, 0xc, 0xc, 0, 0},
8078         {0x73, 0x66, 0x66, 0, 0},
8079         {0x74, 0x8f, 0x8f, 1, 1},
8080         {0x75, 0, 0, 0, 0},
8081         {0x76, 0xcc, 0xcc, 0, 0},
8082         {0x77, 0x1, 0x1, 0, 0},
8083         {0x78, 0x66, 0x66, 0, 0},
8084         {0x79, 0x66, 0x66, 0, 0},
8085         {0x7A, 0, 0, 0, 0},
8086         {0x7B, 0, 0, 0, 0},
8087         {0x7C, 0, 0, 0, 0},
8088         {0x7D, 0, 0, 0, 0},
8089         {0x7E, 0, 0, 0, 0},
8090         {0x7F, 0, 0, 0, 0},
8091         {0x80, 0, 0, 0, 0},
8092         {0x81, 0, 0, 0, 0},
8093         {0x82, 0, 0, 0, 0},
8094         {0x83, 0, 0, 0, 0},
8095         {0x84, 0, 0, 0, 0},
8096         {0x85, 0xff, 0xff, 0, 0},
8097         {0x86, 0, 0, 0, 0},
8098         {0x87, 0, 0, 0, 0},
8099         {0x88, 0, 0, 0, 0},
8100         {0x89, 0, 0, 0, 0},
8101         {0x8A, 0, 0, 0, 0},
8102         {0x8B, 0, 0, 0, 0},
8103         {0x8C, 0, 0, 0, 0},
8104         {0x8D, 0, 0, 0, 0},
8105         {0x8E, 0, 0, 0, 0},
8106         {0x8F, 0, 0, 0, 0},
8107         {0x90, 0, 0, 0, 0},
8108         {0x91, 0, 0, 0, 0},
8109         {0x92, 0, 0, 0, 0},
8110         {0x93, 0, 0, 0, 0},
8111         {0x94, 0, 0, 0, 0},
8112         {0x95, 0, 0, 0, 0},
8113         {0x96, 0, 0, 0, 0},
8114         {0x97, 0, 0, 0, 0},
8115         {0x98, 0, 0, 0, 0},
8116         {0x99, 0, 0, 0, 0},
8117         {0x9A, 0, 0, 0, 0},
8118         {0x9B, 0, 0, 0, 0},
8119         {0x9C, 0, 0, 0, 0},
8120         {0x9D, 0, 0, 0, 0},
8121         {0x9E, 0, 0, 0, 0},
8122         {0x9F, 0x6, 0x6, 0, 0},
8123         {0xA0, 0x66, 0x66, 0, 0},
8124         {0xA1, 0x66, 0x66, 0, 0},
8125         {0xA2, 0x66, 0x66, 0, 0},
8126         {0xA3, 0x66, 0x66, 0, 0},
8127         {0xA4, 0x66, 0x66, 0, 0},
8128         {0xA5, 0x66, 0x66, 0, 0},
8129         {0xA6, 0x66, 0x66, 0, 0},
8130         {0xA7, 0x66, 0x66, 0, 0},
8131         {0xA8, 0x66, 0x66, 0, 0},
8132         {0xA9, 0x66, 0x66, 0, 0},
8133         {0xAA, 0x66, 0x66, 0, 0},
8134         {0xAB, 0x66, 0x66, 0, 0},
8135         {0xAC, 0x66, 0x66, 0, 0},
8136         {0xAD, 0x66, 0x66, 0, 0},
8137         {0xAE, 0x66, 0x66, 0, 0},
8138         {0xAF, 0x66, 0x66, 0, 0},
8139         {0xB0, 0x66, 0x66, 0, 0},
8140         {0xB1, 0x66, 0x66, 0, 0},
8141         {0xB2, 0x66, 0x66, 0, 0},
8142         {0xB3, 0xa, 0xa, 0, 0},
8143         {0xB4, 0, 0, 0, 0},
8144         {0xB5, 0, 0, 0, 0},
8145         {0xB6, 0, 0, 0, 0},
8146         {0xFFFF, 0, 0, 0, 0}
8147 };
8148
8149 radio_regs_t regs_TX_2056[] = {
8150         {0x02, 0, 0, 0, 0},
8151         {0x03, 0, 0, 0, 0},
8152         {0x04, 0, 0, 0, 0},
8153         {0x05, 0, 0, 0, 0},
8154         {0x06, 0, 0, 0, 0},
8155         {0x07, 0, 0, 0, 0},
8156         {0x08, 0, 0, 0, 0},
8157         {0x09, 0, 0, 0, 0},
8158         {0x0A, 0, 0, 0, 0},
8159         {0x0B, 0, 0, 0, 0},
8160         {0x0C, 0, 0, 0, 0},
8161         {0x0D, 0, 0, 0, 0},
8162         {0x0E, 0, 0, 0, 0},
8163         {0x0F, 0, 0, 0, 0},
8164         {0x10, 0, 0, 0, 0},
8165         {0x11, 0, 0, 0, 0},
8166         {0x12, 0, 0, 0, 0},
8167         {0x13, 0, 0, 0, 0},
8168         {0x14, 0, 0, 0, 0},
8169         {0x15, 0, 0, 0, 0},
8170         {0x16, 0, 0, 0, 0},
8171         {0x17, 0, 0, 0, 0},
8172         {0x18, 0, 0, 0, 0},
8173         {0x19, 0, 0, 0, 0},
8174         {0x1A, 0, 0, 0, 0},
8175         {0x1B, 0, 0, 0, 0},
8176         {0x1C, 0, 0, 0, 0},
8177         {0x1D, 0, 0, 0, 0},
8178         {0x1E, 0, 0, 0, 0},
8179         {0x1F, 0, 0, 0, 0},
8180         {0x20, 0, 0, 0, 0},
8181         {0x21, 0x88, 0x88, 0, 0},
8182         {0x22, 0x88, 0x88, 0, 0},
8183         {0x23, 0x88, 0x88, 0, 0},
8184         {0x24, 0x88, 0x88, 0, 0},
8185         {0x25, 0xc, 0xc, 0, 0},
8186         {0x26, 0, 0, 0, 0},
8187         {0x27, 0x3, 0x3, 0, 0},
8188         {0x28, 0, 0, 0, 0},
8189         {0x29, 0x3, 0x3, 0, 0},
8190         {0x2A, 0x37, 0x37, 0, 0},
8191         {0x2B, 0x3, 0x3, 0, 0},
8192         {0x2C, 0, 0, 0, 0},
8193         {0x2D, 0, 0, 0, 0},
8194         {0x2E, 0x1, 0x1, 0, 0},
8195         {0x2F, 0x1, 0x1, 0, 0},
8196         {0x30, 0, 0, 0, 0},
8197         {0x31, 0, 0, 0, 0},
8198         {0x32, 0, 0, 0, 0},
8199         {0x33, 0x11, 0x11, 0, 0},
8200         {0x34, 0x11, 0x11, 0, 0},
8201         {0x35, 0, 0, 0, 0},
8202         {0x36, 0, 0, 0, 0},
8203         {0x37, 0x3, 0x3, 0, 0},
8204         {0x38, 0xf, 0xf, 0, 0},
8205         {0x39, 0, 0, 0, 0},
8206         {0x3A, 0x2d, 0x2d, 0, 0},
8207         {0x3B, 0, 0, 0, 0},
8208         {0x3C, 0x6e, 0x6e, 0, 0},
8209         {0x3D, 0xf0, 0xf0, 1, 1},
8210         {0x3E, 0, 0, 0, 0},
8211         {0x3F, 0, 0, 0, 0},
8212         {0x40, 0, 0, 0, 0},
8213         {0x41, 0x3, 0x3, 0, 0},
8214         {0x42, 0x3, 0x3, 0, 0},
8215         {0x43, 0, 0, 0, 0},
8216         {0x44, 0x1e, 0x1e, 0, 0},
8217         {0x45, 0, 0, 0, 0},
8218         {0x46, 0x6e, 0x6e, 0, 0},
8219         {0x47, 0xf0, 0xf0, 1, 1},
8220         {0x48, 0, 0, 0, 0},
8221         {0x49, 0x2, 0x2, 0, 0},
8222         {0x4A, 0xff, 0xff, 1, 1},
8223         {0x4B, 0xc, 0xc, 0, 0},
8224         {0x4C, 0, 0, 0, 0},
8225         {0x4D, 0x38, 0x38, 0, 0},
8226         {0x4E, 0x70, 0x70, 1, 1},
8227         {0x4F, 0x2, 0x2, 0, 0},
8228         {0x50, 0x88, 0x88, 0, 0},
8229         {0x51, 0xc, 0xc, 0, 0},
8230         {0x52, 0, 0, 0, 0},
8231         {0x53, 0x8, 0x8, 0, 0},
8232         {0x54, 0x70, 0x70, 1, 1},
8233         {0x55, 0x2, 0x2, 0, 0},
8234         {0x56, 0xff, 0xff, 1, 1},
8235         {0x57, 0, 0, 0, 0},
8236         {0x58, 0x83, 0x83, 0, 0},
8237         {0x59, 0x77, 0x77, 1, 1},
8238         {0x5A, 0, 0, 0, 0},
8239         {0x5B, 0x2, 0x2, 0, 0},
8240         {0x5C, 0x88, 0x88, 0, 0},
8241         {0x5D, 0, 0, 0, 0},
8242         {0x5E, 0x8, 0x8, 0, 0},
8243         {0x5F, 0x77, 0x77, 1, 1},
8244         {0x60, 0x1, 0x1, 0, 0},
8245         {0x61, 0, 0, 0, 0},
8246         {0x62, 0x7, 0x7, 0, 0},
8247         {0x63, 0, 0, 0, 0},
8248         {0x64, 0x7, 0x7, 0, 0},
8249         {0x65, 0, 0, 0, 0},
8250         {0x66, 0, 0, 0, 0},
8251         {0x67, 0x74, 0x74, 1, 1},
8252         {0x68, 0, 0, 0, 0},
8253         {0x69, 0xa, 0xa, 0, 0},
8254         {0x6A, 0, 0, 0, 0},
8255         {0x6B, 0, 0, 0, 0},
8256         {0x6C, 0, 0, 0, 0},
8257         {0x6D, 0, 0, 0, 0},
8258         {0x6E, 0, 0, 0, 0},
8259         {0x6F, 0, 0, 0, 0},
8260         {0x70, 0, 0, 0, 0},
8261         {0x71, 0x2, 0x2, 0, 0},
8262         {0x72, 0, 0, 0, 0},
8263         {0x73, 0, 0, 0, 0},
8264         {0x74, 0xe, 0xe, 0, 0},
8265         {0x75, 0xe, 0xe, 0, 0},
8266         {0x76, 0xe, 0xe, 0, 0},
8267         {0x77, 0x13, 0x13, 0, 0},
8268         {0x78, 0x13, 0x13, 0, 0},
8269         {0x79, 0x1b, 0x1b, 0, 0},
8270         {0x7A, 0x1b, 0x1b, 0, 0},
8271         {0x7B, 0x55, 0x55, 0, 0},
8272         {0x7C, 0x5b, 0x5b, 0, 0},
8273         {0x7D, 0, 0, 0, 0},
8274         {0x7E, 0, 0, 0, 0},
8275         {0x7F, 0, 0, 0, 0},
8276         {0x80, 0, 0, 0, 0},
8277         {0x81, 0, 0, 0, 0},
8278         {0x82, 0, 0, 0, 0},
8279         {0x83, 0, 0, 0, 0},
8280         {0x84, 0, 0, 0, 0},
8281         {0x85, 0, 0, 0, 0},
8282         {0x86, 0, 0, 0, 0},
8283         {0x87, 0, 0, 0, 0},
8284         {0x88, 0, 0, 0, 0},
8285         {0x89, 0, 0, 0, 0},
8286         {0x8A, 0, 0, 0, 0},
8287         {0x8B, 0, 0, 0, 0},
8288         {0x8C, 0, 0, 0, 0},
8289         {0x8D, 0, 0, 0, 0},
8290         {0x8E, 0, 0, 0, 0},
8291         {0x8F, 0, 0, 0, 0},
8292         {0x90, 0, 0, 0, 0},
8293         {0x91, 0, 0, 0, 0},
8294         {0x92, 0, 0, 0, 0},
8295         {0xFFFF, 0, 0, 0, 0}
8296 };
8297
8298 radio_regs_t regs_RX_2056[] = {
8299         {0x02, 0, 0, 0, 0},
8300         {0x03, 0, 0, 0, 0},
8301         {0x04, 0, 0, 0, 0},
8302         {0x05, 0, 0, 0, 0},
8303         {0x06, 0, 0, 0, 0},
8304         {0x07, 0, 0, 0, 0},
8305         {0x08, 0, 0, 0, 0},
8306         {0x09, 0, 0, 0, 0},
8307         {0x0A, 0, 0, 0, 0},
8308         {0x0B, 0, 0, 0, 0},
8309         {0x0C, 0, 0, 0, 0},
8310         {0x0D, 0, 0, 0, 0},
8311         {0x0E, 0, 0, 0, 0},
8312         {0x0F, 0, 0, 0, 0},
8313         {0x10, 0, 0, 0, 0},
8314         {0x11, 0, 0, 0, 0},
8315         {0x12, 0, 0, 0, 0},
8316         {0x13, 0, 0, 0, 0},
8317         {0x14, 0, 0, 0, 0},
8318         {0x15, 0, 0, 0, 0},
8319         {0x16, 0, 0, 0, 0},
8320         {0x17, 0, 0, 0, 0},
8321         {0x18, 0, 0, 0, 0},
8322         {0x19, 0, 0, 0, 0},
8323         {0x1A, 0, 0, 0, 0},
8324         {0x1B, 0, 0, 0, 0},
8325         {0x1C, 0, 0, 0, 0},
8326         {0x1D, 0, 0, 0, 0},
8327         {0x1E, 0, 0, 0, 0},
8328         {0x1F, 0, 0, 0, 0},
8329         {0x20, 0x3, 0x3, 0, 0},
8330         {0x21, 0, 0, 0, 0},
8331         {0x22, 0, 0, 0, 0},
8332         {0x23, 0x90, 0x90, 0, 0},
8333         {0x24, 0x55, 0x55, 0, 0},
8334         {0x25, 0x15, 0x15, 0, 0},
8335         {0x26, 0x5, 0x5, 0, 0},
8336         {0x27, 0x15, 0x15, 0, 0},
8337         {0x28, 0x5, 0x5, 0, 0},
8338         {0x29, 0x20, 0x20, 0, 0},
8339         {0x2A, 0x11, 0x11, 0, 0},
8340         {0x2B, 0x90, 0x90, 0, 0},
8341         {0x2C, 0, 0, 0, 0},
8342         {0x2D, 0x88, 0x88, 0, 0},
8343         {0x2E, 0x32, 0x32, 0, 0},
8344         {0x2F, 0x77, 0x77, 0, 0},
8345         {0x30, 0x17, 0x17, 1, 1},
8346         {0x31, 0xff, 0xff, 1, 1},
8347         {0x32, 0x20, 0x20, 0, 0},
8348         {0x33, 0, 0, 0, 0},
8349         {0x34, 0x88, 0x88, 0, 0},
8350         {0x35, 0x32, 0x32, 0, 0},
8351         {0x36, 0x77, 0x77, 0, 0},
8352         {0x37, 0x17, 0x17, 1, 1},
8353         {0x38, 0xf0, 0xf0, 1, 1},
8354         {0x39, 0x20, 0x20, 0, 0},
8355         {0x3A, 0x8, 0x8, 0, 0},
8356         {0x3B, 0x99, 0x99, 0, 0},
8357         {0x3C, 0, 0, 0, 0},
8358         {0x3D, 0x44, 0x44, 1, 1},
8359         {0x3E, 0, 0, 0, 0},
8360         {0x3F, 0x44, 0x44, 0, 0},
8361         {0x40, 0xf, 0xf, 1, 1},
8362         {0x41, 0x6, 0x6, 0, 0},
8363         {0x42, 0x4, 0x4, 0, 0},
8364         {0x43, 0x50, 0x50, 1, 1},
8365         {0x44, 0x8, 0x8, 0, 0},
8366         {0x45, 0x99, 0x99, 0, 0},
8367         {0x46, 0, 0, 0, 0},
8368         {0x47, 0x11, 0x11, 0, 0},
8369         {0x48, 0, 0, 0, 0},
8370         {0x49, 0x44, 0x44, 0, 0},
8371         {0x4A, 0x7, 0x7, 0, 0},
8372         {0x4B, 0x6, 0x6, 0, 0},
8373         {0x4C, 0x4, 0x4, 0, 0},
8374         {0x4D, 0, 0, 0, 0},
8375         {0x4E, 0, 0, 0, 0},
8376         {0x4F, 0x66, 0x66, 0, 0},
8377         {0x50, 0x66, 0x66, 0, 0},
8378         {0x51, 0x57, 0x57, 0, 0},
8379         {0x52, 0x57, 0x57, 0, 0},
8380         {0x53, 0x44, 0x44, 0, 0},
8381         {0x54, 0, 0, 0, 0},
8382         {0x55, 0, 0, 0, 0},
8383         {0x56, 0x8, 0x8, 0, 0},
8384         {0x57, 0x8, 0x8, 0, 0},
8385         {0x58, 0x7, 0x7, 0, 0},
8386         {0x59, 0x22, 0x22, 0, 0},
8387         {0x5A, 0x22, 0x22, 0, 0},
8388         {0x5B, 0x2, 0x2, 0, 0},
8389         {0x5C, 0x23, 0x23, 0, 0},
8390         {0x5D, 0x7, 0x7, 0, 0},
8391         {0x5E, 0x55, 0x55, 0, 0},
8392         {0x5F, 0x23, 0x23, 0, 0},
8393         {0x60, 0x41, 0x41, 0, 0},
8394         {0x61, 0x1, 0x1, 0, 0},
8395         {0x62, 0xa, 0xa, 0, 0},
8396         {0x63, 0, 0, 0, 0},
8397         {0x64, 0, 0, 0, 0},
8398         {0x65, 0, 0, 0, 0},
8399         {0x66, 0, 0, 0, 0},
8400         {0x67, 0, 0, 0, 0},
8401         {0x68, 0, 0, 0, 0},
8402         {0x69, 0, 0, 0, 0},
8403         {0x6A, 0, 0, 0, 0},
8404         {0x6B, 0xc, 0xc, 0, 0},
8405         {0x6C, 0, 0, 0, 0},
8406         {0x6D, 0, 0, 0, 0},
8407         {0x6E, 0, 0, 0, 0},
8408         {0x6F, 0, 0, 0, 0},
8409         {0x70, 0, 0, 0, 0},
8410         {0x71, 0, 0, 0, 0},
8411         {0x72, 0x22, 0x22, 0, 0},
8412         {0x73, 0x22, 0x22, 0, 0},
8413         {0x74, 0x2, 0x2, 0, 0},
8414         {0x75, 0xa, 0xa, 0, 0},
8415         {0x76, 0x1, 0x1, 0, 0},
8416         {0x77, 0x22, 0x22, 0, 0},
8417         {0x78, 0x30, 0x30, 0, 0},
8418         {0x79, 0, 0, 0, 0},
8419         {0x7A, 0, 0, 0, 0},
8420         {0x7B, 0, 0, 0, 0},
8421         {0x7C, 0, 0, 0, 0},
8422         {0x7D, 0, 0, 0, 0},
8423         {0x7E, 0, 0, 0, 0},
8424         {0x7F, 0, 0, 0, 0},
8425         {0x80, 0, 0, 0, 0},
8426         {0x81, 0, 0, 0, 0},
8427         {0x82, 0, 0, 0, 0},
8428         {0x83, 0, 0, 0, 0},
8429         {0x84, 0, 0, 0, 0},
8430         {0x85, 0, 0, 0, 0},
8431         {0x86, 0, 0, 0, 0},
8432         {0x87, 0, 0, 0, 0},
8433         {0x88, 0, 0, 0, 0},
8434         {0x89, 0, 0, 0, 0},
8435         {0x8A, 0, 0, 0, 0},
8436         {0x8B, 0, 0, 0, 0},
8437         {0x8C, 0, 0, 0, 0},
8438         {0x8D, 0, 0, 0, 0},
8439         {0x8E, 0, 0, 0, 0},
8440         {0x8F, 0, 0, 0, 0},
8441         {0x90, 0, 0, 0, 0},
8442         {0x91, 0, 0, 0, 0},
8443         {0x92, 0, 0, 0, 0},
8444         {0x93, 0, 0, 0, 0},
8445         {0x94, 0, 0, 0, 0},
8446         {0xFFFF, 0, 0, 0, 0}
8447 };
8448
8449 radio_regs_t regs_SYN_2056_A1[] = {
8450         {0x02, 0, 0, 0, 0},
8451         {0x03, 0, 0, 0, 0},
8452         {0x04, 0, 0, 0, 0},
8453         {0x05, 0, 0, 0, 0},
8454         {0x06, 0, 0, 0, 0},
8455         {0x07, 0, 0, 0, 0},
8456         {0x08, 0, 0, 0, 0},
8457         {0x09, 0x1, 0x1, 0, 0},
8458         {0x0A, 0, 0, 0, 0},
8459         {0x0B, 0, 0, 0, 0},
8460         {0x0C, 0, 0, 0, 0},
8461         {0x0D, 0, 0, 0, 0},
8462         {0x0E, 0, 0, 0, 0},
8463         {0x0F, 0, 0, 0, 0},
8464         {0x10, 0, 0, 0, 0},
8465         {0x11, 0, 0, 0, 0},
8466         {0x12, 0, 0, 0, 0},
8467         {0x13, 0, 0, 0, 0},
8468         {0x14, 0, 0, 0, 0},
8469         {0x15, 0, 0, 0, 0},
8470         {0x16, 0, 0, 0, 0},
8471         {0x17, 0, 0, 0, 0},
8472         {0x18, 0, 0, 0, 0},
8473         {0x19, 0, 0, 0, 0},
8474         {0x1A, 0, 0, 0, 0},
8475         {0x1B, 0, 0, 0, 0},
8476         {0x1C, 0, 0, 0, 0},
8477         {0x1D, 0, 0, 0, 0},
8478         {0x1E, 0, 0, 0, 0},
8479         {0x1F, 0, 0, 0, 0},
8480         {0x20, 0, 0, 0, 0},
8481         {0x21, 0, 0, 0, 0},
8482         {0x22, 0x60, 0x60, 0, 0},
8483         {0x23, 0x6, 0x6, 0, 0},
8484         {0x24, 0xc, 0xc, 0, 0},
8485         {0x25, 0, 0, 0, 0},
8486         {0x26, 0, 0, 0, 0},
8487         {0x27, 0, 0, 0, 0},
8488         {0x28, 0x1, 0x1, 0, 0},
8489         {0x29, 0, 0, 0, 0},
8490         {0x2A, 0, 0, 0, 0},
8491         {0x2B, 0, 0, 0, 0},
8492         {0x2C, 0, 0, 0, 0},
8493         {0x2D, 0, 0, 0, 0},
8494         {0x2E, 0xd, 0xd, 0, 0},
8495         {0x2F, 0x1f, 0x1f, 0, 0},
8496         {0x30, 0x15, 0x15, 0, 0},
8497         {0x31, 0xf, 0xf, 0, 0},
8498         {0x32, 0, 0, 0, 0},
8499         {0x33, 0, 0, 0, 0},
8500         {0x34, 0, 0, 0, 0},
8501         {0x35, 0, 0, 0, 0},
8502         {0x36, 0, 0, 0, 0},
8503         {0x37, 0, 0, 0, 0},
8504         {0x38, 0, 0, 0, 0},
8505         {0x39, 0, 0, 0, 0},
8506         {0x3A, 0, 0, 0, 0},
8507         {0x3B, 0, 0, 0, 0},
8508         {0x3C, 0x13, 0x13, 0, 0},
8509         {0x3D, 0xf, 0xf, 0, 0},
8510         {0x3E, 0x18, 0x18, 0, 0},
8511         {0x3F, 0, 0, 0, 0},
8512         {0x40, 0, 0, 0, 0},
8513         {0x41, 0x20, 0x20, 0, 0},
8514         {0x42, 0x20, 0x20, 0, 0},
8515         {0x43, 0, 0, 0, 0},
8516         {0x44, 0x77, 0x77, 0, 0},
8517         {0x45, 0x7, 0x7, 0, 0},
8518         {0x46, 0x1, 0x1, 0, 0},
8519         {0x47, 0x4, 0x4, 0, 0},
8520         {0x48, 0xf, 0xf, 0, 0},
8521         {0x49, 0x30, 0x30, 0, 0},
8522         {0x4A, 0x32, 0x32, 0, 0},
8523         {0x4B, 0xd, 0xd, 0, 0},
8524         {0x4C, 0xd, 0xd, 0, 0},
8525         {0x4D, 0x4, 0x4, 0, 0},
8526         {0x4E, 0x6, 0x6, 0, 0},
8527         {0x4F, 0x1, 0x1, 0, 0},
8528         {0x50, 0x1c, 0x1c, 0, 0},
8529         {0x51, 0x2, 0x2, 0, 0},
8530         {0x52, 0x2, 0x2, 0, 0},
8531         {0x53, 0xf7, 0xf7, 1, 1},
8532         {0x54, 0xb4, 0xb4, 0, 0},
8533         {0x55, 0xd2, 0xd2, 0, 0},
8534         {0x56, 0, 0, 0, 0},
8535         {0x57, 0, 0, 0, 0},
8536         {0x58, 0x4, 0x4, 0, 0},
8537         {0x59, 0x96, 0x96, 0, 0},
8538         {0x5A, 0x3e, 0x3e, 0, 0},
8539         {0x5B, 0x3e, 0x3e, 0, 0},
8540         {0x5C, 0x13, 0x13, 0, 0},
8541         {0x5D, 0x2, 0x2, 0, 0},
8542         {0x5E, 0, 0, 0, 0},
8543         {0x5F, 0x7, 0x7, 0, 0},
8544         {0x60, 0x7, 0x7, 1, 1},
8545         {0x61, 0x8, 0x8, 0, 0},
8546         {0x62, 0x3, 0x3, 0, 0},
8547         {0x63, 0, 0, 0, 0},
8548         {0x64, 0, 0, 0, 0},
8549         {0x65, 0, 0, 0, 0},
8550         {0x66, 0, 0, 0, 0},
8551         {0x67, 0, 0, 0, 0},
8552         {0x68, 0x40, 0x40, 0, 0},
8553         {0x69, 0, 0, 0, 0},
8554         {0x6A, 0, 0, 0, 0},
8555         {0x6B, 0, 0, 0, 0},
8556         {0x6C, 0, 0, 0, 0},
8557         {0x6D, 0x1, 0x1, 0, 0},
8558         {0x6E, 0, 0, 0, 0},
8559         {0x6F, 0, 0, 0, 0},
8560         {0x70, 0x60, 0x60, 0, 0},
8561         {0x71, 0x66, 0x66, 0, 0},
8562         {0x72, 0xc, 0xc, 0, 0},
8563         {0x73, 0x66, 0x66, 0, 0},
8564         {0x74, 0x8f, 0x8f, 1, 1},
8565         {0x75, 0, 0, 0, 0},
8566         {0x76, 0xcc, 0xcc, 0, 0},
8567         {0x77, 0x1, 0x1, 0, 0},
8568         {0x78, 0x66, 0x66, 0, 0},
8569         {0x79, 0x66, 0x66, 0, 0},
8570         {0x7A, 0, 0, 0, 0},
8571         {0x7B, 0, 0, 0, 0},
8572         {0x7C, 0, 0, 0, 0},
8573         {0x7D, 0, 0, 0, 0},
8574         {0x7E, 0, 0, 0, 0},
8575         {0x7F, 0, 0, 0, 0},
8576         {0x80, 0, 0, 0, 0},
8577         {0x81, 0, 0, 0, 0},
8578         {0x82, 0, 0, 0, 0},
8579         {0x83, 0, 0, 0, 0},
8580         {0x84, 0, 0, 0, 0},
8581         {0x85, 0xff, 0xff, 0, 0},
8582         {0x86, 0, 0, 0, 0},
8583         {0x87, 0, 0, 0, 0},
8584         {0x88, 0, 0, 0, 0},
8585         {0x89, 0, 0, 0, 0},
8586         {0x8A, 0, 0, 0, 0},
8587         {0x8B, 0, 0, 0, 0},
8588         {0x8C, 0, 0, 0, 0},
8589         {0x8D, 0, 0, 0, 0},
8590         {0x8E, 0, 0, 0, 0},
8591         {0x8F, 0, 0, 0, 0},
8592         {0x90, 0, 0, 0, 0},
8593         {0x91, 0, 0, 0, 0},
8594         {0x92, 0, 0, 0, 0},
8595         {0x93, 0, 0, 0, 0},
8596         {0x94, 0, 0, 0, 0},
8597         {0x95, 0, 0, 0, 0},
8598         {0x96, 0, 0, 0, 0},
8599         {0x97, 0, 0, 0, 0},
8600         {0x98, 0, 0, 0, 0},
8601         {0x99, 0, 0, 0, 0},
8602         {0x9A, 0, 0, 0, 0},
8603         {0x9B, 0, 0, 0, 0},
8604         {0x9C, 0, 0, 0, 0},
8605         {0x9D, 0, 0, 0, 0},
8606         {0x9E, 0, 0, 0, 0},
8607         {0x9F, 0x6, 0x6, 0, 0},
8608         {0xA0, 0x66, 0x66, 0, 0},
8609         {0xA1, 0x66, 0x66, 0, 0},
8610         {0xA2, 0x66, 0x66, 0, 0},
8611         {0xA3, 0x66, 0x66, 0, 0},
8612         {0xA4, 0x66, 0x66, 0, 0},
8613         {0xA5, 0x66, 0x66, 0, 0},
8614         {0xA6, 0x66, 0x66, 0, 0},
8615         {0xA7, 0x66, 0x66, 0, 0},
8616         {0xA8, 0x66, 0x66, 0, 0},
8617         {0xA9, 0x66, 0x66, 0, 0},
8618         {0xAA, 0x66, 0x66, 0, 0},
8619         {0xAB, 0x66, 0x66, 0, 0},
8620         {0xAC, 0x66, 0x66, 0, 0},
8621         {0xAD, 0x66, 0x66, 0, 0},
8622         {0xAE, 0x66, 0x66, 0, 0},
8623         {0xAF, 0x66, 0x66, 0, 0},
8624         {0xB0, 0x66, 0x66, 0, 0},
8625         {0xB1, 0x66, 0x66, 0, 0},
8626         {0xB2, 0x66, 0x66, 0, 0},
8627         {0xB3, 0xa, 0xa, 0, 0},
8628         {0xB4, 0, 0, 0, 0},
8629         {0xB5, 0, 0, 0, 0},
8630         {0xB6, 0, 0, 0, 0},
8631         {0xFFFF, 0, 0, 0, 0}
8632 };
8633
8634 radio_regs_t regs_TX_2056_A1[] = {
8635         {0x02, 0, 0, 0, 0},
8636         {0x03, 0, 0, 0, 0},
8637         {0x04, 0, 0, 0, 0},
8638         {0x05, 0, 0, 0, 0},
8639         {0x06, 0, 0, 0, 0},
8640         {0x07, 0, 0, 0, 0},
8641         {0x08, 0, 0, 0, 0},
8642         {0x09, 0, 0, 0, 0},
8643         {0x0A, 0, 0, 0, 0},
8644         {0x0B, 0, 0, 0, 0},
8645         {0x0C, 0, 0, 0, 0},
8646         {0x0D, 0, 0, 0, 0},
8647         {0x0E, 0, 0, 0, 0},
8648         {0x0F, 0, 0, 0, 0},
8649         {0x10, 0, 0, 0, 0},
8650         {0x11, 0, 0, 0, 0},
8651         {0x12, 0, 0, 0, 0},
8652         {0x13, 0, 0, 0, 0},
8653         {0x14, 0, 0, 0, 0},
8654         {0x15, 0, 0, 0, 0},
8655         {0x16, 0, 0, 0, 0},
8656         {0x17, 0, 0, 0, 0},
8657         {0x18, 0, 0, 0, 0},
8658         {0x19, 0, 0, 0, 0},
8659         {0x1A, 0, 0, 0, 0},
8660         {0x1B, 0, 0, 0, 0},
8661         {0x1C, 0, 0, 0, 0},
8662         {0x1D, 0, 0, 0, 0},
8663         {0x1E, 0, 0, 0, 0},
8664         {0x1F, 0, 0, 0, 0},
8665         {0x20, 0, 0, 0, 0},
8666         {0x21, 0x88, 0x88, 0, 0},
8667         {0x22, 0x88, 0x88, 0, 0},
8668         {0x23, 0x88, 0x88, 0, 0},
8669         {0x24, 0x88, 0x88, 0, 0},
8670         {0x25, 0xc, 0xc, 0, 0},
8671         {0x26, 0, 0, 0, 0},
8672         {0x27, 0x3, 0x3, 0, 0},
8673         {0x28, 0, 0, 0, 0},
8674         {0x29, 0x3, 0x3, 0, 0},
8675         {0x2A, 0x37, 0x37, 0, 0},
8676         {0x2B, 0x3, 0x3, 0, 0},
8677         {0x2C, 0, 0, 0, 0},
8678         {0x2D, 0, 0, 0, 0},
8679         {0x2E, 0x1, 0x1, 0, 0},
8680         {0x2F, 0x1, 0x1, 0, 0},
8681         {0x30, 0, 0, 0, 0},
8682         {0x31, 0, 0, 0, 0},
8683         {0x32, 0, 0, 0, 0},
8684         {0x33, 0x11, 0x11, 0, 0},
8685         {0x34, 0x11, 0x11, 0, 0},
8686         {0x35, 0, 0, 0, 0},
8687         {0x36, 0, 0, 0, 0},
8688         {0x37, 0x3, 0x3, 0, 0},
8689         {0x38, 0xf, 0xf, 0, 0},
8690         {0x39, 0, 0, 0, 0},
8691         {0x3A, 0x2d, 0x2d, 0, 0},
8692         {0x3B, 0, 0, 0, 0},
8693         {0x3C, 0x6e, 0x6e, 0, 0},
8694         {0x3D, 0xf0, 0xf0, 1, 1},
8695         {0x3E, 0, 0, 0, 0},
8696         {0x3F, 0, 0, 0, 0},
8697         {0x40, 0, 0, 0, 0},
8698         {0x41, 0x3, 0x3, 0, 0},
8699         {0x42, 0x3, 0x3, 0, 0},
8700         {0x43, 0, 0, 0, 0},
8701         {0x44, 0x1e, 0x1e, 0, 0},
8702         {0x45, 0, 0, 0, 0},
8703         {0x46, 0x6e, 0x6e, 0, 0},
8704         {0x47, 0xf0, 0xf0, 1, 1},
8705         {0x48, 0, 0, 0, 0},
8706         {0x49, 0x2, 0x2, 0, 0},
8707         {0x4A, 0xff, 0xff, 1, 1},
8708         {0x4B, 0xc, 0xc, 0, 0},
8709         {0x4C, 0, 0, 0, 0},
8710         {0x4D, 0x38, 0x38, 0, 0},
8711         {0x4E, 0x70, 0x70, 1, 1},
8712         {0x4F, 0x2, 0x2, 0, 0},
8713         {0x50, 0x88, 0x88, 0, 0},
8714         {0x51, 0xc, 0xc, 0, 0},
8715         {0x52, 0, 0, 0, 0},
8716         {0x53, 0x8, 0x8, 0, 0},
8717         {0x54, 0x70, 0x70, 1, 1},
8718         {0x55, 0x2, 0x2, 0, 0},
8719         {0x56, 0xff, 0xff, 1, 1},
8720         {0x57, 0, 0, 0, 0},
8721         {0x58, 0x83, 0x83, 0, 0},
8722         {0x59, 0x77, 0x77, 1, 1},
8723         {0x5A, 0, 0, 0, 0},
8724         {0x5B, 0x2, 0x2, 0, 0},
8725         {0x5C, 0x88, 0x88, 0, 0},
8726         {0x5D, 0, 0, 0, 0},
8727         {0x5E, 0x8, 0x8, 0, 0},
8728         {0x5F, 0x77, 0x77, 1, 1},
8729         {0x60, 0x1, 0x1, 0, 0},
8730         {0x61, 0, 0, 0, 0},
8731         {0x62, 0x7, 0x7, 0, 0},
8732         {0x63, 0, 0, 0, 0},
8733         {0x64, 0x7, 0x7, 0, 0},
8734         {0x65, 0, 0, 0, 0},
8735         {0x66, 0, 0, 0, 0},
8736         {0x67, 0x72, 0x72, 1, 1},
8737         {0x68, 0, 0, 0, 0},
8738         {0x69, 0xa, 0xa, 0, 0},
8739         {0x6A, 0, 0, 0, 0},
8740         {0x6B, 0, 0, 0, 0},
8741         {0x6C, 0, 0, 0, 0},
8742         {0x6D, 0, 0, 0, 0},
8743         {0x6E, 0, 0, 0, 0},
8744         {0x6F, 0, 0, 0, 0},
8745         {0x70, 0, 0, 0, 0},
8746         {0x71, 0x2, 0x2, 0, 0},
8747         {0x72, 0, 0, 0, 0},
8748         {0x73, 0, 0, 0, 0},
8749         {0x74, 0xe, 0xe, 0, 0},
8750         {0x75, 0xe, 0xe, 0, 0},
8751         {0x76, 0xe, 0xe, 0, 0},
8752         {0x77, 0x13, 0x13, 0, 0},
8753         {0x78, 0x13, 0x13, 0, 0},
8754         {0x79, 0x1b, 0x1b, 0, 0},
8755         {0x7A, 0x1b, 0x1b, 0, 0},
8756         {0x7B, 0x55, 0x55, 0, 0},
8757         {0x7C, 0x5b, 0x5b, 0, 0},
8758         {0x7D, 0, 0, 0, 0},
8759         {0x7E, 0, 0, 0, 0},
8760         {0x7F, 0, 0, 0, 0},
8761         {0x80, 0, 0, 0, 0},
8762         {0x81, 0, 0, 0, 0},
8763         {0x82, 0, 0, 0, 0},
8764         {0x83, 0, 0, 0, 0},
8765         {0x84, 0, 0, 0, 0},
8766         {0x85, 0, 0, 0, 0},
8767         {0x86, 0, 0, 0, 0},
8768         {0x87, 0, 0, 0, 0},
8769         {0x88, 0, 0, 0, 0},
8770         {0x89, 0, 0, 0, 0},
8771         {0x8A, 0, 0, 0, 0},
8772         {0x8B, 0, 0, 0, 0},
8773         {0x8C, 0, 0, 0, 0},
8774         {0x8D, 0, 0, 0, 0},
8775         {0x8E, 0, 0, 0, 0},
8776         {0x8F, 0, 0, 0, 0},
8777         {0x90, 0, 0, 0, 0},
8778         {0x91, 0, 0, 0, 0},
8779         {0x92, 0, 0, 0, 0},
8780         {0xFFFF, 0, 0, 0, 0}
8781 };
8782
8783 radio_regs_t regs_RX_2056_A1[] = {
8784         {0x02, 0, 0, 0, 0},
8785         {0x03, 0, 0, 0, 0},
8786         {0x04, 0, 0, 0, 0},
8787         {0x05, 0, 0, 0, 0},
8788         {0x06, 0, 0, 0, 0},
8789         {0x07, 0, 0, 0, 0},
8790         {0x08, 0, 0, 0, 0},
8791         {0x09, 0, 0, 0, 0},
8792         {0x0A, 0, 0, 0, 0},
8793         {0x0B, 0, 0, 0, 0},
8794         {0x0C, 0, 0, 0, 0},
8795         {0x0D, 0, 0, 0, 0},
8796         {0x0E, 0, 0, 0, 0},
8797         {0x0F, 0, 0, 0, 0},
8798         {0x10, 0, 0, 0, 0},
8799         {0x11, 0, 0, 0, 0},
8800         {0x12, 0, 0, 0, 0},
8801         {0x13, 0, 0, 0, 0},
8802         {0x14, 0, 0, 0, 0},
8803         {0x15, 0, 0, 0, 0},
8804         {0x16, 0, 0, 0, 0},
8805         {0x17, 0, 0, 0, 0},
8806         {0x18, 0, 0, 0, 0},
8807         {0x19, 0, 0, 0, 0},
8808         {0x1A, 0, 0, 0, 0},
8809         {0x1B, 0, 0, 0, 0},
8810         {0x1C, 0, 0, 0, 0},
8811         {0x1D, 0, 0, 0, 0},
8812         {0x1E, 0, 0, 0, 0},
8813         {0x1F, 0, 0, 0, 0},
8814         {0x20, 0x3, 0x3, 0, 0},
8815         {0x21, 0, 0, 0, 0},
8816         {0x22, 0, 0, 0, 0},
8817         {0x23, 0x90, 0x90, 0, 0},
8818         {0x24, 0x55, 0x55, 0, 0},
8819         {0x25, 0x15, 0x15, 0, 0},
8820         {0x26, 0x5, 0x5, 0, 0},
8821         {0x27, 0x15, 0x15, 0, 0},
8822         {0x28, 0x5, 0x5, 0, 0},
8823         {0x29, 0x20, 0x20, 0, 0},
8824         {0x2A, 0x11, 0x11, 0, 0},
8825         {0x2B, 0x90, 0x90, 0, 0},
8826         {0x2C, 0, 0, 0, 0},
8827         {0x2D, 0x88, 0x88, 0, 0},
8828         {0x2E, 0x32, 0x32, 0, 0},
8829         {0x2F, 0x77, 0x77, 0, 0},
8830         {0x30, 0x17, 0x17, 1, 1},
8831         {0x31, 0xff, 0xff, 1, 1},
8832         {0x32, 0x20, 0x20, 0, 0},
8833         {0x33, 0, 0, 0, 0},
8834         {0x34, 0x88, 0x88, 0, 0},
8835         {0x35, 0x32, 0x32, 0, 0},
8836         {0x36, 0x77, 0x77, 0, 0},
8837         {0x37, 0x17, 0x17, 1, 1},
8838         {0x38, 0xf0, 0xf0, 1, 1},
8839         {0x39, 0x20, 0x20, 0, 0},
8840         {0x3A, 0x8, 0x8, 0, 0},
8841         {0x3B, 0x55, 0x55, 1, 1},
8842         {0x3C, 0, 0, 0, 0},
8843         {0x3D, 0x44, 0x44, 1, 1},
8844         {0x3E, 0, 0, 0, 0},
8845         {0x3F, 0x44, 0x44, 0, 0},
8846         {0x40, 0xf, 0xf, 1, 1},
8847         {0x41, 0x6, 0x6, 0, 0},
8848         {0x42, 0x4, 0x4, 0, 0},
8849         {0x43, 0x50, 0x50, 1, 1},
8850         {0x44, 0x8, 0x8, 0, 0},
8851         {0x45, 0x55, 0x55, 1, 1},
8852         {0x46, 0, 0, 0, 0},
8853         {0x47, 0x11, 0x11, 0, 0},
8854         {0x48, 0, 0, 0, 0},
8855         {0x49, 0x44, 0x44, 0, 0},
8856         {0x4A, 0x7, 0x7, 0, 0},
8857         {0x4B, 0x6, 0x6, 0, 0},
8858         {0x4C, 0x4, 0x4, 0, 0},
8859         {0x4D, 0, 0, 0, 0},
8860         {0x4E, 0, 0, 0, 0},
8861         {0x4F, 0x26, 0x26, 1, 1},
8862         {0x50, 0x26, 0x26, 1, 1},
8863         {0x51, 0xf, 0xf, 1, 1},
8864         {0x52, 0xf, 0xf, 1, 1},
8865         {0x53, 0x44, 0x44, 0, 0},
8866         {0x54, 0, 0, 0, 0},
8867         {0x55, 0, 0, 0, 0},
8868         {0x56, 0x8, 0x8, 0, 0},
8869         {0x57, 0x8, 0x8, 0, 0},
8870         {0x58, 0x7, 0x7, 0, 0},
8871         {0x59, 0x22, 0x22, 0, 0},
8872         {0x5A, 0x22, 0x22, 0, 0},
8873         {0x5B, 0x2, 0x2, 0, 0},
8874         {0x5C, 0x2f, 0x2f, 1, 1},
8875         {0x5D, 0x7, 0x7, 0, 0},
8876         {0x5E, 0x55, 0x55, 0, 0},
8877         {0x5F, 0x23, 0x23, 0, 0},
8878         {0x60, 0x41, 0x41, 0, 0},
8879         {0x61, 0x1, 0x1, 0, 0},
8880         {0x62, 0xa, 0xa, 0, 0},
8881         {0x63, 0, 0, 0, 0},
8882         {0x64, 0, 0, 0, 0},
8883         {0x65, 0, 0, 0, 0},
8884         {0x66, 0, 0, 0, 0},
8885         {0x67, 0, 0, 0, 0},
8886         {0x68, 0, 0, 0, 0},
8887         {0x69, 0, 0, 0, 0},
8888         {0x6A, 0, 0, 0, 0},
8889         {0x6B, 0xc, 0xc, 0, 0},
8890         {0x6C, 0, 0, 0, 0},
8891         {0x6D, 0, 0, 0, 0},
8892         {0x6E, 0, 0, 0, 0},
8893         {0x6F, 0, 0, 0, 0},
8894         {0x70, 0, 0, 0, 0},
8895         {0x71, 0, 0, 0, 0},
8896         {0x72, 0x22, 0x22, 0, 0},
8897         {0x73, 0x22, 0x22, 0, 0},
8898         {0x74, 0, 0, 1, 1},
8899         {0x75, 0xa, 0xa, 0, 0},
8900         {0x76, 0x1, 0x1, 0, 0},
8901         {0x77, 0x22, 0x22, 0, 0},
8902         {0x78, 0x30, 0x30, 0, 0},
8903         {0x79, 0, 0, 0, 0},
8904         {0x7A, 0, 0, 0, 0},
8905         {0x7B, 0, 0, 0, 0},
8906         {0x7C, 0, 0, 0, 0},
8907         {0x7D, 0, 0, 0, 0},
8908         {0x7E, 0, 0, 0, 0},
8909         {0x7F, 0, 0, 0, 0},
8910         {0x80, 0, 0, 0, 0},
8911         {0x81, 0, 0, 0, 0},
8912         {0x82, 0, 0, 0, 0},
8913         {0x83, 0, 0, 0, 0},
8914         {0x84, 0, 0, 0, 0},
8915         {0x85, 0, 0, 0, 0},
8916         {0x86, 0, 0, 0, 0},
8917         {0x87, 0, 0, 0, 0},
8918         {0x88, 0, 0, 0, 0},
8919         {0x89, 0, 0, 0, 0},
8920         {0x8A, 0, 0, 0, 0},
8921         {0x8B, 0, 0, 0, 0},
8922         {0x8C, 0, 0, 0, 0},
8923         {0x8D, 0, 0, 0, 0},
8924         {0x8E, 0, 0, 0, 0},
8925         {0x8F, 0, 0, 0, 0},
8926         {0x90, 0, 0, 0, 0},
8927         {0x91, 0, 0, 0, 0},
8928         {0x92, 0, 0, 0, 0},
8929         {0x93, 0, 0, 0, 0},
8930         {0x94, 0, 0, 0, 0},
8931         {0xFFFF, 0, 0, 0, 0}
8932 };
8933
8934 radio_regs_t regs_SYN_2056_rev5[] = {
8935         {0x02, 0, 0, 0, 0},
8936         {0x03, 0, 0, 0, 0},
8937         {0x04, 0, 0, 0, 0},
8938         {0x05, 0, 0, 0, 0},
8939         {0x06, 0, 0, 0, 0},
8940         {0x07, 0, 0, 0, 0},
8941         {0x08, 0, 0, 0, 0},
8942         {0x09, 0x1, 0x1, 0, 0},
8943         {0x0A, 0, 0, 0, 0},
8944         {0x0B, 0, 0, 0, 0},
8945         {0x0C, 0, 0, 0, 0},
8946         {0x0D, 0, 0, 0, 0},
8947         {0x0E, 0, 0, 0, 0},
8948         {0x0F, 0, 0, 0, 0},
8949         {0x10, 0, 0, 0, 0},
8950         {0x11, 0, 0, 0, 0},
8951         {0x12, 0, 0, 0, 0},
8952         {0x13, 0, 0, 0, 0},
8953         {0x14, 0, 0, 0, 0},
8954         {0x15, 0, 0, 0, 0},
8955         {0x16, 0, 0, 0, 0},
8956         {0x17, 0, 0, 0, 0},
8957         {0x18, 0, 0, 0, 0},
8958         {0x19, 0, 0, 0, 0},
8959         {0x1A, 0, 0, 0, 0},
8960         {0x1B, 0, 0, 0, 0},
8961         {0x1C, 0, 0, 0, 0},
8962         {0x1D, 0, 0, 0, 0},
8963         {0x1E, 0, 0, 0, 0},
8964         {0x1F, 0, 0, 0, 0},
8965         {0x20, 0, 0, 0, 0},
8966         {0x21, 0, 0, 0, 0},
8967         {0x22, 0x60, 0x60, 0, 0},
8968         {0x23, 0x6, 0x6, 0, 0},
8969         {0x24, 0xc, 0xc, 0, 0},
8970         {0x25, 0, 0, 0, 0},
8971         {0x26, 0, 0, 0, 0},
8972         {0x27, 0, 0, 0, 0},
8973         {0x28, 0x1, 0x1, 0, 0},
8974         {0x29, 0, 0, 0, 0},
8975         {0x2A, 0, 0, 0, 0},
8976         {0x2B, 0, 0, 0, 0},
8977         {0x2C, 0, 0, 0, 0},
8978         {0x2D, 0, 0, 0, 0},
8979         {0x2E, 0, 0, 0, 0},
8980         {0x2F, 0x1f, 0x1f, 0, 0},
8981         {0x30, 0x15, 0x15, 0, 0},
8982         {0x31, 0xf, 0xf, 0, 0},
8983         {0x32, 0, 0, 0, 0},
8984         {0x33, 0, 0, 0, 0},
8985         {0x34, 0, 0, 0, 0},
8986         {0x35, 0, 0, 0, 0},
8987         {0x36, 0, 0, 0, 0},
8988         {0x37, 0, 0, 0, 0},
8989         {0x38, 0, 0, 0, 0},
8990         {0x39, 0, 0, 0, 0},
8991         {0x3A, 0, 0, 0, 0},
8992         {0x3B, 0, 0, 0, 0},
8993         {0x3C, 0x13, 0x13, 0, 0},
8994         {0x3D, 0xf, 0xf, 0, 0},
8995         {0x3E, 0x18, 0x18, 0, 0},
8996         {0x3F, 0, 0, 0, 0},
8997         {0x40, 0, 0, 0, 0},
8998         {0x41, 0x20, 0x20, 0, 0},
8999         {0x42, 0x20, 0x20, 0, 0},
9000         {0x43, 0, 0, 0, 0},
9001         {0x44, 0x77, 0x77, 0, 0},
9002         {0x45, 0x7, 0x7, 0, 0},
9003         {0x46, 0x1, 0x1, 0, 0},
9004         {0x47, 0x4, 0x4, 0, 0},
9005         {0x48, 0xf, 0xf, 0, 0},
9006         {0x49, 0x30, 0x30, 0, 0},
9007         {0x4A, 0x32, 0x32, 0, 0},
9008         {0x4B, 0xd, 0xd, 0, 0},
9009         {0x4C, 0xd, 0xd, 0, 0},
9010         {0x4D, 0x4, 0x4, 0, 0},
9011         {0x4E, 0x6, 0x6, 0, 0},
9012         {0x4F, 0x1, 0x1, 0, 0},
9013         {0x50, 0x1c, 0x1c, 0, 0},
9014         {0x51, 0x2, 0x2, 0, 0},
9015         {0x52, 0x2, 0x2, 0, 0},
9016         {0x53, 0xf7, 0xf7, 1, 1},
9017         {0x54, 0xb4, 0xb4, 0, 0},
9018         {0x55, 0xd2, 0xd2, 0, 0},
9019         {0x56, 0, 0, 0, 0},
9020         {0x57, 0, 0, 0, 0},
9021         {0x58, 0x4, 0x4, 0, 0},
9022         {0x59, 0x96, 0x96, 0, 0},
9023         {0x5A, 0x3e, 0x3e, 0, 0},
9024         {0x5B, 0x3e, 0x3e, 0, 0},
9025         {0x5C, 0x13, 0x13, 0, 0},
9026         {0x5D, 0x2, 0x2, 0, 0},
9027         {0x5E, 0, 0, 0, 0},
9028         {0x5F, 0x7, 0x7, 0, 0},
9029         {0x60, 0x7, 0x7, 1, 1},
9030         {0x61, 0x8, 0x8, 0, 0},
9031         {0x62, 0x3, 0x3, 0, 0},
9032         {0x63, 0, 0, 0, 0},
9033         {0x64, 0, 0, 0, 0},
9034         {0x65, 0, 0, 0, 0},
9035         {0x66, 0, 0, 0, 0},
9036         {0x67, 0, 0, 0, 0},
9037         {0x68, 0x40, 0x40, 0, 0},
9038         {0x69, 0, 0, 0, 0},
9039         {0x6A, 0, 0, 0, 0},
9040         {0x6B, 0, 0, 0, 0},
9041         {0x6C, 0, 0, 0, 0},
9042         {0x6D, 0x1, 0x1, 0, 0},
9043         {0x6E, 0, 0, 0, 0},
9044         {0x6F, 0, 0, 0, 0},
9045         {0x70, 0x60, 0x60, 0, 0},
9046         {0x71, 0x66, 0x66, 0, 0},
9047         {0x72, 0xc, 0xc, 0, 0},
9048         {0x73, 0x66, 0x66, 0, 0},
9049         {0x74, 0x8f, 0x8f, 1, 1},
9050         {0x75, 0, 0, 0, 0},
9051         {0x76, 0xcc, 0xcc, 0, 0},
9052         {0x77, 0x1, 0x1, 0, 0},
9053         {0x78, 0x66, 0x66, 0, 0},
9054         {0x79, 0x66, 0x66, 0, 0},
9055         {0x7A, 0, 0, 0, 0},
9056         {0x7B, 0, 0, 0, 0},
9057         {0x7C, 0, 0, 0, 0},
9058         {0x7D, 0, 0, 0, 0},
9059         {0x7E, 0, 0, 0, 0},
9060         {0x7F, 0, 0, 0, 0},
9061         {0x80, 0, 0, 0, 0},
9062         {0x81, 0, 0, 0, 0},
9063         {0x82, 0, 0, 0, 0},
9064         {0x83, 0, 0, 0, 0},
9065         {0x84, 0, 0, 0, 0},
9066         {0x85, 0xff, 0xff, 0, 0},
9067         {0x86, 0, 0, 0, 0},
9068         {0x87, 0, 0, 0, 0},
9069         {0x88, 0, 0, 0, 0},
9070         {0x89, 0, 0, 0, 0},
9071         {0x8A, 0, 0, 0, 0},
9072         {0x8B, 0, 0, 0, 0},
9073         {0x8C, 0, 0, 0, 0},
9074         {0x8D, 0, 0, 0, 0},
9075         {0x8E, 0, 0, 0, 0},
9076         {0x8F, 0, 0, 0, 0},
9077         {0x90, 0, 0, 0, 0},
9078         {0x91, 0, 0, 0, 0},
9079         {0x92, 0, 0, 0, 0},
9080         {0x93, 0, 0, 0, 0},
9081         {0x94, 0, 0, 0, 0},
9082         {0x95, 0, 0, 0, 0},
9083         {0x96, 0, 0, 0, 0},
9084         {0x97, 0, 0, 0, 0},
9085         {0x98, 0, 0, 0, 0},
9086         {0x99, 0, 0, 0, 0},
9087         {0x9A, 0, 0, 0, 0},
9088         {0x9B, 0, 0, 0, 0},
9089         {0x9C, 0, 0, 0, 0},
9090         {0x9D, 0, 0, 0, 0},
9091         {0x9E, 0, 0, 0, 0},
9092         {0x9F, 0x6, 0x6, 0, 0},
9093         {0xA0, 0x66, 0x66, 0, 0},
9094         {0xA1, 0x66, 0x66, 0, 0},
9095         {0xA2, 0x66, 0x66, 0, 0},
9096         {0xA3, 0x66, 0x66, 0, 0},
9097         {0xA4, 0x66, 0x66, 0, 0},
9098         {0xA5, 0x66, 0x66, 0, 0},
9099         {0xA6, 0x66, 0x66, 0, 0},
9100         {0xA7, 0x66, 0x66, 0, 0},
9101         {0xA8, 0x66, 0x66, 0, 0},
9102         {0xA9, 0x66, 0x66, 0, 0},
9103         {0xAA, 0x66, 0x66, 0, 0},
9104         {0xAB, 0x66, 0x66, 0, 0},
9105         {0xAC, 0x66, 0x66, 0, 0},
9106         {0xAD, 0x66, 0x66, 0, 0},
9107         {0xAE, 0x66, 0x66, 0, 0},
9108         {0xAF, 0x66, 0x66, 0, 0},
9109         {0xB0, 0x66, 0x66, 0, 0},
9110         {0xB1, 0x66, 0x66, 0, 0},
9111         {0xB2, 0x66, 0x66, 0, 0},
9112         {0xB3, 0xa, 0xa, 0, 0},
9113         {0xB4, 0, 0, 0, 0},
9114         {0xB5, 0, 0, 0, 0},
9115         {0xB6, 0, 0, 0, 0},
9116         {0xFFFF, 0, 0, 0, 0}
9117 };
9118
9119 radio_regs_t regs_TX_2056_rev5[] = {
9120         {0x02, 0, 0, 0, 0},
9121         {0x03, 0, 0, 0, 0},
9122         {0x04, 0, 0, 0, 0},
9123         {0x05, 0, 0, 0, 0},
9124         {0x06, 0, 0, 0, 0},
9125         {0x07, 0, 0, 0, 0},
9126         {0x08, 0, 0, 0, 0},
9127         {0x09, 0, 0, 0, 0},
9128         {0x0A, 0, 0, 0, 0},
9129         {0x0B, 0, 0, 0, 0},
9130         {0x0C, 0, 0, 0, 0},
9131         {0x0D, 0, 0, 0, 0},
9132         {0x0E, 0, 0, 0, 0},
9133         {0x0F, 0, 0, 0, 0},
9134         {0x10, 0, 0, 0, 0},
9135         {0x11, 0, 0, 0, 0},
9136         {0x12, 0, 0, 0, 0},
9137         {0x13, 0, 0, 0, 0},
9138         {0x14, 0, 0, 0, 0},
9139         {0x15, 0, 0, 0, 0},
9140         {0x16, 0, 0, 0, 0},
9141         {0x17, 0, 0, 0, 0},
9142         {0x18, 0, 0, 0, 0},
9143         {0x19, 0, 0, 0, 0},
9144         {0x1A, 0, 0, 0, 0},
9145         {0x1B, 0, 0, 0, 0},
9146         {0x1C, 0, 0, 0, 0},
9147         {0x1D, 0, 0, 0, 0},
9148         {0x1E, 0, 0, 0, 0},
9149         {0x1F, 0, 0, 0, 0},
9150         {0x20, 0, 0, 0, 0},
9151         {0x21, 0x88, 0x88, 0, 0},
9152         {0x22, 0x88, 0x88, 0, 0},
9153         {0x23, 0x88, 0x88, 0, 0},
9154         {0x24, 0x88, 0x88, 0, 0},
9155         {0x25, 0xc, 0xc, 0, 0},
9156         {0x26, 0, 0, 0, 0},
9157         {0x27, 0x3, 0x3, 0, 0},
9158         {0x28, 0, 0, 0, 0},
9159         {0x29, 0x3, 0x3, 0, 0},
9160         {0x2A, 0x37, 0x37, 0, 0},
9161         {0x2B, 0x3, 0x3, 0, 0},
9162         {0x2C, 0, 0, 0, 0},
9163         {0x2D, 0, 0, 0, 0},
9164         {0x2E, 0x1, 0x1, 0, 0},
9165         {0x2F, 0x1, 0x1, 0, 0},
9166         {0x30, 0, 0, 0, 0},
9167         {0x31, 0, 0, 0, 0},
9168         {0x32, 0, 0, 0, 0},
9169         {0x33, 0x11, 0x11, 0, 0},
9170         {0x34, 0x11, 0x11, 0, 0},
9171         {0x35, 0, 0, 0, 0},
9172         {0x36, 0, 0, 0, 0},
9173         {0x37, 0x3, 0x3, 0, 0},
9174         {0x38, 0xf, 0xf, 0, 0},
9175         {0x39, 0, 0, 0, 0},
9176         {0x3A, 0x2d, 0x2d, 0, 0},
9177         {0x3B, 0, 0, 0, 0},
9178         {0x3C, 0x6e, 0x6e, 0, 0},
9179         {0x3D, 0xf0, 0xf0, 1, 1},
9180         {0x3E, 0, 0, 0, 0},
9181         {0x3F, 0, 0, 0, 0},
9182         {0x40, 0, 0, 0, 0},
9183         {0x41, 0x3, 0x3, 0, 0},
9184         {0x42, 0x3, 0x3, 0, 0},
9185         {0x43, 0, 0, 0, 0},
9186         {0x44, 0x1e, 0x1e, 0, 0},
9187         {0x45, 0, 0, 0, 0},
9188         {0x46, 0x6e, 0x6e, 0, 0},
9189         {0x47, 0xf0, 0xf0, 1, 1},
9190         {0x48, 0, 0, 0, 0},
9191         {0x49, 0x2, 0x2, 0, 0},
9192         {0x4A, 0xff, 0xff, 1, 1},
9193         {0x4B, 0xc, 0xc, 0, 0},
9194         {0x4C, 0, 0, 0, 0},
9195         {0x4D, 0x38, 0x38, 0, 0},
9196         {0x4E, 0x70, 0x70, 1, 1},
9197         {0x4F, 0x2, 0x2, 0, 0},
9198         {0x50, 0x88, 0x88, 0, 0},
9199         {0x51, 0xc, 0xc, 0, 0},
9200         {0x52, 0, 0, 0, 0},
9201         {0x53, 0x8, 0x8, 0, 0},
9202         {0x54, 0x70, 0x70, 1, 1},
9203         {0x55, 0x2, 0x2, 0, 0},
9204         {0x56, 0xff, 0xff, 1, 1},
9205         {0x57, 0, 0, 0, 0},
9206         {0x58, 0x83, 0x83, 0, 0},
9207         {0x59, 0x77, 0x77, 1, 1},
9208         {0x5A, 0, 0, 0, 0},
9209         {0x5B, 0x2, 0x2, 0, 0},
9210         {0x5C, 0x88, 0x88, 0, 0},
9211         {0x5D, 0, 0, 0, 0},
9212         {0x5E, 0x8, 0x8, 0, 0},
9213         {0x5F, 0x77, 0x77, 1, 1},
9214         {0x60, 0x1, 0x1, 0, 0},
9215         {0x61, 0, 0, 0, 0},
9216         {0x62, 0x7, 0x7, 0, 0},
9217         {0x63, 0, 0, 0, 0},
9218         {0x64, 0x7, 0x7, 0, 0},
9219         {0x65, 0, 0, 0, 0},
9220         {0x66, 0, 0, 0, 0},
9221         {0x67, 0, 0, 1, 1},
9222         {0x68, 0, 0, 0, 0},
9223         {0x69, 0xa, 0xa, 0, 0},
9224         {0x6A, 0, 0, 0, 0},
9225         {0x6B, 0, 0, 0, 0},
9226         {0x6C, 0, 0, 0, 0},
9227         {0x6D, 0, 0, 0, 0},
9228         {0x6E, 0, 0, 0, 0},
9229         {0x6F, 0, 0, 0, 0},
9230         {0x70, 0, 0, 0, 0},
9231         {0x71, 0x2, 0x2, 0, 0},
9232         {0x72, 0, 0, 0, 0},
9233         {0x73, 0, 0, 0, 0},
9234         {0x74, 0xe, 0xe, 0, 0},
9235         {0x75, 0xe, 0xe, 0, 0},
9236         {0x76, 0xe, 0xe, 0, 0},
9237         {0x77, 0x13, 0x13, 0, 0},
9238         {0x78, 0x13, 0x13, 0, 0},
9239         {0x79, 0x1b, 0x1b, 0, 0},
9240         {0x7A, 0x1b, 0x1b, 0, 0},
9241         {0x7B, 0x55, 0x55, 0, 0},
9242         {0x7C, 0x5b, 0x5b, 0, 0},
9243         {0x7D, 0, 0, 0, 0},
9244         {0x7E, 0, 0, 0, 0},
9245         {0x7F, 0, 0, 0, 0},
9246         {0x80, 0, 0, 0, 0},
9247         {0x81, 0, 0, 0, 0},
9248         {0x82, 0, 0, 0, 0},
9249         {0x83, 0, 0, 0, 0},
9250         {0x84, 0, 0, 0, 0},
9251         {0x85, 0, 0, 0, 0},
9252         {0x86, 0, 0, 0, 0},
9253         {0x87, 0, 0, 0, 0},
9254         {0x88, 0, 0, 0, 0},
9255         {0x89, 0, 0, 0, 0},
9256         {0x8A, 0, 0, 0, 0},
9257         {0x8B, 0, 0, 0, 0},
9258         {0x8C, 0, 0, 0, 0},
9259         {0x8D, 0, 0, 0, 0},
9260         {0x8E, 0, 0, 0, 0},
9261         {0x8F, 0, 0, 0, 0},
9262         {0x90, 0, 0, 0, 0},
9263         {0x91, 0, 0, 0, 0},
9264         {0x92, 0, 0, 0, 0},
9265         {0x93, 0x70, 0x70, 0, 0},
9266         {0x94, 0x70, 0x70, 0, 0},
9267         {0x95, 0x71, 0x71, 1, 1},
9268         {0x96, 0x71, 0x71, 1, 1},
9269         {0x97, 0x72, 0x72, 1, 1},
9270         {0x98, 0x73, 0x73, 1, 1},
9271         {0x99, 0x74, 0x74, 1, 1},
9272         {0x9A, 0x75, 0x75, 1, 1},
9273         {0xFFFF, 0, 0, 0, 0}
9274 };
9275
9276 radio_regs_t regs_RX_2056_rev5[] = {
9277         {0x02, 0, 0, 0, 0},
9278         {0x03, 0, 0, 0, 0},
9279         {0x04, 0, 0, 0, 0},
9280         {0x05, 0, 0, 0, 0},
9281         {0x06, 0, 0, 0, 0},
9282         {0x07, 0, 0, 0, 0},
9283         {0x08, 0, 0, 0, 0},
9284         {0x09, 0, 0, 0, 0},
9285         {0x0A, 0, 0, 0, 0},
9286         {0x0B, 0, 0, 0, 0},
9287         {0x0C, 0, 0, 0, 0},
9288         {0x0D, 0, 0, 0, 0},
9289         {0x0E, 0, 0, 0, 0},
9290         {0x0F, 0, 0, 0, 0},
9291         {0x10, 0, 0, 0, 0},
9292         {0x11, 0, 0, 0, 0},
9293         {0x12, 0, 0, 0, 0},
9294         {0x13, 0, 0, 0, 0},
9295         {0x14, 0, 0, 0, 0},
9296         {0x15, 0, 0, 0, 0},
9297         {0x16, 0, 0, 0, 0},
9298         {0x17, 0, 0, 0, 0},
9299         {0x18, 0, 0, 0, 0},
9300         {0x19, 0, 0, 0, 0},
9301         {0x1A, 0, 0, 0, 0},
9302         {0x1B, 0, 0, 0, 0},
9303         {0x1C, 0, 0, 0, 0},
9304         {0x1D, 0, 0, 0, 0},
9305         {0x1E, 0, 0, 0, 0},
9306         {0x1F, 0, 0, 0, 0},
9307         {0x20, 0x3, 0x3, 0, 0},
9308         {0x21, 0, 0, 0, 0},
9309         {0x22, 0, 0, 0, 0},
9310         {0x23, 0x90, 0x90, 0, 0},
9311         {0x24, 0x55, 0x55, 0, 0},
9312         {0x25, 0x15, 0x15, 0, 0},
9313         {0x26, 0x5, 0x5, 0, 0},
9314         {0x27, 0x15, 0x15, 0, 0},
9315         {0x28, 0x5, 0x5, 0, 0},
9316         {0x29, 0x20, 0x20, 0, 0},
9317         {0x2A, 0x11, 0x11, 0, 0},
9318         {0x2B, 0x90, 0x90, 0, 0},
9319         {0x2C, 0, 0, 0, 0},
9320         {0x2D, 0x88, 0x88, 0, 0},
9321         {0x2E, 0x32, 0x32, 0, 0},
9322         {0x2F, 0x77, 0x77, 0, 0},
9323         {0x30, 0x17, 0x17, 1, 1},
9324         {0x31, 0xff, 0xff, 1, 1},
9325         {0x32, 0x20, 0x20, 0, 0},
9326         {0x33, 0, 0, 0, 0},
9327         {0x34, 0x88, 0x88, 0, 0},
9328         {0x35, 0x32, 0x32, 0, 0},
9329         {0x36, 0x77, 0x77, 0, 0},
9330         {0x37, 0x17, 0x17, 1, 1},
9331         {0x38, 0xf0, 0xf0, 1, 1},
9332         {0x39, 0x20, 0x20, 0, 0},
9333         {0x3A, 0x8, 0x8, 0, 0},
9334         {0x3B, 0x55, 0x55, 1, 1},
9335         {0x3C, 0, 0, 0, 0},
9336         {0x3D, 0x88, 0x88, 1, 1},
9337         {0x3E, 0, 0, 0, 0},
9338         {0x3F, 0, 0, 1, 1},
9339         {0x40, 0x7, 0x7, 1, 1},
9340         {0x41, 0x6, 0x6, 0, 0},
9341         {0x42, 0x4, 0x4, 0, 0},
9342         {0x43, 0, 0, 0, 0},
9343         {0x44, 0x8, 0x8, 0, 0},
9344         {0x45, 0x55, 0x55, 1, 1},
9345         {0x46, 0, 0, 0, 0},
9346         {0x47, 0x11, 0x11, 0, 0},
9347         {0x48, 0, 0, 0, 0},
9348         {0x49, 0, 0, 1, 1},
9349         {0x4A, 0x7, 0x7, 0, 0},
9350         {0x4B, 0x6, 0x6, 0, 0},
9351         {0x4C, 0x4, 0x4, 0, 0},
9352         {0x4D, 0, 0, 0, 0},
9353         {0x4E, 0, 0, 0, 0},
9354         {0x4F, 0x26, 0x26, 1, 1},
9355         {0x50, 0x26, 0x26, 1, 1},
9356         {0x51, 0xf, 0xf, 1, 1},
9357         {0x52, 0xf, 0xf, 1, 1},
9358         {0x53, 0x44, 0x44, 0, 0},
9359         {0x54, 0, 0, 0, 0},
9360         {0x55, 0, 0, 0, 0},
9361         {0x56, 0x8, 0x8, 0, 0},
9362         {0x57, 0x8, 0x8, 0, 0},
9363         {0x58, 0x7, 0x7, 0, 0},
9364         {0x59, 0x22, 0x22, 0, 0},
9365         {0x5A, 0x22, 0x22, 0, 0},
9366         {0x5B, 0x2, 0x2, 0, 0},
9367         {0x5C, 0x4, 0x4, 1, 1},
9368         {0x5D, 0x7, 0x7, 0, 0},
9369         {0x5E, 0x55, 0x55, 0, 0},
9370         {0x5F, 0x23, 0x23, 0, 0},
9371         {0x60, 0x41, 0x41, 0, 0},
9372         {0x61, 0x1, 0x1, 0, 0},
9373         {0x62, 0xa, 0xa, 0, 0},
9374         {0x63, 0, 0, 0, 0},
9375         {0x64, 0, 0, 0, 0},
9376         {0x65, 0, 0, 0, 0},
9377         {0x66, 0, 0, 0, 0},
9378         {0x67, 0, 0, 0, 0},
9379         {0x68, 0, 0, 0, 0},
9380         {0x69, 0, 0, 0, 0},
9381         {0x6A, 0, 0, 0, 0},
9382         {0x6B, 0xc, 0xc, 0, 0},
9383         {0x6C, 0, 0, 0, 0},
9384         {0x6D, 0, 0, 0, 0},
9385         {0x6E, 0, 0, 0, 0},
9386         {0x6F, 0, 0, 0, 0},
9387         {0x70, 0, 0, 0, 0},
9388         {0x71, 0, 0, 0, 0},
9389         {0x72, 0x22, 0x22, 0, 0},
9390         {0x73, 0x22, 0x22, 0, 0},
9391         {0x74, 0, 0, 1, 1},
9392         {0x75, 0xa, 0xa, 0, 0},
9393         {0x76, 0x1, 0x1, 0, 0},
9394         {0x77, 0x22, 0x22, 0, 0},
9395         {0x78, 0x30, 0x30, 0, 0},
9396         {0x79, 0, 0, 0, 0},
9397         {0x7A, 0, 0, 0, 0},
9398         {0x7B, 0, 0, 0, 0},
9399         {0x7C, 0, 0, 0, 0},
9400         {0x7D, 0, 0, 0, 0},
9401         {0x7E, 0, 0, 0, 0},
9402         {0x7F, 0, 0, 0, 0},
9403         {0x80, 0, 0, 0, 0},
9404         {0x81, 0, 0, 0, 0},
9405         {0x82, 0, 0, 0, 0},
9406         {0x83, 0, 0, 0, 0},
9407         {0x84, 0, 0, 0, 0},
9408         {0x85, 0, 0, 0, 0},
9409         {0x86, 0, 0, 0, 0},
9410         {0x87, 0, 0, 0, 0},
9411         {0x88, 0, 0, 0, 0},
9412         {0x89, 0, 0, 0, 0},
9413         {0x8A, 0, 0, 0, 0},
9414         {0x8B, 0, 0, 0, 0},
9415         {0x8C, 0, 0, 0, 0},
9416         {0x8D, 0, 0, 0, 0},
9417         {0x8E, 0, 0, 0, 0},
9418         {0x8F, 0, 0, 0, 0},
9419         {0x90, 0, 0, 0, 0},
9420         {0x91, 0, 0, 0, 0},
9421         {0x92, 0, 0, 0, 0},
9422         {0x93, 0, 0, 0, 0},
9423         {0x94, 0, 0, 0, 0},
9424         {0xFFFF, 0, 0, 0, 0}
9425 };
9426
9427 radio_regs_t regs_SYN_2056_rev6[] = {
9428         {0x02, 0, 0, 0, 0},
9429         {0x03, 0, 0, 0, 0},
9430         {0x04, 0, 0, 0, 0},
9431         {0x05, 0, 0, 0, 0},
9432         {0x06, 0, 0, 0, 0},
9433         {0x07, 0, 0, 0, 0},
9434         {0x08, 0, 0, 0, 0},
9435         {0x09, 0x1, 0x1, 0, 0},
9436         {0x0A, 0, 0, 0, 0},
9437         {0x0B, 0, 0, 0, 0},
9438         {0x0C, 0, 0, 0, 0},
9439         {0x0D, 0, 0, 0, 0},
9440         {0x0E, 0, 0, 0, 0},
9441         {0x0F, 0, 0, 0, 0},
9442         {0x10, 0, 0, 0, 0},
9443         {0x11, 0, 0, 0, 0},
9444         {0x12, 0, 0, 0, 0},
9445         {0x13, 0, 0, 0, 0},
9446         {0x14, 0, 0, 0, 0},
9447         {0x15, 0, 0, 0, 0},
9448         {0x16, 0, 0, 0, 0},
9449         {0x17, 0, 0, 0, 0},
9450         {0x18, 0, 0, 0, 0},
9451         {0x19, 0, 0, 0, 0},
9452         {0x1A, 0, 0, 0, 0},
9453         {0x1B, 0, 0, 0, 0},
9454         {0x1C, 0, 0, 0, 0},
9455         {0x1D, 0, 0, 0, 0},
9456         {0x1E, 0, 0, 0, 0},
9457         {0x1F, 0, 0, 0, 0},
9458         {0x20, 0, 0, 0, 0},
9459         {0x21, 0, 0, 0, 0},
9460         {0x22, 0x60, 0x60, 0, 0},
9461         {0x23, 0x6, 0x6, 0, 0},
9462         {0x24, 0xc, 0xc, 0, 0},
9463         {0x25, 0, 0, 0, 0},
9464         {0x26, 0, 0, 0, 0},
9465         {0x27, 0, 0, 0, 0},
9466         {0x28, 0x1, 0x1, 0, 0},
9467         {0x29, 0, 0, 0, 0},
9468         {0x2A, 0, 0, 0, 0},
9469         {0x2B, 0, 0, 0, 0},
9470         {0x2C, 0, 0, 0, 0},
9471         {0x2D, 0, 0, 0, 0},
9472         {0x2E, 0, 0, 0, 0},
9473         {0x2F, 0x1f, 0x1f, 0, 0},
9474         {0x30, 0x15, 0x15, 0, 0},
9475         {0x31, 0xf, 0xf, 0, 0},
9476         {0x32, 0, 0, 0, 0},
9477         {0x33, 0, 0, 0, 0},
9478         {0x34, 0, 0, 0, 0},
9479         {0x35, 0, 0, 0, 0},
9480         {0x36, 0, 0, 0, 0},
9481         {0x37, 0, 0, 0, 0},
9482         {0x38, 0, 0, 0, 0},
9483         {0x39, 0, 0, 0, 0},
9484         {0x3A, 0, 0, 0, 0},
9485         {0x3B, 0, 0, 0, 0},
9486         {0x3C, 0x13, 0x13, 0, 0},
9487         {0x3D, 0xf, 0xf, 0, 0},
9488         {0x3E, 0x18, 0x18, 0, 0},
9489         {0x3F, 0, 0, 0, 0},
9490         {0x40, 0, 0, 0, 0},
9491         {0x41, 0x20, 0x20, 0, 0},
9492         {0x42, 0x20, 0x20, 0, 0},
9493         {0x43, 0, 0, 0, 0},
9494         {0x44, 0x77, 0x77, 0, 0},
9495         {0x45, 0x7, 0x7, 0, 0},
9496         {0x46, 0x1, 0x1, 0, 0},
9497         {0x47, 0x4, 0x4, 0, 0},
9498         {0x48, 0xf, 0xf, 0, 0},
9499         {0x49, 0x30, 0x30, 0, 0},
9500         {0x4A, 0x32, 0x32, 0, 0},
9501         {0x4B, 0xd, 0xd, 0, 0},
9502         {0x4C, 0xd, 0xd, 0, 0},
9503         {0x4D, 0x4, 0x4, 0, 0},
9504         {0x4E, 0x6, 0x6, 0, 0},
9505         {0x4F, 0x1, 0x1, 0, 0},
9506         {0x50, 0x1c, 0x1c, 0, 0},
9507         {0x51, 0x2, 0x2, 0, 0},
9508         {0x52, 0x2, 0x2, 0, 0},
9509         {0x53, 0xf7, 0xf7, 1, 1},
9510         {0x54, 0xb4, 0xb4, 0, 0},
9511         {0x55, 0xd2, 0xd2, 0, 0},
9512         {0x56, 0, 0, 0, 0},
9513         {0x57, 0, 0, 0, 0},
9514         {0x58, 0x4, 0x4, 0, 0},
9515         {0x59, 0x96, 0x96, 0, 0},
9516         {0x5A, 0x3e, 0x3e, 0, 0},
9517         {0x5B, 0x3e, 0x3e, 0, 0},
9518         {0x5C, 0x13, 0x13, 0, 0},
9519         {0x5D, 0x2, 0x2, 0, 0},
9520         {0x5E, 0, 0, 0, 0},
9521         {0x5F, 0x7, 0x7, 0, 0},
9522         {0x60, 0x7, 0x7, 1, 1},
9523         {0x61, 0x8, 0x8, 0, 0},
9524         {0x62, 0x3, 0x3, 0, 0},
9525         {0x63, 0, 0, 0, 0},
9526         {0x64, 0, 0, 0, 0},
9527         {0x65, 0, 0, 0, 0},
9528         {0x66, 0, 0, 0, 0},
9529         {0x67, 0, 0, 0, 0},
9530         {0x68, 0x40, 0x40, 0, 0},
9531         {0x69, 0, 0, 0, 0},
9532         {0x6A, 0, 0, 0, 0},
9533         {0x6B, 0, 0, 0, 0},
9534         {0x6C, 0, 0, 0, 0},
9535         {0x6D, 0x1, 0x1, 0, 0},
9536         {0x6E, 0, 0, 0, 0},
9537         {0x6F, 0, 0, 0, 0},
9538         {0x70, 0x60, 0x60, 0, 0},
9539         {0x71, 0x66, 0x66, 0, 0},
9540         {0x72, 0xc, 0xc, 0, 0},
9541         {0x73, 0x66, 0x66, 0, 0},
9542         {0x74, 0x8f, 0x8f, 1, 1},
9543         {0x75, 0, 0, 0, 0},
9544         {0x76, 0xcc, 0xcc, 0, 0},
9545         {0x77, 0x1, 0x1, 0, 0},
9546         {0x78, 0x66, 0x66, 0, 0},
9547         {0x79, 0x66, 0x66, 0, 0},
9548         {0x7A, 0, 0, 0, 0},
9549         {0x7B, 0, 0, 0, 0},
9550         {0x7C, 0, 0, 0, 0},
9551         {0x7D, 0, 0, 0, 0},
9552         {0x7E, 0, 0, 0, 0},
9553         {0x7F, 0, 0, 0, 0},
9554         {0x80, 0, 0, 0, 0},
9555         {0x81, 0, 0, 0, 0},
9556         {0x82, 0, 0, 0, 0},
9557         {0x83, 0, 0, 0, 0},
9558         {0x84, 0, 0, 0, 0},
9559         {0x85, 0xff, 0xff, 0, 0},
9560         {0x86, 0, 0, 0, 0},
9561         {0x87, 0, 0, 0, 0},
9562         {0x88, 0, 0, 0, 0},
9563         {0x89, 0, 0, 0, 0},
9564         {0x8A, 0, 0, 0, 0},
9565         {0x8B, 0, 0, 0, 0},
9566         {0x8C, 0, 0, 0, 0},
9567         {0x8D, 0, 0, 0, 0},
9568         {0x8E, 0, 0, 0, 0},
9569         {0x8F, 0, 0, 0, 0},
9570         {0x90, 0, 0, 0, 0},
9571         {0x91, 0, 0, 0, 0},
9572         {0x92, 0, 0, 0, 0},
9573         {0x93, 0, 0, 0, 0},
9574         {0x94, 0, 0, 0, 0},
9575         {0x95, 0, 0, 0, 0},
9576         {0x96, 0, 0, 0, 0},
9577         {0x97, 0, 0, 0, 0},
9578         {0x98, 0, 0, 0, 0},
9579         {0x99, 0, 0, 0, 0},
9580         {0x9A, 0, 0, 0, 0},
9581         {0x9B, 0, 0, 0, 0},
9582         {0x9C, 0, 0, 0, 0},
9583         {0x9D, 0, 0, 0, 0},
9584         {0x9E, 0, 0, 0, 0},
9585         {0x9F, 0x6, 0x6, 0, 0},
9586         {0xA0, 0x66, 0x66, 0, 0},
9587         {0xA1, 0x66, 0x66, 0, 0},
9588         {0xA2, 0x66, 0x66, 0, 0},
9589         {0xA3, 0x66, 0x66, 0, 0},
9590         {0xA4, 0x66, 0x66, 0, 0},
9591         {0xA5, 0x66, 0x66, 0, 0},
9592         {0xA6, 0x66, 0x66, 0, 0},
9593         {0xA7, 0x66, 0x66, 0, 0},
9594         {0xA8, 0x66, 0x66, 0, 0},
9595         {0xA9, 0x66, 0x66, 0, 0},
9596         {0xAA, 0x66, 0x66, 0, 0},
9597         {0xAB, 0x66, 0x66, 0, 0},
9598         {0xAC, 0x66, 0x66, 0, 0},
9599         {0xAD, 0x66, 0x66, 0, 0},
9600         {0xAE, 0x66, 0x66, 0, 0},
9601         {0xAF, 0x66, 0x66, 0, 0},
9602         {0xB0, 0x66, 0x66, 0, 0},
9603         {0xB1, 0x66, 0x66, 0, 0},
9604         {0xB2, 0x66, 0x66, 0, 0},
9605         {0xB3, 0xa, 0xa, 0, 0},
9606         {0xB4, 0, 0, 0, 0},
9607         {0xB5, 0, 0, 0, 0},
9608         {0xB6, 0, 0, 0, 0},
9609         {0xFFFF, 0, 0, 0, 0}
9610 };
9611
9612 radio_regs_t regs_TX_2056_rev6[] = {
9613         {0x02, 0, 0, 0, 0},
9614         {0x03, 0, 0, 0, 0},
9615         {0x04, 0, 0, 0, 0},
9616         {0x05, 0, 0, 0, 0},
9617         {0x06, 0, 0, 0, 0},
9618         {0x07, 0, 0, 0, 0},
9619         {0x08, 0, 0, 0, 0},
9620         {0x09, 0, 0, 0, 0},
9621         {0x0A, 0, 0, 0, 0},
9622         {0x0B, 0, 0, 0, 0},
9623         {0x0C, 0, 0, 0, 0},
9624         {0x0D, 0, 0, 0, 0},
9625         {0x0E, 0, 0, 0, 0},
9626         {0x0F, 0, 0, 0, 0},
9627         {0x10, 0, 0, 0, 0},
9628         {0x11, 0, 0, 0, 0},
9629         {0x12, 0, 0, 0, 0},
9630         {0x13, 0, 0, 0, 0},
9631         {0x14, 0, 0, 0, 0},
9632         {0x15, 0, 0, 0, 0},
9633         {0x16, 0, 0, 0, 0},
9634         {0x17, 0, 0, 0, 0},
9635         {0x18, 0, 0, 0, 0},
9636         {0x19, 0, 0, 0, 0},
9637         {0x1A, 0, 0, 0, 0},
9638         {0x1B, 0, 0, 0, 0},
9639         {0x1C, 0, 0, 0, 0},
9640         {0x1D, 0, 0, 0, 0},
9641         {0x1E, 0, 0, 0, 0},
9642         {0x1F, 0, 0, 0, 0},
9643         {0x20, 0, 0, 0, 0},
9644         {0x21, 0x88, 0x88, 0, 0},
9645         {0x22, 0x88, 0x88, 0, 0},
9646         {0x23, 0x88, 0x88, 0, 0},
9647         {0x24, 0x88, 0x88, 0, 0},
9648         {0x25, 0xc, 0xc, 0, 0},
9649         {0x26, 0, 0, 0, 0},
9650         {0x27, 0x3, 0x3, 0, 0},
9651         {0x28, 0, 0, 0, 0},
9652         {0x29, 0x3, 0x3, 0, 0},
9653         {0x2A, 0x37, 0x37, 0, 0},
9654         {0x2B, 0x3, 0x3, 0, 0},
9655         {0x2C, 0, 0, 0, 0},
9656         {0x2D, 0, 0, 0, 0},
9657         {0x2E, 0x1, 0x1, 0, 0},
9658         {0x2F, 0x1, 0x1, 0, 0},
9659         {0x30, 0, 0, 0, 0},
9660         {0x31, 0, 0, 0, 0},
9661         {0x32, 0, 0, 0, 0},
9662         {0x33, 0x11, 0x11, 0, 0},
9663         {0x34, 0xee, 0xee, 1, 1},
9664         {0x35, 0, 0, 0, 0},
9665         {0x36, 0, 0, 0, 0},
9666         {0x37, 0x3, 0x3, 0, 0},
9667         {0x38, 0x50, 0x50, 1, 1},
9668         {0x39, 0, 0, 0, 0},
9669         {0x3A, 0x50, 0x50, 1, 1},
9670         {0x3B, 0, 0, 0, 0},
9671         {0x3C, 0x6e, 0x6e, 0, 0},
9672         {0x3D, 0xf0, 0xf0, 1, 1},
9673         {0x3E, 0, 0, 0, 0},
9674         {0x3F, 0, 0, 0, 0},
9675         {0x40, 0, 0, 0, 0},
9676         {0x41, 0x3, 0x3, 0, 0},
9677         {0x42, 0x3, 0x3, 0, 0},
9678         {0x43, 0, 0, 0, 0},
9679         {0x44, 0x1e, 0x1e, 0, 0},
9680         {0x45, 0, 0, 0, 0},
9681         {0x46, 0x6e, 0x6e, 0, 0},
9682         {0x47, 0xf0, 0xf0, 1, 1},
9683         {0x48, 0, 0, 0, 0},
9684         {0x49, 0x2, 0x2, 0, 0},
9685         {0x4A, 0xff, 0xff, 1, 1},
9686         {0x4B, 0xc, 0xc, 0, 0},
9687         {0x4C, 0, 0, 0, 0},
9688         {0x4D, 0x38, 0x38, 0, 0},
9689         {0x4E, 0x70, 0x70, 1, 1},
9690         {0x4F, 0x2, 0x2, 0, 0},
9691         {0x50, 0x88, 0x88, 0, 0},
9692         {0x51, 0xc, 0xc, 0, 0},
9693         {0x52, 0, 0, 0, 0},
9694         {0x53, 0x8, 0x8, 0, 0},
9695         {0x54, 0x70, 0x70, 1, 1},
9696         {0x55, 0x2, 0x2, 0, 0},
9697         {0x56, 0xff, 0xff, 1, 1},
9698         {0x57, 0, 0, 0, 0},
9699         {0x58, 0x83, 0x83, 0, 0},
9700         {0x59, 0x77, 0x77, 1, 1},
9701         {0x5A, 0, 0, 0, 0},
9702         {0x5B, 0x2, 0x2, 0, 0},
9703         {0x5C, 0x88, 0x88, 0, 0},
9704         {0x5D, 0, 0, 0, 0},
9705         {0x5E, 0x8, 0x8, 0, 0},
9706         {0x5F, 0x77, 0x77, 1, 1},
9707         {0x60, 0x1, 0x1, 0, 0},
9708         {0x61, 0, 0, 0, 0},
9709         {0x62, 0x7, 0x7, 0, 0},
9710         {0x63, 0, 0, 0, 0},
9711         {0x64, 0x7, 0x7, 0, 0},
9712         {0x65, 0, 0, 0, 0},
9713         {0x66, 0, 0, 0, 0},
9714         {0x67, 0, 0, 1, 1},
9715         {0x68, 0, 0, 0, 0},
9716         {0x69, 0xa, 0xa, 0, 0},
9717         {0x6A, 0, 0, 0, 0},
9718         {0x6B, 0, 0, 0, 0},
9719         {0x6C, 0, 0, 0, 0},
9720         {0x6D, 0, 0, 0, 0},
9721         {0x6E, 0, 0, 0, 0},
9722         {0x6F, 0, 0, 0, 0},
9723         {0x70, 0, 0, 0, 0},
9724         {0x71, 0x2, 0x2, 0, 0},
9725         {0x72, 0, 0, 0, 0},
9726         {0x73, 0, 0, 0, 0},
9727         {0x74, 0xe, 0xe, 0, 0},
9728         {0x75, 0xe, 0xe, 0, 0},
9729         {0x76, 0xe, 0xe, 0, 0},
9730         {0x77, 0x13, 0x13, 0, 0},
9731         {0x78, 0x13, 0x13, 0, 0},
9732         {0x79, 0x1b, 0x1b, 0, 0},
9733         {0x7A, 0x1b, 0x1b, 0, 0},
9734         {0x7B, 0x55, 0x55, 0, 0},
9735         {0x7C, 0x5b, 0x5b, 0, 0},
9736         {0x7D, 0x30, 0x30, 1, 1},
9737         {0x7E, 0, 0, 0, 0},
9738         {0x7F, 0, 0, 0, 0},
9739         {0x80, 0, 0, 0, 0},
9740         {0x81, 0, 0, 0, 0},
9741         {0x82, 0, 0, 0, 0},
9742         {0x83, 0, 0, 0, 0},
9743         {0x84, 0, 0, 0, 0},
9744         {0x85, 0, 0, 0, 0},
9745         {0x86, 0, 0, 0, 0},
9746         {0x87, 0, 0, 0, 0},
9747         {0x88, 0, 0, 0, 0},
9748         {0x89, 0, 0, 0, 0},
9749         {0x8A, 0, 0, 0, 0},
9750         {0x8B, 0, 0, 0, 0},
9751         {0x8C, 0, 0, 0, 0},
9752         {0x8D, 0, 0, 0, 0},
9753         {0x8E, 0, 0, 0, 0},
9754         {0x8F, 0, 0, 0, 0},
9755         {0x90, 0, 0, 0, 0},
9756         {0x91, 0, 0, 0, 0},
9757         {0x92, 0, 0, 0, 0},
9758         {0x93, 0x70, 0x70, 0, 0},
9759         {0x94, 0x70, 0x70, 0, 0},
9760         {0x95, 0x70, 0x70, 0, 0},
9761         {0x96, 0x70, 0x70, 0, 0},
9762         {0x97, 0x70, 0x70, 0, 0},
9763         {0x98, 0x70, 0x70, 0, 0},
9764         {0x99, 0x70, 0x70, 0, 0},
9765         {0x9A, 0x70, 0x70, 0, 0},
9766         {0xFFFF, 0, 0, 0, 0}
9767 };
9768
9769 radio_regs_t regs_RX_2056_rev6[] = {
9770         {0x02, 0, 0, 0, 0},
9771         {0x03, 0, 0, 0, 0},
9772         {0x04, 0, 0, 0, 0},
9773         {0x05, 0, 0, 0, 0},
9774         {0x06, 0, 0, 0, 0},
9775         {0x07, 0, 0, 0, 0},
9776         {0x08, 0, 0, 0, 0},
9777         {0x09, 0, 0, 0, 0},
9778         {0x0A, 0, 0, 0, 0},
9779         {0x0B, 0, 0, 0, 0},
9780         {0x0C, 0, 0, 0, 0},
9781         {0x0D, 0, 0, 0, 0},
9782         {0x0E, 0, 0, 0, 0},
9783         {0x0F, 0, 0, 0, 0},
9784         {0x10, 0, 0, 0, 0},
9785         {0x11, 0, 0, 0, 0},
9786         {0x12, 0, 0, 0, 0},
9787         {0x13, 0, 0, 0, 0},
9788         {0x14, 0, 0, 0, 0},
9789         {0x15, 0, 0, 0, 0},
9790         {0x16, 0, 0, 0, 0},
9791         {0x17, 0, 0, 0, 0},
9792         {0x18, 0, 0, 0, 0},
9793         {0x19, 0, 0, 0, 0},
9794         {0x1A, 0, 0, 0, 0},
9795         {0x1B, 0, 0, 0, 0},
9796         {0x1C, 0, 0, 0, 0},
9797         {0x1D, 0, 0, 0, 0},
9798         {0x1E, 0, 0, 0, 0},
9799         {0x1F, 0, 0, 0, 0},
9800         {0x20, 0x3, 0x3, 0, 0},
9801         {0x21, 0, 0, 0, 0},
9802         {0x22, 0, 0, 0, 0},
9803         {0x23, 0x90, 0x90, 0, 0},
9804         {0x24, 0x55, 0x55, 0, 0},
9805         {0x25, 0x15, 0x15, 0, 0},
9806         {0x26, 0x5, 0x5, 0, 0},
9807         {0x27, 0x15, 0x15, 0, 0},
9808         {0x28, 0x5, 0x5, 0, 0},
9809         {0x29, 0x20, 0x20, 0, 0},
9810         {0x2A, 0x11, 0x11, 0, 0},
9811         {0x2B, 0x90, 0x90, 0, 0},
9812         {0x2C, 0, 0, 0, 0},
9813         {0x2D, 0x88, 0x88, 0, 0},
9814         {0x2E, 0x32, 0x32, 0, 0},
9815         {0x2F, 0x77, 0x77, 0, 0},
9816         {0x30, 0x17, 0x17, 1, 1},
9817         {0x31, 0xff, 0xff, 1, 1},
9818         {0x32, 0x20, 0x20, 0, 0},
9819         {0x33, 0, 0, 0, 0},
9820         {0x34, 0x88, 0x88, 0, 0},
9821         {0x35, 0x32, 0x32, 0, 0},
9822         {0x36, 0x77, 0x77, 0, 0},
9823         {0x37, 0x17, 0x17, 1, 1},
9824         {0x38, 0xf0, 0xf0, 1, 1},
9825         {0x39, 0x20, 0x20, 0, 0},
9826         {0x3A, 0x8, 0x8, 0, 0},
9827         {0x3B, 0x55, 0x55, 1, 1},
9828         {0x3C, 0, 0, 0, 0},
9829         {0x3D, 0x88, 0x88, 1, 1},
9830         {0x3E, 0, 0, 0, 0},
9831         {0x3F, 0x44, 0x44, 0, 0},
9832         {0x40, 0x7, 0x7, 1, 1},
9833         {0x41, 0x6, 0x6, 0, 0},
9834         {0x42, 0x4, 0x4, 0, 0},
9835         {0x43, 0, 0, 0, 0},
9836         {0x44, 0x8, 0x8, 0, 0},
9837         {0x45, 0x55, 0x55, 1, 1},
9838         {0x46, 0, 0, 0, 0},
9839         {0x47, 0x11, 0x11, 0, 0},
9840         {0x48, 0, 0, 0, 0},
9841         {0x49, 0x44, 0x44, 0, 0},
9842         {0x4A, 0x7, 0x7, 0, 0},
9843         {0x4B, 0x6, 0x6, 0, 0},
9844         {0x4C, 0x4, 0x4, 0, 0},
9845         {0x4D, 0, 0, 0, 0},
9846         {0x4E, 0, 0, 0, 0},
9847         {0x4F, 0x26, 0x26, 1, 1},
9848         {0x50, 0x26, 0x26, 1, 1},
9849         {0x51, 0xf, 0xf, 1, 1},
9850         {0x52, 0xf, 0xf, 1, 1},
9851         {0x53, 0x44, 0x44, 0, 0},
9852         {0x54, 0, 0, 0, 0},
9853         {0x55, 0, 0, 0, 0},
9854         {0x56, 0x8, 0x8, 0, 0},
9855         {0x57, 0x8, 0x8, 0, 0},
9856         {0x58, 0x7, 0x7, 0, 0},
9857         {0x59, 0x22, 0x22, 0, 0},
9858         {0x5A, 0x22, 0x22, 0, 0},
9859         {0x5B, 0x2, 0x2, 0, 0},
9860         {0x5C, 0x4, 0x4, 1, 1},
9861         {0x5D, 0x7, 0x7, 0, 0},
9862         {0x5E, 0x55, 0x55, 0, 0},
9863         {0x5F, 0x23, 0x23, 0, 0},
9864         {0x60, 0x41, 0x41, 0, 0},
9865         {0x61, 0x1, 0x1, 0, 0},
9866         {0x62, 0xa, 0xa, 0, 0},
9867         {0x63, 0, 0, 0, 0},
9868         {0x64, 0, 0, 0, 0},
9869         {0x65, 0, 0, 0, 0},
9870         {0x66, 0, 0, 0, 0},
9871         {0x67, 0, 0, 0, 0},
9872         {0x68, 0, 0, 0, 0},
9873         {0x69, 0, 0, 0, 0},
9874         {0x6A, 0, 0, 0, 0},
9875         {0x6B, 0xc, 0xc, 0, 0},
9876         {0x6C, 0, 0, 0, 0},
9877         {0x6D, 0, 0, 0, 0},
9878         {0x6E, 0, 0, 0, 0},
9879         {0x6F, 0, 0, 0, 0},
9880         {0x70, 0, 0, 0, 0},
9881         {0x71, 0, 0, 0, 0},
9882         {0x72, 0x22, 0x22, 0, 0},
9883         {0x73, 0x22, 0x22, 0, 0},
9884         {0x74, 0, 0, 1, 1},
9885         {0x75, 0xa, 0xa, 0, 0},
9886         {0x76, 0x1, 0x1, 0, 0},
9887         {0x77, 0x22, 0x22, 0, 0},
9888         {0x78, 0x30, 0x30, 0, 0},
9889         {0x79, 0, 0, 0, 0},
9890         {0x7A, 0, 0, 0, 0},
9891         {0x7B, 0, 0, 0, 0},
9892         {0x7C, 0, 0, 0, 0},
9893         {0x7D, 0x5, 0x5, 1, 1},
9894         {0x7E, 0, 0, 0, 0},
9895         {0x7F, 0, 0, 0, 0},
9896         {0x80, 0, 0, 0, 0},
9897         {0x81, 0, 0, 0, 0},
9898         {0x82, 0, 0, 0, 0},
9899         {0x83, 0, 0, 0, 0},
9900         {0x84, 0, 0, 0, 0},
9901         {0x85, 0, 0, 0, 0},
9902         {0x86, 0, 0, 0, 0},
9903         {0x87, 0, 0, 0, 0},
9904         {0x88, 0, 0, 0, 0},
9905         {0x89, 0, 0, 0, 0},
9906         {0x8A, 0, 0, 0, 0},
9907         {0x8B, 0, 0, 0, 0},
9908         {0x8C, 0, 0, 0, 0},
9909         {0x8D, 0, 0, 0, 0},
9910         {0x8E, 0, 0, 0, 0},
9911         {0x8F, 0, 0, 0, 0},
9912         {0x90, 0, 0, 0, 0},
9913         {0x91, 0, 0, 0, 0},
9914         {0x92, 0, 0, 0, 0},
9915         {0x93, 0, 0, 0, 0},
9916         {0x94, 0, 0, 0, 0},
9917         {0xFFFF, 0, 0, 0, 0}
9918 };
9919
9920 radio_regs_t regs_SYN_2056_rev7[] = {
9921         {0x02, 0, 0, 0, 0},
9922         {0x03, 0, 0, 0, 0},
9923         {0x04, 0, 0, 0, 0},
9924         {0x05, 0, 0, 0, 0},
9925         {0x06, 0, 0, 0, 0},
9926         {0x07, 0, 0, 0, 0},
9927         {0x08, 0, 0, 0, 0},
9928         {0x09, 0x1, 0x1, 0, 0},
9929         {0x0A, 0, 0, 0, 0},
9930         {0x0B, 0, 0, 0, 0},
9931         {0x0C, 0, 0, 0, 0},
9932         {0x0D, 0, 0, 0, 0},
9933         {0x0E, 0, 0, 0, 0},
9934         {0x0F, 0, 0, 0, 0},
9935         {0x10, 0, 0, 0, 0},
9936         {0x11, 0, 0, 0, 0},
9937         {0x12, 0, 0, 0, 0},
9938         {0x13, 0, 0, 0, 0},
9939         {0x14, 0, 0, 0, 0},
9940         {0x15, 0, 0, 0, 0},
9941         {0x16, 0, 0, 0, 0},
9942         {0x17, 0, 0, 0, 0},
9943         {0x18, 0, 0, 0, 0},
9944         {0x19, 0, 0, 0, 0},
9945         {0x1A, 0, 0, 0, 0},
9946         {0x1B, 0, 0, 0, 0},
9947         {0x1C, 0, 0, 0, 0},
9948         {0x1D, 0, 0, 0, 0},
9949         {0x1E, 0, 0, 0, 0},
9950         {0x1F, 0, 0, 0, 0},
9951         {0x20, 0, 0, 0, 0},
9952         {0x21, 0, 0, 0, 0},
9953         {0x22, 0x60, 0x60, 0, 0},
9954         {0x23, 0x6, 0x6, 0, 0},
9955         {0x24, 0xc, 0xc, 0, 0},
9956         {0x25, 0, 0, 0, 0},
9957         {0x26, 0, 0, 0, 0},
9958         {0x27, 0, 0, 0, 0},
9959         {0x28, 0x1, 0x1, 0, 0},
9960         {0x29, 0, 0, 0, 0},
9961         {0x2A, 0, 0, 0, 0},
9962         {0x2B, 0, 0, 0, 0},
9963         {0x2C, 0, 0, 0, 0},
9964         {0x2D, 0, 0, 0, 0},
9965         {0x2E, 0, 0, 0, 0},
9966         {0x2F, 0x1f, 0x1f, 0, 0},
9967         {0x30, 0x15, 0x15, 0, 0},
9968         {0x31, 0xf, 0xf, 0, 0},
9969         {0x32, 0, 0, 0, 0},
9970         {0x33, 0, 0, 0, 0},
9971         {0x34, 0, 0, 0, 0},
9972         {0x35, 0, 0, 0, 0},
9973         {0x36, 0, 0, 0, 0},
9974         {0x37, 0, 0, 0, 0},
9975         {0x38, 0, 0, 0, 0},
9976         {0x39, 0, 0, 0, 0},
9977         {0x3A, 0, 0, 0, 0},
9978         {0x3B, 0, 0, 0, 0},
9979         {0x3C, 0x13, 0x13, 0, 0},
9980         {0x3D, 0xf, 0xf, 0, 0},
9981         {0x3E, 0x18, 0x18, 0, 0},
9982         {0x3F, 0, 0, 0, 0},
9983         {0x40, 0, 0, 0, 0},
9984         {0x41, 0x20, 0x20, 0, 0},
9985         {0x42, 0x20, 0x20, 0, 0},
9986         {0x43, 0, 0, 0, 0},
9987         {0x44, 0x77, 0x77, 0, 0},
9988         {0x45, 0x7, 0x7, 0, 0},
9989         {0x46, 0x1, 0x1, 0, 0},
9990         {0x47, 0x4, 0x4, 0, 0},
9991         {0x48, 0xf, 0xf, 0, 0},
9992         {0x49, 0x30, 0x30, 0, 0},
9993         {0x4A, 0x32, 0x32, 0, 0},
9994         {0x4B, 0xd, 0xd, 0, 0},
9995         {0x4C, 0xd, 0xd, 0, 0},
9996         {0x4D, 0x4, 0x4, 0, 0},
9997         {0x4E, 0x6, 0x6, 0, 0},
9998         {0x4F, 0x1, 0x1, 0, 0},
9999         {0x50, 0x1c, 0x1c, 0, 0},
10000         {0x51, 0x2, 0x2, 0, 0},
10001         {0x52, 0x2, 0x2, 0, 0},
10002         {0x53, 0xf7, 0xf7, 1, 1},
10003         {0x54, 0xb4, 0xb4, 0, 0},
10004         {0x55, 0xd2, 0xd2, 0, 0},
10005         {0x56, 0, 0, 0, 0},
10006         {0x57, 0, 0, 0, 0},
10007         {0x58, 0x4, 0x4, 0, 0},
10008         {0x59, 0x96, 0x96, 0, 0},
10009         {0x5A, 0x3e, 0x3e, 0, 0},
10010         {0x5B, 0x3e, 0x3e, 0, 0},
10011         {0x5C, 0x13, 0x13, 0, 0},
10012         {0x5D, 0x2, 0x2, 0, 0},
10013         {0x5E, 0, 0, 0, 0},
10014         {0x5F, 0x7, 0x7, 0, 0},
10015         {0x60, 0x7, 0x7, 1, 1},
10016         {0x61, 0x8, 0x8, 0, 0},
10017         {0x62, 0x3, 0x3, 0, 0},
10018         {0x63, 0, 0, 0, 0},
10019         {0x64, 0, 0, 0, 0},
10020         {0x65, 0, 0, 0, 0},
10021         {0x66, 0, 0, 0, 0},
10022         {0x67, 0, 0, 0, 0},
10023         {0x68, 0x40, 0x40, 0, 0},
10024         {0x69, 0, 0, 0, 0},
10025         {0x6A, 0, 0, 0, 0},
10026         {0x6B, 0, 0, 0, 0},
10027         {0x6C, 0, 0, 0, 0},
10028         {0x6D, 0x1, 0x1, 0, 0},
10029         {0x6E, 0, 0, 0, 0},
10030         {0x6F, 0, 0, 0, 0},
10031         {0x70, 0x60, 0x60, 0, 0},
10032         {0x71, 0x66, 0x66, 0, 0},
10033         {0x72, 0xc, 0xc, 0, 0},
10034         {0x73, 0x66, 0x66, 0, 0},
10035         {0x74, 0x8f, 0x8f, 1, 1},
10036         {0x75, 0, 0, 0, 0},
10037         {0x76, 0xcc, 0xcc, 0, 0},
10038         {0x77, 0x1, 0x1, 0, 0},
10039         {0x78, 0x66, 0x66, 0, 0},
10040         {0x79, 0x66, 0x66, 0, 0},
10041         {0x7A, 0, 0, 0, 0},
10042         {0x7B, 0, 0, 0, 0},
10043         {0x7C, 0, 0, 0, 0},
10044         {0x7D, 0, 0, 0, 0},
10045         {0x7E, 0, 0, 0, 0},
10046         {0x7F, 0, 0, 0, 0},
10047         {0x80, 0, 0, 0, 0},
10048         {0x81, 0, 0, 0, 0},
10049         {0x82, 0, 0, 0, 0},
10050         {0x83, 0, 0, 0, 0},
10051         {0x84, 0, 0, 0, 0},
10052         {0x85, 0xff, 0xff, 0, 0},
10053         {0x86, 0, 0, 0, 0},
10054         {0x87, 0, 0, 0, 0},
10055         {0x88, 0, 0, 0, 0},
10056         {0x89, 0, 0, 0, 0},
10057         {0x8A, 0, 0, 0, 0},
10058         {0x8B, 0, 0, 0, 0},
10059         {0x8C, 0, 0, 0, 0},
10060         {0x8D, 0, 0, 0, 0},
10061         {0x8E, 0, 0, 0, 0},
10062         {0x8F, 0, 0, 0, 0},
10063         {0x90, 0, 0, 0, 0},
10064         {0x91, 0, 0, 0, 0},
10065         {0x92, 0, 0, 0, 0},
10066         {0x93, 0, 0, 0, 0},
10067         {0x94, 0, 0, 0, 0},
10068         {0x95, 0, 0, 0, 0},
10069         {0x96, 0, 0, 0, 0},
10070         {0x97, 0, 0, 0, 0},
10071         {0x98, 0, 0, 0, 0},
10072         {0x99, 0, 0, 0, 0},
10073         {0x9A, 0, 0, 0, 0},
10074         {0x9B, 0, 0, 0, 0},
10075         {0x9C, 0, 0, 0, 0},
10076         {0x9D, 0, 0, 0, 0},
10077         {0x9E, 0, 0, 0, 0},
10078         {0x9F, 0x6, 0x6, 0, 0},
10079         {0xA0, 0x66, 0x66, 0, 0},
10080         {0xA1, 0x66, 0x66, 0, 0},
10081         {0xA2, 0x66, 0x66, 0, 0},
10082         {0xA3, 0x66, 0x66, 0, 0},
10083         {0xA4, 0x66, 0x66, 0, 0},
10084         {0xA5, 0x66, 0x66, 0, 0},
10085         {0xA6, 0x66, 0x66, 0, 0},
10086         {0xA7, 0x66, 0x66, 0, 0},
10087         {0xA8, 0x66, 0x66, 0, 0},
10088         {0xA9, 0x66, 0x66, 0, 0},
10089         {0xAA, 0x66, 0x66, 0, 0},
10090         {0xAB, 0x66, 0x66, 0, 0},
10091         {0xAC, 0x66, 0x66, 0, 0},
10092         {0xAD, 0x66, 0x66, 0, 0},
10093         {0xAE, 0x66, 0x66, 0, 0},
10094         {0xAF, 0x66, 0x66, 0, 0},
10095         {0xB0, 0x66, 0x66, 0, 0},
10096         {0xB1, 0x66, 0x66, 0, 0},
10097         {0xB2, 0x66, 0x66, 0, 0},
10098         {0xB3, 0xa, 0xa, 0, 0},
10099         {0xB4, 0, 0, 0, 0},
10100         {0xB5, 0, 0, 0, 0},
10101         {0xB6, 0, 0, 0, 0},
10102         {0xFFFF, 0, 0, 0, 0},
10103 };
10104
10105 radio_regs_t regs_TX_2056_rev7[] = {
10106         {0x02, 0, 0, 0, 0},
10107         {0x03, 0, 0, 0, 0},
10108         {0x04, 0, 0, 0, 0},
10109         {0x05, 0, 0, 0, 0},
10110         {0x06, 0, 0, 0, 0},
10111         {0x07, 0, 0, 0, 0},
10112         {0x08, 0, 0, 0, 0},
10113         {0x09, 0, 0, 0, 0},
10114         {0x0A, 0, 0, 0, 0},
10115         {0x0B, 0, 0, 0, 0},
10116         {0x0C, 0, 0, 0, 0},
10117         {0x0D, 0, 0, 0, 0},
10118         {0x0E, 0, 0, 0, 0},
10119         {0x0F, 0, 0, 0, 0},
10120         {0x10, 0, 0, 0, 0},
10121         {0x11, 0, 0, 0, 0},
10122         {0x12, 0, 0, 0, 0},
10123         {0x13, 0, 0, 0, 0},
10124         {0x14, 0, 0, 0, 0},
10125         {0x15, 0, 0, 0, 0},
10126         {0x16, 0, 0, 0, 0},
10127         {0x17, 0, 0, 0, 0},
10128         {0x18, 0, 0, 0, 0},
10129         {0x19, 0, 0, 0, 0},
10130         {0x1A, 0, 0, 0, 0},
10131         {0x1B, 0, 0, 0, 0},
10132         {0x1C, 0, 0, 0, 0},
10133         {0x1D, 0, 0, 0, 0},
10134         {0x1E, 0, 0, 0, 0},
10135         {0x1F, 0, 0, 0, 0},
10136         {0x20, 0, 0, 0, 0},
10137         {0x21, 0x88, 0x88, 0, 0},
10138         {0x22, 0x88, 0x88, 0, 0},
10139         {0x23, 0x88, 0x88, 0, 0},
10140         {0x24, 0x88, 0x88, 0, 0},
10141         {0x25, 0xc, 0xc, 0, 0},
10142         {0x26, 0, 0, 0, 0},
10143         {0x27, 0x3, 0x3, 0, 0},
10144         {0x28, 0, 0, 0, 0},
10145         {0x29, 0x3, 0x3, 0, 0},
10146         {0x2A, 0x37, 0x37, 0, 0},
10147         {0x2B, 0x3, 0x3, 0, 0},
10148         {0x2C, 0, 0, 0, 0},
10149         {0x2D, 0, 0, 0, 0},
10150         {0x2E, 0x1, 0x1, 0, 0},
10151         {0x2F, 0x1, 0x1, 0, 0},
10152         {0x30, 0, 0, 0, 0},
10153         {0x31, 0, 0, 0, 0},
10154         {0x32, 0, 0, 0, 0},
10155         {0x33, 0x11, 0x11, 0, 0},
10156         {0x34, 0xee, 0xee, 1, 1},
10157         {0x35, 0, 0, 0, 0},
10158         {0x36, 0, 0, 0, 0},
10159         {0x37, 0x3, 0x3, 0, 0},
10160         {0x38, 0x50, 0x50, 1, 1},
10161         {0x39, 0, 0, 0, 0},
10162         {0x3A, 0x50, 0x50, 1, 1},
10163         {0x3B, 0, 0, 0, 0},
10164         {0x3C, 0x6e, 0x6e, 0, 0},
10165         {0x3D, 0xf0, 0xf0, 1, 1},
10166         {0x3E, 0, 0, 0, 0},
10167         {0x3F, 0, 0, 0, 0},
10168         {0x40, 0, 0, 0, 0},
10169         {0x41, 0x3, 0x3, 0, 0},
10170         {0x42, 0x3, 0x3, 0, 0},
10171         {0x43, 0, 0, 0, 0},
10172         {0x44, 0x1e, 0x1e, 0, 0},
10173         {0x45, 0, 0, 0, 0},
10174         {0x46, 0x6e, 0x6e, 0, 0},
10175         {0x47, 0xf0, 0xf0, 1, 1},
10176         {0x48, 0, 0, 0, 0},
10177         {0x49, 0x2, 0x2, 0, 0},
10178         {0x4A, 0xff, 0xff, 1, 1},
10179         {0x4B, 0xc, 0xc, 0, 0},
10180         {0x4C, 0, 0, 0, 0},
10181         {0x4D, 0x38, 0x38, 0, 0},
10182         {0x4E, 0x70, 0x70, 1, 1},
10183         {0x4F, 0x2, 0x2, 0, 0},
10184         {0x50, 0x88, 0x88, 0, 0},
10185         {0x51, 0xc, 0xc, 0, 0},
10186         {0x52, 0, 0, 0, 0},
10187         {0x53, 0x8, 0x8, 0, 0},
10188         {0x54, 0x70, 0x70, 1, 1},
10189         {0x55, 0x2, 0x2, 0, 0},
10190         {0x56, 0xff, 0xff, 1, 1},
10191         {0x57, 0, 0, 0, 0},
10192         {0x58, 0x83, 0x83, 0, 0},
10193         {0x59, 0x77, 0x77, 1, 1},
10194         {0x5A, 0, 0, 0, 0},
10195         {0x5B, 0x2, 0x2, 0, 0},
10196         {0x5C, 0x88, 0x88, 0, 0},
10197         {0x5D, 0, 0, 0, 0},
10198         {0x5E, 0x8, 0x8, 0, 0},
10199         {0x5F, 0x77, 0x77, 1, 1},
10200         {0x60, 0x1, 0x1, 0, 0},
10201         {0x61, 0, 0, 0, 0},
10202         {0x62, 0x7, 0x7, 0, 0},
10203         {0x63, 0, 0, 0, 0},
10204         {0x64, 0x7, 0x7, 0, 0},
10205         {0x65, 0, 0, 0, 0},
10206         {0x66, 0, 0, 0, 0},
10207         {0x67, 0, 0, 1, 1},
10208         {0x68, 0, 0, 0, 0},
10209         {0x69, 0xa, 0xa, 0, 0},
10210         {0x6A, 0, 0, 0, 0},
10211         {0x6B, 0, 0, 0, 0},
10212         {0x6C, 0, 0, 0, 0},
10213         {0x6D, 0, 0, 0, 0},
10214         {0x6E, 0, 0, 0, 0},
10215         {0x6F, 0, 0, 0, 0},
10216         {0x70, 0, 0, 0, 0},
10217         {0x71, 0x2, 0x2, 0, 0},
10218         {0x72, 0, 0, 0, 0},
10219         {0x73, 0, 0, 0, 0},
10220         {0x74, 0xe, 0xe, 0, 0},
10221         {0x75, 0xe, 0xe, 0, 0},
10222         {0x76, 0xe, 0xe, 0, 0},
10223         {0x77, 0x13, 0x13, 0, 0},
10224         {0x78, 0x13, 0x13, 0, 0},
10225         {0x79, 0x1b, 0x1b, 0, 0},
10226         {0x7A, 0x1b, 0x1b, 0, 0},
10227         {0x7B, 0x55, 0x55, 0, 0},
10228         {0x7C, 0x5b, 0x5b, 0, 0},
10229         {0x7D, 0x30, 0x30, 1, 1},
10230         {0x7E, 0, 0, 0, 0},
10231         {0x7F, 0, 0, 0, 0},
10232         {0x80, 0, 0, 0, 0},
10233         {0x81, 0, 0, 0, 0},
10234         {0x82, 0, 0, 0, 0},
10235         {0x83, 0, 0, 0, 0},
10236         {0x84, 0, 0, 0, 0},
10237         {0x85, 0, 0, 0, 0},
10238         {0x86, 0, 0, 0, 0},
10239         {0x87, 0, 0, 0, 0},
10240         {0x88, 0, 0, 0, 0},
10241         {0x89, 0, 0, 0, 0},
10242         {0x8A, 0, 0, 0, 0},
10243         {0x8B, 0, 0, 0, 0},
10244         {0x8C, 0, 0, 0, 0},
10245         {0x8D, 0, 0, 0, 0},
10246         {0x8E, 0, 0, 0, 0},
10247         {0x8F, 0, 0, 0, 0},
10248         {0x90, 0, 0, 0, 0},
10249         {0x91, 0, 0, 0, 0},
10250         {0x92, 0, 0, 0, 0},
10251         {0x93, 0x70, 0x70, 0, 0},
10252         {0x94, 0x70, 0x70, 0, 0},
10253         {0x95, 0x71, 0x71, 1, 1},
10254         {0x96, 0x71, 0x71, 1, 1},
10255         {0x97, 0x72, 0x72, 1, 1},
10256         {0x98, 0x73, 0x73, 1, 1},
10257         {0x99, 0x74, 0x74, 1, 1},
10258         {0x9A, 0x75, 0x75, 1, 1},
10259         {0xFFFF, 0, 0, 0, 0},
10260 };
10261
10262 radio_regs_t regs_RX_2056_rev7[] = {
10263         {0x02, 0, 0, 0, 0},
10264         {0x03, 0, 0, 0, 0},
10265         {0x04, 0, 0, 0, 0},
10266         {0x05, 0, 0, 0, 0},
10267         {0x06, 0, 0, 0, 0},
10268         {0x07, 0, 0, 0, 0},
10269         {0x08, 0, 0, 0, 0},
10270         {0x09, 0, 0, 0, 0},
10271         {0x0A, 0, 0, 0, 0},
10272         {0x0B, 0, 0, 0, 0},
10273         {0x0C, 0, 0, 0, 0},
10274         {0x0D, 0, 0, 0, 0},
10275         {0x0E, 0, 0, 0, 0},
10276         {0x0F, 0, 0, 0, 0},
10277         {0x10, 0, 0, 0, 0},
10278         {0x11, 0, 0, 0, 0},
10279         {0x12, 0, 0, 0, 0},
10280         {0x13, 0, 0, 0, 0},
10281         {0x14, 0, 0, 0, 0},
10282         {0x15, 0, 0, 0, 0},
10283         {0x16, 0, 0, 0, 0},
10284         {0x17, 0, 0, 0, 0},
10285         {0x18, 0, 0, 0, 0},
10286         {0x19, 0, 0, 0, 0},
10287         {0x1A, 0, 0, 0, 0},
10288         {0x1B, 0, 0, 0, 0},
10289         {0x1C, 0, 0, 0, 0},
10290         {0x1D, 0, 0, 0, 0},
10291         {0x1E, 0, 0, 0, 0},
10292         {0x1F, 0, 0, 0, 0},
10293         {0x20, 0x3, 0x3, 0, 0},
10294         {0x21, 0, 0, 0, 0},
10295         {0x22, 0, 0, 0, 0},
10296         {0x23, 0x90, 0x90, 0, 0},
10297         {0x24, 0x55, 0x55, 0, 0},
10298         {0x25, 0x15, 0x15, 0, 0},
10299         {0x26, 0x5, 0x5, 0, 0},
10300         {0x27, 0x15, 0x15, 0, 0},
10301         {0x28, 0x5, 0x5, 0, 0},
10302         {0x29, 0x20, 0x20, 0, 0},
10303         {0x2A, 0x11, 0x11, 0, 0},
10304         {0x2B, 0x90, 0x90, 0, 0},
10305         {0x2C, 0, 0, 0, 0},
10306         {0x2D, 0x88, 0x88, 0, 0},
10307         {0x2E, 0x32, 0x32, 0, 0},
10308         {0x2F, 0x77, 0x77, 0, 0},
10309         {0x30, 0x17, 0x17, 1, 1},
10310         {0x31, 0xff, 0xff, 1, 1},
10311         {0x32, 0x20, 0x20, 0, 0},
10312         {0x33, 0, 0, 0, 0},
10313         {0x34, 0x88, 0x88, 0, 0},
10314         {0x35, 0x32, 0x32, 0, 0},
10315         {0x36, 0x77, 0x77, 0, 0},
10316         {0x37, 0x17, 0x17, 1, 1},
10317         {0x38, 0xf0, 0xf0, 1, 1},
10318         {0x39, 0x20, 0x20, 0, 0},
10319         {0x3A, 0x8, 0x8, 0, 0},
10320         {0x3B, 0x55, 0x55, 1, 1},
10321         {0x3C, 0, 0, 0, 0},
10322         {0x3D, 0x88, 0x88, 1, 1},
10323         {0x3E, 0, 0, 0, 0},
10324         {0x3F, 0, 0, 1, 1},
10325         {0x40, 0x7, 0x7, 1, 1},
10326         {0x41, 0x6, 0x6, 0, 0},
10327         {0x42, 0x4, 0x4, 0, 0},
10328         {0x43, 0, 0, 0, 0},
10329         {0x44, 0x8, 0x8, 0, 0},
10330         {0x45, 0x55, 0x55, 1, 1},
10331         {0x46, 0, 0, 0, 0},
10332         {0x47, 0x11, 0x11, 0, 0},
10333         {0x48, 0, 0, 0, 0},
10334         {0x49, 0, 0, 1, 1},
10335         {0x4A, 0x7, 0x7, 0, 0},
10336         {0x4B, 0x6, 0x6, 0, 0},
10337         {0x4C, 0x4, 0x4, 0, 0},
10338         {0x4D, 0, 0, 0, 0},
10339         {0x4E, 0, 0, 0, 0},
10340         {0x4F, 0x26, 0x26, 1, 1},
10341         {0x50, 0x26, 0x26, 1, 1},
10342         {0x51, 0xf, 0xf, 1, 1},
10343         {0x52, 0xf, 0xf, 1, 1},
10344         {0x53, 0x44, 0x44, 0, 0},
10345         {0x54, 0, 0, 0, 0},
10346         {0x55, 0, 0, 0, 0},
10347         {0x56, 0x8, 0x8, 0, 0},
10348         {0x57, 0x8, 0x8, 0, 0},
10349         {0x58, 0x7, 0x7, 0, 0},
10350         {0x59, 0x22, 0x22, 0, 0},
10351         {0x5A, 0x22, 0x22, 0, 0},
10352         {0x5B, 0x2, 0x2, 0, 0},
10353         {0x5C, 0x4, 0x4, 1, 1},
10354         {0x5D, 0x7, 0x7, 0, 0},
10355         {0x5E, 0x55, 0x55, 0, 0},
10356         {0x5F, 0x23, 0x23, 0, 0},
10357         {0x60, 0x41, 0x41, 0, 0},
10358         {0x61, 0x1, 0x1, 0, 0},
10359         {0x62, 0xa, 0xa, 0, 0},
10360         {0x63, 0, 0, 0, 0},
10361         {0x64, 0, 0, 0, 0},
10362         {0x65, 0, 0, 0, 0},
10363         {0x66, 0, 0, 0, 0},
10364         {0x67, 0, 0, 0, 0},
10365         {0x68, 0, 0, 0, 0},
10366         {0x69, 0, 0, 0, 0},
10367         {0x6A, 0, 0, 0, 0},
10368         {0x6B, 0xc, 0xc, 0, 0},
10369         {0x6C, 0, 0, 0, 0},
10370         {0x6D, 0, 0, 0, 0},
10371         {0x6E, 0, 0, 0, 0},
10372         {0x6F, 0, 0, 0, 0},
10373         {0x70, 0, 0, 0, 0},
10374         {0x71, 0, 0, 0, 0},
10375         {0x72, 0x22, 0x22, 0, 0},
10376         {0x73, 0x22, 0x22, 0, 0},
10377         {0x74, 0, 0, 1, 1},
10378         {0x75, 0xa, 0xa, 0, 0},
10379         {0x76, 0x1, 0x1, 0, 0},
10380         {0x77, 0x22, 0x22, 0, 0},
10381         {0x78, 0x30, 0x30, 0, 0},
10382         {0x79, 0, 0, 0, 0},
10383         {0x7A, 0, 0, 0, 0},
10384         {0x7B, 0, 0, 0, 0},
10385         {0x7C, 0, 0, 0, 0},
10386         {0x7D, 0, 0, 0, 0},
10387         {0x7E, 0, 0, 0, 0},
10388         {0x7F, 0, 0, 0, 0},
10389         {0x80, 0, 0, 0, 0},
10390         {0x81, 0, 0, 0, 0},
10391         {0x82, 0, 0, 0, 0},
10392         {0x83, 0, 0, 0, 0},
10393         {0x84, 0, 0, 0, 0},
10394         {0x85, 0, 0, 0, 0},
10395         {0x86, 0, 0, 0, 0},
10396         {0x87, 0, 0, 0, 0},
10397         {0x88, 0, 0, 0, 0},
10398         {0x89, 0, 0, 0, 0},
10399         {0x8A, 0, 0, 0, 0},
10400         {0x8B, 0, 0, 0, 0},
10401         {0x8C, 0, 0, 0, 0},
10402         {0x8D, 0, 0, 0, 0},
10403         {0x8E, 0, 0, 0, 0},
10404         {0x8F, 0, 0, 0, 0},
10405         {0x90, 0, 0, 0, 0},
10406         {0x91, 0, 0, 0, 0},
10407         {0x92, 0, 0, 0, 0},
10408         {0x93, 0, 0, 0, 0},
10409         {0x94, 0, 0, 0, 0},
10410         {0xFFFF, 0, 0, 0, 0},
10411 };
10412
10413 radio_regs_t regs_SYN_2056_rev8[] = {
10414         {0x02, 0, 0, 0, 0},
10415         {0x03, 0, 0, 0, 0},
10416         {0x04, 0, 0, 0, 0},
10417         {0x05, 0, 0, 0, 0},
10418         {0x06, 0, 0, 0, 0},
10419         {0x07, 0, 0, 0, 0},
10420         {0x08, 0, 0, 0, 0},
10421         {0x09, 0x1, 0x1, 0, 0},
10422         {0x0A, 0, 0, 0, 0},
10423         {0x0B, 0, 0, 0, 0},
10424         {0x0C, 0, 0, 0, 0},
10425         {0x0D, 0, 0, 0, 0},
10426         {0x0E, 0, 0, 0, 0},
10427         {0x0F, 0, 0, 0, 0},
10428         {0x10, 0, 0, 0, 0},
10429         {0x11, 0, 0, 0, 0},
10430         {0x12, 0, 0, 0, 0},
10431         {0x13, 0, 0, 0, 0},
10432         {0x14, 0, 0, 0, 0},
10433         {0x15, 0, 0, 0, 0},
10434         {0x16, 0, 0, 0, 0},
10435         {0x17, 0, 0, 0, 0},
10436         {0x18, 0, 0, 0, 0},
10437         {0x19, 0, 0, 0, 0},
10438         {0x1A, 0, 0, 0, 0},
10439         {0x1B, 0, 0, 0, 0},
10440         {0x1C, 0, 0, 0, 0},
10441         {0x1D, 0, 0, 0, 0},
10442         {0x1E, 0, 0, 0, 0},
10443         {0x1F, 0, 0, 0, 0},
10444         {0x20, 0, 0, 0, 0},
10445         {0x21, 0, 0, 0, 0},
10446         {0x22, 0x60, 0x60, 0, 0},
10447         {0x23, 0x6, 0x6, 0, 0},
10448         {0x24, 0xc, 0xc, 0, 0},
10449         {0x25, 0, 0, 0, 0},
10450         {0x26, 0, 0, 0, 0},
10451         {0x27, 0, 0, 0, 0},
10452         {0x28, 0x1, 0x1, 0, 0},
10453         {0x29, 0, 0, 0, 0},
10454         {0x2A, 0, 0, 0, 0},
10455         {0x2B, 0, 0, 0, 0},
10456         {0x2C, 0, 0, 0, 0},
10457         {0x2D, 0, 0, 0, 0},
10458         {0x2E, 0, 0, 0, 0},
10459         {0x2F, 0x1f, 0x1f, 0, 0},
10460         {0x30, 0x15, 0x15, 0, 0},
10461         {0x31, 0xf, 0xf, 0, 0},
10462         {0x32, 0, 0, 0, 0},
10463         {0x33, 0, 0, 0, 0},
10464         {0x34, 0, 0, 0, 0},
10465         {0x35, 0, 0, 0, 0},
10466         {0x36, 0, 0, 0, 0},
10467         {0x37, 0, 0, 0, 0},
10468         {0x38, 0, 0, 0, 0},
10469         {0x39, 0, 0, 0, 0},
10470         {0x3A, 0, 0, 0, 0},
10471         {0x3B, 0, 0, 0, 0},
10472         {0x3C, 0x13, 0x13, 0, 0},
10473         {0x3D, 0xf, 0xf, 0, 0},
10474         {0x3E, 0x18, 0x18, 0, 0},
10475         {0x3F, 0, 0, 0, 0},
10476         {0x40, 0, 0, 0, 0},
10477         {0x41, 0x20, 0x20, 0, 0},
10478         {0x42, 0x20, 0x20, 0, 0},
10479         {0x43, 0, 0, 0, 0},
10480         {0x44, 0x77, 0x77, 0, 0},
10481         {0x45, 0x7, 0x7, 0, 0},
10482         {0x46, 0x1, 0x1, 0, 0},
10483         {0x47, 0x4, 0x4, 0, 0},
10484         {0x48, 0xf, 0xf, 0, 0},
10485         {0x49, 0x30, 0x30, 0, 0},
10486         {0x4A, 0x32, 0x32, 0, 0},
10487         {0x4B, 0xd, 0xd, 0, 0},
10488         {0x4C, 0xd, 0xd, 0, 0},
10489         {0x4D, 0x4, 0x4, 0, 0},
10490         {0x4E, 0x6, 0x6, 0, 0},
10491         {0x4F, 0x1, 0x1, 0, 0},
10492         {0x50, 0x1c, 0x1c, 0, 0},
10493         {0x51, 0x2, 0x2, 0, 0},
10494         {0x52, 0x2, 0x2, 0, 0},
10495         {0x53, 0xf7, 0xf7, 1, 1},
10496         {0x54, 0xb4, 0xb4, 0, 0},
10497         {0x55, 0xd2, 0xd2, 0, 0},
10498         {0x56, 0, 0, 0, 0},
10499         {0x57, 0, 0, 0, 0},
10500         {0x58, 0x4, 0x4, 0, 0},
10501         {0x59, 0x96, 0x96, 0, 0},
10502         {0x5A, 0x3e, 0x3e, 0, 0},
10503         {0x5B, 0x3e, 0x3e, 0, 0},
10504         {0x5C, 0x13, 0x13, 0, 0},
10505         {0x5D, 0x2, 0x2, 0, 0},
10506         {0x5E, 0, 0, 0, 0},
10507         {0x5F, 0x7, 0x7, 0, 0},
10508         {0x60, 0x7, 0x7, 1, 1},
10509         {0x61, 0x8, 0x8, 0, 0},
10510         {0x62, 0x3, 0x3, 0, 0},
10511         {0x63, 0, 0, 0, 0},
10512         {0x64, 0, 0, 0, 0},
10513         {0x65, 0, 0, 0, 0},
10514         {0x66, 0, 0, 0, 0},
10515         {0x67, 0, 0, 0, 0},
10516         {0x68, 0x40, 0x40, 0, 0},
10517         {0x69, 0, 0, 0, 0},
10518         {0x6A, 0, 0, 0, 0},
10519         {0x6B, 0, 0, 0, 0},
10520         {0x6C, 0, 0, 0, 0},
10521         {0x6D, 0x1, 0x1, 0, 0},
10522         {0x6E, 0, 0, 0, 0},
10523         {0x6F, 0, 0, 0, 0},
10524         {0x70, 0x60, 0x60, 0, 0},
10525         {0x71, 0x66, 0x66, 0, 0},
10526         {0x72, 0xc, 0xc, 0, 0},
10527         {0x73, 0x66, 0x66, 0, 0},
10528         {0x74, 0x8f, 0x8f, 1, 1},
10529         {0x75, 0, 0, 0, 0},
10530         {0x76, 0xcc, 0xcc, 0, 0},
10531         {0x77, 0x1, 0x1, 0, 0},
10532         {0x78, 0x66, 0x66, 0, 0},
10533         {0x79, 0x66, 0x66, 0, 0},
10534         {0x7A, 0, 0, 0, 0},
10535         {0x7B, 0, 0, 0, 0},
10536         {0x7C, 0, 0, 0, 0},
10537         {0x7D, 0, 0, 0, 0},
10538         {0x7E, 0, 0, 0, 0},
10539         {0x7F, 0, 0, 0, 0},
10540         {0x80, 0, 0, 0, 0},
10541         {0x81, 0, 0, 0, 0},
10542         {0x82, 0, 0, 0, 0},
10543         {0x83, 0, 0, 0, 0},
10544         {0x84, 0, 0, 0, 0},
10545         {0x85, 0xff, 0xff, 0, 0},
10546         {0x86, 0, 0, 0, 0},
10547         {0x87, 0, 0, 0, 0},
10548         {0x88, 0, 0, 0, 0},
10549         {0x89, 0, 0, 0, 0},
10550         {0x8A, 0, 0, 0, 0},
10551         {0x8B, 0, 0, 0, 0},
10552         {0x8C, 0, 0, 0, 0},
10553         {0x8D, 0, 0, 0, 0},
10554         {0x8E, 0, 0, 0, 0},
10555         {0x8F, 0, 0, 0, 0},
10556         {0x90, 0, 0, 0, 0},
10557         {0x91, 0, 0, 0, 0},
10558         {0x92, 0, 0, 0, 0},
10559         {0x93, 0, 0, 0, 0},
10560         {0x94, 0, 0, 0, 0},
10561         {0x95, 0, 0, 0, 0},
10562         {0x96, 0, 0, 0, 0},
10563         {0x97, 0, 0, 0, 0},
10564         {0x98, 0, 0, 0, 0},
10565         {0x99, 0, 0, 0, 0},
10566         {0x9A, 0, 0, 0, 0},
10567         {0x9B, 0, 0, 0, 0},
10568         {0x9C, 0, 0, 0, 0},
10569         {0x9D, 0, 0, 0, 0},
10570         {0x9E, 0, 0, 0, 0},
10571         {0x9F, 0x6, 0x6, 0, 0},
10572         {0xA0, 0x66, 0x66, 0, 0},
10573         {0xA1, 0x66, 0x66, 0, 0},
10574         {0xA2, 0x66, 0x66, 0, 0},
10575         {0xA3, 0x66, 0x66, 0, 0},
10576         {0xA4, 0x66, 0x66, 0, 0},
10577         {0xA5, 0x66, 0x66, 0, 0},
10578         {0xA6, 0x66, 0x66, 0, 0},
10579         {0xA7, 0x66, 0x66, 0, 0},
10580         {0xA8, 0x66, 0x66, 0, 0},
10581         {0xA9, 0x66, 0x66, 0, 0},
10582         {0xAA, 0x66, 0x66, 0, 0},
10583         {0xAB, 0x66, 0x66, 0, 0},
10584         {0xAC, 0x66, 0x66, 0, 0},
10585         {0xAD, 0x66, 0x66, 0, 0},
10586         {0xAE, 0x66, 0x66, 0, 0},
10587         {0xAF, 0x66, 0x66, 0, 0},
10588         {0xB0, 0x66, 0x66, 0, 0},
10589         {0xB1, 0x66, 0x66, 0, 0},
10590         {0xB2, 0x66, 0x66, 0, 0},
10591         {0xB3, 0xa, 0xa, 0, 0},
10592         {0xB4, 0, 0, 0, 0},
10593         {0xB5, 0, 0, 0, 0},
10594         {0xB6, 0, 0, 0, 0},
10595         {0xFFFF, 0, 0, 0, 0},
10596 };
10597
10598 radio_regs_t regs_TX_2056_rev8[] = {
10599         {0x02, 0, 0, 0, 0},
10600         {0x03, 0, 0, 0, 0},
10601         {0x04, 0, 0, 0, 0},
10602         {0x05, 0, 0, 0, 0},
10603         {0x06, 0, 0, 0, 0},
10604         {0x07, 0, 0, 0, 0},
10605         {0x08, 0, 0, 0, 0},
10606         {0x09, 0, 0, 0, 0},
10607         {0x0A, 0, 0, 0, 0},
10608         {0x0B, 0, 0, 0, 0},
10609         {0x0C, 0, 0, 0, 0},
10610         {0x0D, 0, 0, 0, 0},
10611         {0x0E, 0, 0, 0, 0},
10612         {0x0F, 0, 0, 0, 0},
10613         {0x10, 0, 0, 0, 0},
10614         {0x11, 0, 0, 0, 0},
10615         {0x12, 0, 0, 0, 0},
10616         {0x13, 0, 0, 0, 0},
10617         {0x14, 0, 0, 0, 0},
10618         {0x15, 0, 0, 0, 0},
10619         {0x16, 0, 0, 0, 0},
10620         {0x17, 0, 0, 0, 0},
10621         {0x18, 0, 0, 0, 0},
10622         {0x19, 0, 0, 0, 0},
10623         {0x1A, 0, 0, 0, 0},
10624         {0x1B, 0, 0, 0, 0},
10625         {0x1C, 0, 0, 0, 0},
10626         {0x1D, 0, 0, 0, 0},
10627         {0x1E, 0, 0, 0, 0},
10628         {0x1F, 0, 0, 0, 0},
10629         {0x20, 0, 0, 0, 0},
10630         {0x21, 0x88, 0x88, 0, 0},
10631         {0x22, 0x88, 0x88, 0, 0},
10632         {0x23, 0x88, 0x88, 0, 0},
10633         {0x24, 0x88, 0x88, 0, 0},
10634         {0x25, 0xc, 0xc, 0, 0},
10635         {0x26, 0, 0, 0, 0},
10636         {0x27, 0x3, 0x3, 0, 0},
10637         {0x28, 0, 0, 0, 0},
10638         {0x29, 0x3, 0x3, 0, 0},
10639         {0x2A, 0x37, 0x37, 0, 0},
10640         {0x2B, 0x3, 0x3, 0, 0},
10641         {0x2C, 0, 0, 0, 0},
10642         {0x2D, 0, 0, 0, 0},
10643         {0x2E, 0x1, 0x1, 0, 0},
10644         {0x2F, 0x1, 0x1, 0, 0},
10645         {0x30, 0, 0, 0, 0},
10646         {0x31, 0, 0, 0, 0},
10647         {0x32, 0, 0, 0, 0},
10648         {0x33, 0x11, 0x11, 0, 0},
10649         {0x34, 0xee, 0xee, 1, 1},
10650         {0x35, 0, 0, 0, 0},
10651         {0x36, 0, 0, 0, 0},
10652         {0x37, 0x3, 0x3, 0, 0},
10653         {0x38, 0x50, 0x50, 1, 1},
10654         {0x39, 0, 0, 0, 0},
10655         {0x3A, 0x50, 0x50, 1, 1},
10656         {0x3B, 0, 0, 0, 0},
10657         {0x3C, 0x6e, 0x6e, 0, 0},
10658         {0x3D, 0xf0, 0xf0, 1, 1},
10659         {0x3E, 0, 0, 0, 0},
10660         {0x3F, 0, 0, 0, 0},
10661         {0x40, 0, 0, 0, 0},
10662         {0x41, 0x3, 0x3, 0, 0},
10663         {0x42, 0x3, 0x3, 0, 0},
10664         {0x43, 0, 0, 0, 0},
10665         {0x44, 0x1e, 0x1e, 0, 0},
10666         {0x45, 0, 0, 0, 0},
10667         {0x46, 0x6e, 0x6e, 0, 0},
10668         {0x47, 0xf0, 0xf0, 1, 1},
10669         {0x48, 0, 0, 0, 0},
10670         {0x49, 0x2, 0x2, 0, 0},
10671         {0x4A, 0xff, 0xff, 1, 1},
10672         {0x4B, 0xc, 0xc, 0, 0},
10673         {0x4C, 0, 0, 0, 0},
10674         {0x4D, 0x38, 0x38, 0, 0},
10675         {0x4E, 0x70, 0x70, 1, 1},
10676         {0x4F, 0x2, 0x2, 0, 0},
10677         {0x50, 0x88, 0x88, 0, 0},
10678         {0x51, 0xc, 0xc, 0, 0},
10679         {0x52, 0, 0, 0, 0},
10680         {0x53, 0x8, 0x8, 0, 0},
10681         {0x54, 0x70, 0x70, 1, 1},
10682         {0x55, 0x2, 0x2, 0, 0},
10683         {0x56, 0xff, 0xff, 1, 1},
10684         {0x57, 0, 0, 0, 0},
10685         {0x58, 0x83, 0x83, 0, 0},
10686         {0x59, 0x77, 0x77, 1, 1},
10687         {0x5A, 0, 0, 0, 0},
10688         {0x5B, 0x2, 0x2, 0, 0},
10689         {0x5C, 0x88, 0x88, 0, 0},
10690         {0x5D, 0, 0, 0, 0},
10691         {0x5E, 0x8, 0x8, 0, 0},
10692         {0x5F, 0x77, 0x77, 1, 1},
10693         {0x60, 0x1, 0x1, 0, 0},
10694         {0x61, 0, 0, 0, 0},
10695         {0x62, 0x7, 0x7, 0, 0},
10696         {0x63, 0, 0, 0, 0},
10697         {0x64, 0x7, 0x7, 0, 0},
10698         {0x65, 0, 0, 0, 0},
10699         {0x66, 0, 0, 0, 0},
10700         {0x67, 0, 0, 1, 1},
10701         {0x68, 0, 0, 0, 0},
10702         {0x69, 0xa, 0xa, 0, 0},
10703         {0x6A, 0, 0, 0, 0},
10704         {0x6B, 0, 0, 0, 0},
10705         {0x6C, 0, 0, 0, 0},
10706         {0x6D, 0, 0, 0, 0},
10707         {0x6E, 0, 0, 0, 0},
10708         {0x6F, 0, 0, 0, 0},
10709         {0x70, 0, 0, 0, 0},
10710         {0x71, 0x2, 0x2, 0, 0},
10711         {0x72, 0, 0, 0, 0},
10712         {0x73, 0, 0, 0, 0},
10713         {0x74, 0xe, 0xe, 0, 0},
10714         {0x75, 0xe, 0xe, 0, 0},
10715         {0x76, 0xe, 0xe, 0, 0},
10716         {0x77, 0x13, 0x13, 0, 0},
10717         {0x78, 0x13, 0x13, 0, 0},
10718         {0x79, 0x1b, 0x1b, 0, 0},
10719         {0x7A, 0x1b, 0x1b, 0, 0},
10720         {0x7B, 0x55, 0x55, 0, 0},
10721         {0x7C, 0x5b, 0x5b, 0, 0},
10722         {0x7D, 0x30, 0x30, 1, 1},
10723         {0x7E, 0, 0, 0, 0},
10724         {0x7F, 0, 0, 0, 0},
10725         {0x80, 0, 0, 0, 0},
10726         {0x81, 0, 0, 0, 0},
10727         {0x82, 0, 0, 0, 0},
10728         {0x83, 0, 0, 0, 0},
10729         {0x84, 0, 0, 0, 0},
10730         {0x85, 0, 0, 0, 0},
10731         {0x86, 0, 0, 0, 0},
10732         {0x87, 0, 0, 0, 0},
10733         {0x88, 0, 0, 0, 0},
10734         {0x89, 0, 0, 0, 0},
10735         {0x8A, 0, 0, 0, 0},
10736         {0x8B, 0, 0, 0, 0},
10737         {0x8C, 0, 0, 0, 0},
10738         {0x8D, 0, 0, 0, 0},
10739         {0x8E, 0, 0, 0, 0},
10740         {0x8F, 0, 0, 0, 0},
10741         {0x90, 0, 0, 0, 0},
10742         {0x91, 0, 0, 0, 0},
10743         {0x92, 0, 0, 0, 0},
10744         {0x93, 0x70, 0x70, 0, 0},
10745         {0x94, 0x70, 0x70, 0, 0},
10746         {0x95, 0x70, 0x70, 0, 0},
10747         {0x96, 0x70, 0x70, 0, 0},
10748         {0x97, 0x70, 0x70, 0, 0},
10749         {0x98, 0x70, 0x70, 0, 0},
10750         {0x99, 0x70, 0x70, 0, 0},
10751         {0x9A, 0x70, 0x70, 0, 0},
10752         {0xFFFF, 0, 0, 0, 0},
10753 };
10754
10755 radio_regs_t regs_RX_2056_rev8[] = {
10756         {0x02, 0, 0, 0, 0},
10757         {0x03, 0, 0, 0, 0},
10758         {0x04, 0, 0, 0, 0},
10759         {0x05, 0, 0, 0, 0},
10760         {0x06, 0, 0, 0, 0},
10761         {0x07, 0, 0, 0, 0},
10762         {0x08, 0, 0, 0, 0},
10763         {0x09, 0, 0, 0, 0},
10764         {0x0A, 0, 0, 0, 0},
10765         {0x0B, 0, 0, 0, 0},
10766         {0x0C, 0, 0, 0, 0},
10767         {0x0D, 0, 0, 0, 0},
10768         {0x0E, 0, 0, 0, 0},
10769         {0x0F, 0, 0, 0, 0},
10770         {0x10, 0, 0, 0, 0},
10771         {0x11, 0, 0, 0, 0},
10772         {0x12, 0, 0, 0, 0},
10773         {0x13, 0, 0, 0, 0},
10774         {0x14, 0, 0, 0, 0},
10775         {0x15, 0, 0, 0, 0},
10776         {0x16, 0, 0, 0, 0},
10777         {0x17, 0, 0, 0, 0},
10778         {0x18, 0, 0, 0, 0},
10779         {0x19, 0, 0, 0, 0},
10780         {0x1A, 0, 0, 0, 0},
10781         {0x1B, 0, 0, 0, 0},
10782         {0x1C, 0, 0, 0, 0},
10783         {0x1D, 0, 0, 0, 0},
10784         {0x1E, 0, 0, 0, 0},
10785         {0x1F, 0, 0, 0, 0},
10786         {0x20, 0x3, 0x3, 0, 0},
10787         {0x21, 0, 0, 0, 0},
10788         {0x22, 0, 0, 0, 0},
10789         {0x23, 0x90, 0x90, 0, 0},
10790         {0x24, 0x55, 0x55, 0, 0},
10791         {0x25, 0x15, 0x15, 0, 0},
10792         {0x26, 0x5, 0x5, 0, 0},
10793         {0x27, 0x15, 0x15, 0, 0},
10794         {0x28, 0x5, 0x5, 0, 0},
10795         {0x29, 0x20, 0x20, 0, 0},
10796         {0x2A, 0x11, 0x11, 0, 0},
10797         {0x2B, 0x90, 0x90, 0, 0},
10798         {0x2C, 0, 0, 0, 0},
10799         {0x2D, 0x88, 0x88, 0, 0},
10800         {0x2E, 0x32, 0x32, 0, 0},
10801         {0x2F, 0x77, 0x77, 0, 0},
10802         {0x30, 0x17, 0x17, 1, 1},
10803         {0x31, 0xff, 0xff, 1, 1},
10804         {0x32, 0x20, 0x20, 0, 0},
10805         {0x33, 0, 0, 0, 0},
10806         {0x34, 0x88, 0x88, 0, 0},
10807         {0x35, 0x32, 0x32, 0, 0},
10808         {0x36, 0x77, 0x77, 0, 0},
10809         {0x37, 0x17, 0x17, 1, 1},
10810         {0x38, 0xf0, 0xf0, 1, 1},
10811         {0x39, 0x20, 0x20, 0, 0},
10812         {0x3A, 0x8, 0x8, 0, 0},
10813         {0x3B, 0x55, 0x55, 1, 1},
10814         {0x3C, 0, 0, 0, 0},
10815         {0x3D, 0x88, 0x88, 1, 1},
10816         {0x3E, 0, 0, 0, 0},
10817         {0x3F, 0x44, 0x44, 0, 0},
10818         {0x40, 0x7, 0x7, 1, 1},
10819         {0x41, 0x6, 0x6, 0, 0},
10820         {0x42, 0x4, 0x4, 0, 0},
10821         {0x43, 0, 0, 0, 0},
10822         {0x44, 0x8, 0x8, 0, 0},
10823         {0x45, 0x55, 0x55, 1, 1},
10824         {0x46, 0, 0, 0, 0},
10825         {0x47, 0x11, 0x11, 0, 0},
10826         {0x48, 0, 0, 0, 0},
10827         {0x49, 0x44, 0x44, 0, 0},
10828         {0x4A, 0x7, 0x7, 0, 0},
10829         {0x4B, 0x6, 0x6, 0, 0},
10830         {0x4C, 0x4, 0x4, 0, 0},
10831         {0x4D, 0, 0, 0, 0},
10832         {0x4E, 0, 0, 0, 0},
10833         {0x4F, 0x26, 0x26, 1, 1},
10834         {0x50, 0x26, 0x26, 1, 1},
10835         {0x51, 0xf, 0xf, 1, 1},
10836         {0x52, 0xf, 0xf, 1, 1},
10837         {0x53, 0x44, 0x44, 0, 0},
10838         {0x54, 0, 0, 0, 0},
10839         {0x55, 0, 0, 0, 0},
10840         {0x56, 0x8, 0x8, 0, 0},
10841         {0x57, 0x8, 0x8, 0, 0},
10842         {0x58, 0x7, 0x7, 0, 0},
10843         {0x59, 0x22, 0x22, 0, 0},
10844         {0x5A, 0x22, 0x22, 0, 0},
10845         {0x5B, 0x2, 0x2, 0, 0},
10846         {0x5C, 0x4, 0x4, 1, 1},
10847         {0x5D, 0x7, 0x7, 0, 0},
10848         {0x5E, 0x55, 0x55, 0, 0},
10849         {0x5F, 0x23, 0x23, 0, 0},
10850         {0x60, 0x41, 0x41, 0, 0},
10851         {0x61, 0x1, 0x1, 0, 0},
10852         {0x62, 0xa, 0xa, 0, 0},
10853         {0x63, 0, 0, 0, 0},
10854         {0x64, 0, 0, 0, 0},
10855         {0x65, 0, 0, 0, 0},
10856         {0x66, 0, 0, 0, 0},
10857         {0x67, 0, 0, 0, 0},
10858         {0x68, 0, 0, 0, 0},
10859         {0x69, 0, 0, 0, 0},
10860         {0x6A, 0, 0, 0, 0},
10861         {0x6B, 0xc, 0xc, 0, 0},
10862         {0x6C, 0, 0, 0, 0},
10863         {0x6D, 0, 0, 0, 0},
10864         {0x6E, 0, 0, 0, 0},
10865         {0x6F, 0, 0, 0, 0},
10866         {0x70, 0, 0, 0, 0},
10867         {0x71, 0, 0, 0, 0},
10868         {0x72, 0x22, 0x22, 0, 0},
10869         {0x73, 0x22, 0x22, 0, 0},
10870         {0x74, 0, 0, 1, 1},
10871         {0x75, 0xa, 0xa, 0, 0},
10872         {0x76, 0x1, 0x1, 0, 0},
10873         {0x77, 0x22, 0x22, 0, 0},
10874         {0x78, 0x30, 0x30, 0, 0},
10875         {0x79, 0, 0, 0, 0},
10876         {0x7A, 0, 0, 0, 0},
10877         {0x7B, 0, 0, 0, 0},
10878         {0x7C, 0, 0, 0, 0},
10879         {0x7D, 0x5, 0x5, 1, 1},
10880         {0x7E, 0, 0, 0, 0},
10881         {0x7F, 0, 0, 0, 0},
10882         {0x80, 0, 0, 0, 0},
10883         {0x81, 0, 0, 0, 0},
10884         {0x82, 0, 0, 0, 0},
10885         {0x83, 0, 0, 0, 0},
10886         {0x84, 0, 0, 0, 0},
10887         {0x85, 0, 0, 0, 0},
10888         {0x86, 0, 0, 0, 0},
10889         {0x87, 0, 0, 0, 0},
10890         {0x88, 0, 0, 0, 0},
10891         {0x89, 0, 0, 0, 0},
10892         {0x8A, 0, 0, 0, 0},
10893         {0x8B, 0, 0, 0, 0},
10894         {0x8C, 0, 0, 0, 0},
10895         {0x8D, 0, 0, 0, 0},
10896         {0x8E, 0, 0, 0, 0},
10897         {0x8F, 0, 0, 0, 0},
10898         {0x90, 0, 0, 0, 0},
10899         {0x91, 0, 0, 0, 0},
10900         {0x92, 0, 0, 0, 0},
10901         {0x93, 0, 0, 0, 0},
10902         {0x94, 0, 0, 0, 0},
10903         {0xFFFF, 0, 0, 0, 0},
10904 };
10905
10906 radio_regs_t regs_SYN_2056_rev11[] = {
10907         {0x02, 0, 0, 0, 0},
10908         {0x03, 0, 0, 0, 0},
10909         {0x04, 0, 0, 0, 0},
10910         {0x05, 0, 0, 0, 0},
10911         {0x06, 0, 0, 0, 0},
10912         {0x07, 0, 0, 0, 0},
10913         {0x08, 0, 0, 0, 0},
10914         {0x09, 0x1, 0x1, 0, 0},
10915         {0x0A, 0, 0, 0, 0},
10916         {0x0B, 0, 0, 0, 0},
10917         {0x0C, 0, 0, 0, 0},
10918         {0x0D, 0, 0, 0, 0},
10919         {0x0E, 0, 0, 0, 0},
10920         {0x0F, 0, 0, 0, 0},
10921         {0x10, 0, 0, 0, 0},
10922         {0x11, 0, 0, 0, 0},
10923         {0x12, 0, 0, 0, 0},
10924         {0x13, 0, 0, 0, 0},
10925         {0x14, 0, 0, 0, 0},
10926         {0x15, 0, 0, 0, 0},
10927         {0x16, 0, 0, 0, 0},
10928         {0x17, 0, 0, 0, 0},
10929         {0x18, 0, 0, 0, 0},
10930         {0x19, 0, 0, 0, 0},
10931         {0x1A, 0, 0, 0, 0},
10932         {0x1B, 0, 0, 0, 0},
10933         {0x1C, 0, 0, 0, 0},
10934         {0x1D, 0, 0, 0, 0},
10935         {0x1E, 0, 0, 0, 0},
10936         {0x1F, 0, 0, 0, 0},
10937         {0x20, 0, 0, 0, 0},
10938         {0x21, 0, 0, 0, 0},
10939         {0x22, 0x60, 0x60, 0, 0},
10940         {0x23, 0x6, 0x6, 0, 0},
10941         {0x24, 0xc, 0xc, 0, 0},
10942         {0x25, 0, 0, 0, 0},
10943         {0x26, 0, 0, 0, 0},
10944         {0x27, 0, 0, 0, 0},
10945         {0x28, 0x1, 0x1, 0, 0},
10946         {0x29, 0, 0, 0, 0},
10947         {0x2A, 0, 0, 0, 0},
10948         {0x2B, 0, 0, 0, 0},
10949         {0x2C, 0, 0, 0, 0},
10950         {0x2D, 0, 0, 0, 0},
10951         {0x2E, 0, 0, 0, 0},
10952         {0x2F, 0x1f, 0x1f, 0, 0},
10953         {0x30, 0x15, 0x15, 0, 0},
10954         {0x31, 0xf, 0xf, 0, 0},
10955         {0x32, 0, 0, 0, 0},
10956         {0x33, 0, 0, 0, 0},
10957         {0x34, 0, 0, 0, 0},
10958         {0x35, 0, 0, 0, 0},
10959         {0x36, 0, 0, 0, 0},
10960         {0x37, 0, 0, 0, 0},
10961         {0x38, 0, 0, 0, 0},
10962         {0x39, 0, 0, 0, 0},
10963         {0x3A, 0, 0, 0, 0},
10964         {0x3B, 0, 0, 0, 0},
10965         {0x3C, 0x13, 0x13, 0, 0},
10966         {0x3D, 0xf, 0xf, 0, 0},
10967         {0x3E, 0x18, 0x18, 0, 0},
10968         {0x3F, 0, 0, 0, 0},
10969         {0x40, 0, 0, 0, 0},
10970         {0x41, 0x20, 0x20, 0, 0},
10971         {0x42, 0x20, 0x20, 0, 0},
10972         {0x43, 0, 0, 0, 0},
10973         {0x44, 0x77, 0x77, 0, 0},
10974         {0x45, 0x7, 0x7, 0, 0},
10975         {0x46, 0x1, 0x1, 0, 0},
10976         {0x47, 0x6, 0x6, 1, 1},
10977         {0x48, 0xf, 0xf, 0, 0},
10978         {0x49, 0x3f, 0x3f, 1, 1},
10979         {0x4A, 0x32, 0x32, 0, 0},
10980         {0x4B, 0x6, 0x6, 1, 1},
10981         {0x4C, 0x6, 0x6, 1, 1},
10982         {0x4D, 0x4, 0x4, 0, 0},
10983         {0x4E, 0x2b, 0x2b, 1, 1},
10984         {0x4F, 0x1, 0x1, 0, 0},
10985         {0x50, 0x1c, 0x1c, 0, 0},
10986         {0x51, 0x2, 0x2, 0, 0},
10987         {0x52, 0x2, 0x2, 0, 0},
10988         {0x53, 0xf7, 0xf7, 1, 1},
10989         {0x54, 0xb4, 0xb4, 0, 0},
10990         {0x55, 0xd2, 0xd2, 0, 0},
10991         {0x56, 0, 0, 0, 0},
10992         {0x57, 0, 0, 0, 0},
10993         {0x58, 0x4, 0x4, 0, 0},
10994         {0x59, 0x96, 0x96, 0, 0},
10995         {0x5A, 0x3e, 0x3e, 0, 0},
10996         {0x5B, 0x3e, 0x3e, 0, 0},
10997         {0x5C, 0x13, 0x13, 0, 0},
10998         {0x5D, 0x2, 0x2, 0, 0},
10999         {0x5E, 0, 0, 0, 0},
11000         {0x5F, 0x7, 0x7, 0, 0},
11001         {0x60, 0x7, 0x7, 1, 1},
11002         {0x61, 0x8, 0x8, 0, 0},
11003         {0x62, 0x3, 0x3, 0, 0},
11004         {0x63, 0, 0, 0, 0},
11005         {0x64, 0, 0, 0, 0},
11006         {0x65, 0, 0, 0, 0},
11007         {0x66, 0, 0, 0, 0},
11008         {0x67, 0, 0, 0, 0},
11009         {0x68, 0x40, 0x40, 0, 0},
11010         {0x69, 0, 0, 0, 0},
11011         {0x6A, 0, 0, 0, 0},
11012         {0x6B, 0, 0, 0, 0},
11013         {0x6C, 0, 0, 0, 0},
11014         {0x6D, 0x1, 0x1, 0, 0},
11015         {0x6E, 0, 0, 0, 0},
11016         {0x6F, 0, 0, 0, 0},
11017         {0x70, 0x60, 0x60, 0, 0},
11018         {0x71, 0x66, 0x66, 0, 0},
11019         {0x72, 0xc, 0xc, 0, 0},
11020         {0x73, 0x66, 0x66, 0, 0},
11021         {0x74, 0x8f, 0x8f, 1, 1},
11022         {0x75, 0, 0, 0, 0},
11023         {0x76, 0xcc, 0xcc, 0, 0},
11024         {0x77, 0x1, 0x1, 0, 0},
11025         {0x78, 0x66, 0x66, 0, 0},
11026         {0x79, 0x66, 0x66, 0, 0},
11027         {0x7A, 0, 0, 0, 0},
11028         {0x7B, 0, 0, 0, 0},
11029         {0x7C, 0, 0, 0, 0},
11030         {0x7D, 0, 0, 0, 0},
11031         {0x7E, 0, 0, 0, 0},
11032         {0x7F, 0, 0, 0, 0},
11033         {0x80, 0, 0, 0, 0},
11034         {0x81, 0, 0, 0, 0},
11035         {0x82, 0, 0, 0, 0},
11036         {0x83, 0, 0, 0, 0},
11037         {0x84, 0, 0, 0, 0},
11038         {0x85, 0xff, 0xff, 0, 0},
11039         {0x86, 0, 0, 0, 0},
11040         {0x87, 0, 0, 0, 0},
11041         {0x88, 0, 0, 0, 0},
11042         {0x89, 0, 0, 0, 0},
11043         {0x8A, 0, 0, 0, 0},
11044         {0x8B, 0, 0, 0, 0},
11045         {0x8C, 0, 0, 0, 0},
11046         {0x8D, 0, 0, 0, 0},
11047         {0x8E, 0, 0, 0, 0},
11048         {0x8F, 0, 0, 0, 0},
11049         {0x90, 0, 0, 0, 0},
11050         {0x91, 0, 0, 0, 0},
11051         {0x92, 0, 0, 0, 0},
11052         {0x93, 0, 0, 0, 0},
11053         {0x94, 0, 0, 0, 0},
11054         {0x95, 0, 0, 0, 0},
11055         {0x96, 0, 0, 0, 0},
11056         {0x97, 0, 0, 0, 0},
11057         {0x98, 0, 0, 0, 0},
11058         {0x99, 0, 0, 0, 0},
11059         {0x9A, 0, 0, 0, 0},
11060         {0x9B, 0, 0, 0, 0},
11061         {0x9C, 0, 0, 0, 0},
11062         {0x9D, 0, 0, 0, 0},
11063         {0x9E, 0, 0, 0, 0},
11064         {0x9F, 0x6, 0x6, 0, 0},
11065         {0xA0, 0x66, 0x66, 0, 0},
11066         {0xA1, 0x66, 0x66, 0, 0},
11067         {0xA2, 0x66, 0x66, 0, 0},
11068         {0xA3, 0x66, 0x66, 0, 0},
11069         {0xA4, 0x66, 0x66, 0, 0},
11070         {0xA5, 0x66, 0x66, 0, 0},
11071         {0xA6, 0x66, 0x66, 0, 0},
11072         {0xA7, 0x66, 0x66, 0, 0},
11073         {0xA8, 0x66, 0x66, 0, 0},
11074         {0xA9, 0x66, 0x66, 0, 0},
11075         {0xAA, 0x66, 0x66, 0, 0},
11076         {0xAB, 0x66, 0x66, 0, 0},
11077         {0xAC, 0x66, 0x66, 0, 0},
11078         {0xAD, 0x66, 0x66, 0, 0},
11079         {0xAE, 0x66, 0x66, 0, 0},
11080         {0xAF, 0x66, 0x66, 0, 0},
11081         {0xB0, 0x66, 0x66, 0, 0},
11082         {0xB1, 0x66, 0x66, 0, 0},
11083         {0xB2, 0x66, 0x66, 0, 0},
11084         {0xB3, 0xa, 0xa, 0, 0},
11085         {0xB4, 0, 0, 0, 0},
11086         {0xB5, 0, 0, 0, 0},
11087         {0xB6, 0, 0, 0, 0},
11088         {0xFFFF, 0, 0, 0, 0},
11089 };
11090
11091 radio_regs_t regs_TX_2056_rev11[] = {
11092         {0x02, 0, 0, 0, 0},
11093         {0x03, 0, 0, 0, 0},
11094         {0x04, 0, 0, 0, 0},
11095         {0x05, 0, 0, 0, 0},
11096         {0x06, 0, 0, 0, 0},
11097         {0x07, 0, 0, 0, 0},
11098         {0x08, 0, 0, 0, 0},
11099         {0x09, 0, 0, 0, 0},
11100         {0x0A, 0, 0, 0, 0},
11101         {0x0B, 0, 0, 0, 0},
11102         {0x0C, 0, 0, 0, 0},
11103         {0x0D, 0, 0, 0, 0},
11104         {0x0E, 0, 0, 0, 0},
11105         {0x0F, 0, 0, 0, 0},
11106         {0x10, 0, 0, 0, 0},
11107         {0x11, 0, 0, 0, 0},
11108         {0x12, 0, 0, 0, 0},
11109         {0x13, 0, 0, 0, 0},
11110         {0x14, 0, 0, 0, 0},
11111         {0x15, 0, 0, 0, 0},
11112         {0x16, 0, 0, 0, 0},
11113         {0x17, 0, 0, 0, 0},
11114         {0x18, 0, 0, 0, 0},
11115         {0x19, 0, 0, 0, 0},
11116         {0x1A, 0, 0, 0, 0},
11117         {0x1B, 0, 0, 0, 0},
11118         {0x1C, 0, 0, 0, 0},
11119         {0x1D, 0, 0, 0, 0},
11120         {0x1E, 0, 0, 0, 0},
11121         {0x1F, 0, 0, 0, 0},
11122         {0x20, 0, 0, 0, 0},
11123         {0x21, 0x88, 0x88, 0, 0},
11124         {0x22, 0x88, 0x88, 0, 0},
11125         {0x23, 0x88, 0x88, 0, 0},
11126         {0x24, 0x88, 0x88, 0, 0},
11127         {0x25, 0xc, 0xc, 0, 0},
11128         {0x26, 0, 0, 0, 0},
11129         {0x27, 0x3, 0x3, 0, 0},
11130         {0x28, 0, 0, 0, 0},
11131         {0x29, 0x3, 0x3, 0, 0},
11132         {0x2A, 0x37, 0x37, 0, 0},
11133         {0x2B, 0x3, 0x3, 0, 0},
11134         {0x2C, 0, 0, 0, 0},
11135         {0x2D, 0, 0, 0, 0},
11136         {0x2E, 0x1, 0x1, 0, 0},
11137         {0x2F, 0x1, 0x1, 0, 0},
11138         {0x30, 0, 0, 0, 0},
11139         {0x31, 0, 0, 0, 0},
11140         {0x32, 0, 0, 0, 0},
11141         {0x33, 0x11, 0x11, 0, 0},
11142         {0x34, 0xee, 0xee, 1, 1},
11143         {0x35, 0, 0, 0, 0},
11144         {0x36, 0, 0, 0, 0},
11145         {0x37, 0x3, 0x3, 0, 0},
11146         {0x38, 0x50, 0x50, 1, 1},
11147         {0x39, 0, 0, 0, 0},
11148         {0x3A, 0x50, 0x50, 1, 1},
11149         {0x3B, 0, 0, 0, 0},
11150         {0x3C, 0x6e, 0x6e, 0, 0},
11151         {0x3D, 0xf0, 0xf0, 1, 1},
11152         {0x3E, 0, 0, 0, 0},
11153         {0x3F, 0, 0, 0, 0},
11154         {0x40, 0, 0, 0, 0},
11155         {0x41, 0x3, 0x3, 0, 0},
11156         {0x42, 0x3, 0x3, 0, 0},
11157         {0x43, 0, 0, 0, 0},
11158         {0x44, 0x1e, 0x1e, 0, 0},
11159         {0x45, 0, 0, 0, 0},
11160         {0x46, 0x6e, 0x6e, 0, 0},
11161         {0x47, 0xf0, 0xf0, 1, 1},
11162         {0x48, 0, 0, 0, 0},
11163         {0x49, 0x2, 0x2, 0, 0},
11164         {0x4A, 0xff, 0xff, 1, 1},
11165         {0x4B, 0xc, 0xc, 0, 0},
11166         {0x4C, 0, 0, 0, 0},
11167         {0x4D, 0x38, 0x38, 0, 0},
11168         {0x4E, 0x70, 0x70, 1, 1},
11169         {0x4F, 0x2, 0x2, 0, 0},
11170         {0x50, 0x88, 0x88, 0, 0},
11171         {0x51, 0xc, 0xc, 0, 0},
11172         {0x52, 0, 0, 0, 0},
11173         {0x53, 0x8, 0x8, 0, 0},
11174         {0x54, 0x70, 0x70, 1, 1},
11175         {0x55, 0x2, 0x2, 0, 0},
11176         {0x56, 0xff, 0xff, 1, 1},
11177         {0x57, 0, 0, 0, 0},
11178         {0x58, 0x83, 0x83, 0, 0},
11179         {0x59, 0x77, 0x77, 1, 1},
11180         {0x5A, 0, 0, 0, 0},
11181         {0x5B, 0x2, 0x2, 0, 0},
11182         {0x5C, 0x88, 0x88, 0, 0},
11183         {0x5D, 0, 0, 0, 0},
11184         {0x5E, 0x8, 0x8, 0, 0},
11185         {0x5F, 0x77, 0x77, 1, 1},
11186         {0x60, 0x1, 0x1, 0, 0},
11187         {0x61, 0, 0, 0, 0},
11188         {0x62, 0x7, 0x7, 0, 0},
11189         {0x63, 0, 0, 0, 0},
11190         {0x64, 0x7, 0x7, 0, 0},
11191         {0x65, 0, 0, 0, 0},
11192         {0x66, 0, 0, 0, 0},
11193         {0x67, 0, 0, 1, 1},
11194         {0x68, 0, 0, 0, 0},
11195         {0x69, 0xa, 0xa, 0, 0},
11196         {0x6A, 0, 0, 0, 0},
11197         {0x6B, 0, 0, 0, 0},
11198         {0x6C, 0, 0, 0, 0},
11199         {0x6D, 0, 0, 0, 0},
11200         {0x6E, 0, 0, 0, 0},
11201         {0x6F, 0, 0, 0, 0},
11202         {0x70, 0, 0, 0, 0},
11203         {0x71, 0x2, 0x2, 0, 0},
11204         {0x72, 0, 0, 0, 0},
11205         {0x73, 0, 0, 0, 0},
11206         {0x74, 0xe, 0xe, 0, 0},
11207         {0x75, 0xe, 0xe, 0, 0},
11208         {0x76, 0xe, 0xe, 0, 0},
11209         {0x77, 0x13, 0x13, 0, 0},
11210         {0x78, 0x13, 0x13, 0, 0},
11211         {0x79, 0x1b, 0x1b, 0, 0},
11212         {0x7A, 0x1b, 0x1b, 0, 0},
11213         {0x7B, 0x55, 0x55, 0, 0},
11214         {0x7C, 0x5b, 0x5b, 0, 0},
11215         {0x7D, 0x30, 0x30, 1, 1},
11216         {0x7E, 0, 0, 0, 0},
11217         {0x7F, 0, 0, 0, 0},
11218         {0x80, 0, 0, 0, 0},
11219         {0x81, 0, 0, 0, 0},
11220         {0x82, 0, 0, 0, 0},
11221         {0x83, 0, 0, 0, 0},
11222         {0x84, 0, 0, 0, 0},
11223         {0x85, 0, 0, 0, 0},
11224         {0x86, 0, 0, 0, 0},
11225         {0x87, 0, 0, 0, 0},
11226         {0x88, 0, 0, 0, 0},
11227         {0x89, 0, 0, 0, 0},
11228         {0x8A, 0, 0, 0, 0},
11229         {0x8B, 0, 0, 0, 0},
11230         {0x8C, 0, 0, 0, 0},
11231         {0x8D, 0, 0, 0, 0},
11232         {0x8E, 0, 0, 0, 0},
11233         {0x8F, 0, 0, 0, 0},
11234         {0x90, 0, 0, 0, 0},
11235         {0x91, 0, 0, 0, 0},
11236         {0x92, 0, 0, 0, 0},
11237         {0x93, 0x70, 0x70, 0, 0},
11238         {0x94, 0x70, 0x70, 0, 0},
11239         {0x95, 0x70, 0x70, 0, 0},
11240         {0x96, 0x70, 0x70, 0, 0},
11241         {0x97, 0x70, 0x70, 0, 0},
11242         {0x98, 0x70, 0x70, 0, 0},
11243         {0x99, 0x70, 0x70, 0, 0},
11244         {0x9A, 0x70, 0x70, 0, 0},
11245         {0xFFFF, 0, 0, 0, 0},
11246 };
11247
11248 radio_regs_t regs_RX_2056_rev11[] = {
11249         {0x02, 0, 0, 0, 0},
11250         {0x03, 0, 0, 0, 0},
11251         {0x04, 0, 0, 0, 0},
11252         {0x05, 0, 0, 0, 0},
11253         {0x06, 0, 0, 0, 0},
11254         {0x07, 0, 0, 0, 0},
11255         {0x08, 0, 0, 0, 0},
11256         {0x09, 0, 0, 0, 0},
11257         {0x0A, 0, 0, 0, 0},
11258         {0x0B, 0, 0, 0, 0},
11259         {0x0C, 0, 0, 0, 0},
11260         {0x0D, 0, 0, 0, 0},
11261         {0x0E, 0, 0, 0, 0},
11262         {0x0F, 0, 0, 0, 0},
11263         {0x10, 0, 0, 0, 0},
11264         {0x11, 0, 0, 0, 0},
11265         {0x12, 0, 0, 0, 0},
11266         {0x13, 0, 0, 0, 0},
11267         {0x14, 0, 0, 0, 0},
11268         {0x15, 0, 0, 0, 0},
11269         {0x16, 0, 0, 0, 0},
11270         {0x17, 0, 0, 0, 0},
11271         {0x18, 0, 0, 0, 0},
11272         {0x19, 0, 0, 0, 0},
11273         {0x1A, 0, 0, 0, 0},
11274         {0x1B, 0, 0, 0, 0},
11275         {0x1C, 0, 0, 0, 0},
11276         {0x1D, 0, 0, 0, 0},
11277         {0x1E, 0, 0, 0, 0},
11278         {0x1F, 0, 0, 0, 0},
11279         {0x20, 0x3, 0x3, 0, 0},
11280         {0x21, 0, 0, 0, 0},
11281         {0x22, 0, 0, 0, 0},
11282         {0x23, 0x90, 0x90, 0, 0},
11283         {0x24, 0x55, 0x55, 0, 0},
11284         {0x25, 0x15, 0x15, 0, 0},
11285         {0x26, 0x5, 0x5, 0, 0},
11286         {0x27, 0x15, 0x15, 0, 0},
11287         {0x28, 0x5, 0x5, 0, 0},
11288         {0x29, 0x20, 0x20, 0, 0},
11289         {0x2A, 0x11, 0x11, 0, 0},
11290         {0x2B, 0x90, 0x90, 0, 0},
11291         {0x2C, 0, 0, 0, 0},
11292         {0x2D, 0x88, 0x88, 0, 0},
11293         {0x2E, 0x32, 0x32, 0, 0},
11294         {0x2F, 0x77, 0x77, 0, 0},
11295         {0x30, 0x17, 0x17, 1, 1},
11296         {0x31, 0xff, 0xff, 1, 1},
11297         {0x32, 0x20, 0x20, 0, 0},
11298         {0x33, 0, 0, 0, 0},
11299         {0x34, 0x88, 0x88, 0, 0},
11300         {0x35, 0x32, 0x32, 0, 0},
11301         {0x36, 0x77, 0x77, 0, 0},
11302         {0x37, 0x17, 0x17, 1, 1},
11303         {0x38, 0xf0, 0xf0, 1, 1},
11304         {0x39, 0x20, 0x20, 0, 0},
11305         {0x3A, 0x8, 0x8, 0, 0},
11306         {0x3B, 0x55, 0x55, 1, 1},
11307         {0x3C, 0, 0, 0, 0},
11308         {0x3D, 0x88, 0x88, 1, 1},
11309         {0x3E, 0, 0, 0, 0},
11310         {0x3F, 0x44, 0x44, 0, 0},
11311         {0x40, 0x7, 0x7, 1, 1},
11312         {0x41, 0x6, 0x6, 0, 0},
11313         {0x42, 0x4, 0x4, 0, 0},
11314         {0x43, 0, 0, 0, 0},
11315         {0x44, 0x8, 0x8, 0, 0},
11316         {0x45, 0x55, 0x55, 1, 1},
11317         {0x46, 0, 0, 0, 0},
11318         {0x47, 0x11, 0x11, 0, 0},
11319         {0x48, 0, 0, 0, 0},
11320         {0x49, 0x44, 0x44, 0, 0},
11321         {0x4A, 0x7, 0x7, 0, 0},
11322         {0x4B, 0x6, 0x6, 0, 0},
11323         {0x4C, 0x4, 0x4, 0, 0},
11324         {0x4D, 0, 0, 0, 0},
11325         {0x4E, 0, 0, 0, 0},
11326         {0x4F, 0x26, 0x26, 1, 1},
11327         {0x50, 0x26, 0x26, 1, 1},
11328         {0x51, 0xf, 0xf, 1, 1},
11329         {0x52, 0xf, 0xf, 1, 1},
11330         {0x53, 0x44, 0x44, 0, 0},
11331         {0x54, 0, 0, 0, 0},
11332         {0x55, 0, 0, 0, 0},
11333         {0x56, 0x8, 0x8, 0, 0},
11334         {0x57, 0x8, 0x8, 0, 0},
11335         {0x58, 0x7, 0x7, 0, 0},
11336         {0x59, 0x22, 0x22, 0, 0},
11337         {0x5A, 0x22, 0x22, 0, 0},
11338         {0x5B, 0x2, 0x2, 0, 0},
11339         {0x5C, 0x4, 0x4, 1, 1},
11340         {0x5D, 0x7, 0x7, 0, 0},
11341         {0x5E, 0x55, 0x55, 0, 0},
11342         {0x5F, 0x23, 0x23, 0, 0},
11343         {0x60, 0x41, 0x41, 0, 0},
11344         {0x61, 0x1, 0x1, 0, 0},
11345         {0x62, 0xa, 0xa, 0, 0},
11346         {0x63, 0, 0, 0, 0},
11347         {0x64, 0, 0, 0, 0},
11348         {0x65, 0, 0, 0, 0},
11349         {0x66, 0, 0, 0, 0},
11350         {0x67, 0, 0, 0, 0},
11351         {0x68, 0, 0, 0, 0},
11352         {0x69, 0, 0, 0, 0},
11353         {0x6A, 0, 0, 0, 0},
11354         {0x6B, 0xc, 0xc, 0, 0},
11355         {0x6C, 0, 0, 0, 0},
11356         {0x6D, 0, 0, 0, 0},
11357         {0x6E, 0, 0, 0, 0},
11358         {0x6F, 0, 0, 0, 0},
11359         {0x70, 0, 0, 0, 0},
11360         {0x71, 0, 0, 0, 0},
11361         {0x72, 0x22, 0x22, 0, 0},
11362         {0x73, 0x22, 0x22, 0, 0},
11363         {0x74, 0, 0, 1, 1},
11364         {0x75, 0xa, 0xa, 0, 0},
11365         {0x76, 0x1, 0x1, 0, 0},
11366         {0x77, 0x22, 0x22, 0, 0},
11367         {0x78, 0x30, 0x30, 0, 0},
11368         {0x79, 0, 0, 0, 0},
11369         {0x7A, 0, 0, 0, 0},
11370         {0x7B, 0, 0, 0, 0},
11371         {0x7C, 0, 0, 0, 0},
11372         {0x7D, 0x5, 0x5, 1, 1},
11373         {0x7E, 0, 0, 0, 0},
11374         {0x7F, 0, 0, 0, 0},
11375         {0x80, 0, 0, 0, 0},
11376         {0x81, 0, 0, 0, 0},
11377         {0x82, 0, 0, 0, 0},
11378         {0x83, 0, 0, 0, 0},
11379         {0x84, 0, 0, 0, 0},
11380         {0x85, 0, 0, 0, 0},
11381         {0x86, 0, 0, 0, 0},
11382         {0x87, 0, 0, 0, 0},
11383         {0x88, 0, 0, 0, 0},
11384         {0x89, 0, 0, 0, 0},
11385         {0x8A, 0, 0, 0, 0},
11386         {0x8B, 0, 0, 0, 0},
11387         {0x8C, 0, 0, 0, 0},
11388         {0x8D, 0, 0, 0, 0},
11389         {0x8E, 0, 0, 0, 0},
11390         {0x8F, 0, 0, 0, 0},
11391         {0x90, 0, 0, 0, 0},
11392         {0x91, 0, 0, 0, 0},
11393         {0x92, 0, 0, 0, 0},
11394         {0x93, 0, 0, 0, 0},
11395         {0x94, 0, 0, 0, 0},
11396         {0xFFFF, 0, 0, 0, 0},
11397 };
11398
11399 radio_20xx_regs_t regs_2057_rev4[] = {
11400         {0x00, 0x84, 0},
11401         {0x01, 0, 0},
11402         {0x02, 0x60, 0},
11403         {0x03, 0x1f, 0},
11404         {0x04, 0x4, 0},
11405         {0x05, 0x2, 0},
11406         {0x06, 0x1, 0},
11407         {0x07, 0x1, 0},
11408         {0x08, 0x1, 0},
11409         {0x09, 0x69, 0},
11410         {0x0A, 0x66, 0},
11411         {0x0B, 0x6, 0},
11412         {0x0C, 0x18, 0},
11413         {0x0D, 0x3, 0},
11414         {0x0E, 0x20, 1},
11415         {0x0F, 0x20, 0},
11416         {0x10, 0, 0},
11417         {0x11, 0x7c, 0},
11418         {0x12, 0x42, 0},
11419         {0x13, 0xbd, 0},
11420         {0x14, 0x7, 0},
11421         {0x15, 0xf7, 0},
11422         {0x16, 0x8, 0},
11423         {0x17, 0x17, 0},
11424         {0x18, 0x7, 0},
11425         {0x19, 0, 0},
11426         {0x1A, 0x2, 0},
11427         {0x1B, 0x13, 0},
11428         {0x1C, 0x3e, 0},
11429         {0x1D, 0x3e, 0},
11430         {0x1E, 0x96, 0},
11431         {0x1F, 0x4, 0},
11432         {0x20, 0, 0},
11433         {0x21, 0, 0},
11434         {0x22, 0x17, 0},
11435         {0x23, 0x4, 0},
11436         {0x24, 0x1, 0},
11437         {0x25, 0x6, 0},
11438         {0x26, 0x4, 0},
11439         {0x27, 0xd, 0},
11440         {0x28, 0xd, 0},
11441         {0x29, 0x30, 0},
11442         {0x2A, 0x32, 0},
11443         {0x2B, 0x8, 0},
11444         {0x2C, 0x1c, 0},
11445         {0x2D, 0x2, 0},
11446         {0x2E, 0x4, 0},
11447         {0x2F, 0x7f, 0},
11448         {0x30, 0x27, 0},
11449         {0x31, 0, 1},
11450         {0x32, 0, 1},
11451         {0x33, 0, 1},
11452         {0x34, 0, 0},
11453         {0x35, 0x26, 1},
11454         {0x36, 0x18, 0},
11455         {0x37, 0x7, 0},
11456         {0x38, 0x66, 0},
11457         {0x39, 0x66, 0},
11458         {0x3A, 0x66, 0},
11459         {0x3B, 0x66, 0},
11460         {0x3C, 0xff, 1},
11461         {0x3D, 0xff, 1},
11462         {0x3E, 0xff, 1},
11463         {0x3F, 0xff, 1},
11464         {0x40, 0x16, 0},
11465         {0x41, 0x7, 0},
11466         {0x42, 0x19, 0},
11467         {0x43, 0x7, 0},
11468         {0x44, 0x6, 0},
11469         {0x45, 0x3, 0},
11470         {0x46, 0x1, 0},
11471         {0x47, 0x7, 0},
11472         {0x48, 0x33, 0},
11473         {0x49, 0x5, 0},
11474         {0x4A, 0x77, 0},
11475         {0x4B, 0x66, 0},
11476         {0x4C, 0x66, 0},
11477         {0x4D, 0, 0},
11478         {0x4E, 0x4, 0},
11479         {0x4F, 0xc, 0},
11480         {0x50, 0, 0},
11481         {0x51, 0x75, 0},
11482         {0x56, 0x7, 0},
11483         {0x57, 0, 0},
11484         {0x58, 0, 0},
11485         {0x59, 0xa8, 0},
11486         {0x5A, 0, 0},
11487         {0x5B, 0x1f, 0},
11488         {0x5C, 0x30, 0},
11489         {0x5D, 0x1, 0},
11490         {0x5E, 0x30, 0},
11491         {0x5F, 0x70, 0},
11492         {0x60, 0, 0},
11493         {0x61, 0, 0},
11494         {0x62, 0x33, 1},
11495         {0x63, 0x19, 0},
11496         {0x64, 0x62, 0},
11497         {0x65, 0, 0},
11498         {0x66, 0x11, 0},
11499         {0x69, 0, 0},
11500         {0x6A, 0x7e, 0},
11501         {0x6B, 0x3f, 0},
11502         {0x6C, 0x7f, 0},
11503         {0x6D, 0x78, 0},
11504         {0x6E, 0xc8, 0},
11505         {0x6F, 0x88, 0},
11506         {0x70, 0x8, 0},
11507         {0x71, 0xf, 0},
11508         {0x72, 0xbc, 0},
11509         {0x73, 0x8, 0},
11510         {0x74, 0x60, 0},
11511         {0x75, 0x1e, 0},
11512         {0x76, 0x70, 0},
11513         {0x77, 0, 0},
11514         {0x78, 0, 0},
11515         {0x79, 0, 0},
11516         {0x7A, 0x33, 0},
11517         {0x7B, 0x1e, 0},
11518         {0x7C, 0x62, 0},
11519         {0x7D, 0x11, 0},
11520         {0x80, 0x3c, 0},
11521         {0x81, 0x9c, 0},
11522         {0x82, 0xa, 0},
11523         {0x83, 0x9d, 0},
11524         {0x84, 0xa, 0},
11525         {0x85, 0, 0},
11526         {0x86, 0x40, 0},
11527         {0x87, 0x40, 0},
11528         {0x88, 0x88, 0},
11529         {0x89, 0x10, 0},
11530         {0x8A, 0xf0, 1},
11531         {0x8B, 0x10, 1},
11532         {0x8C, 0xf0, 1},
11533         {0x8D, 0, 0},
11534         {0x8E, 0, 0},
11535         {0x8F, 0x10, 0},
11536         {0x90, 0x55, 0},
11537         {0x91, 0x3f, 1},
11538         {0x92, 0x36, 1},
11539         {0x93, 0, 0},
11540         {0x94, 0, 0},
11541         {0x95, 0, 0},
11542         {0x96, 0x87, 0},
11543         {0x97, 0x11, 0},
11544         {0x98, 0, 0},
11545         {0x99, 0x33, 0},
11546         {0x9A, 0x88, 0},
11547         {0x9B, 0, 0},
11548         {0x9C, 0x87, 0},
11549         {0x9D, 0x11, 0},
11550         {0x9E, 0, 0},
11551         {0x9F, 0x33, 0},
11552         {0xA0, 0x88, 0},
11553         {0xA1, 0xe1, 0},
11554         {0xA2, 0x3f, 0},
11555         {0xA3, 0x44, 0},
11556         {0xA4, 0x8c, 1},
11557         {0xA5, 0x6d, 0},
11558         {0xA6, 0x22, 0},
11559         {0xA7, 0xbe, 0},
11560         {0xA8, 0x55, 1},
11561         {0xA9, 0xc, 0},
11562         {0xAA, 0xc, 0},
11563         {0xAB, 0xaa, 0},
11564         {0xAC, 0x2, 0},
11565         {0xAD, 0, 0},
11566         {0xAE, 0x10, 0},
11567         {0xAF, 0x1, 1},
11568         {0xB0, 0, 0},
11569         {0xB1, 0, 0},
11570         {0xB2, 0x80, 0},
11571         {0xB3, 0x60, 0},
11572         {0xB4, 0x44, 0},
11573         {0xB5, 0x55, 0},
11574         {0xB6, 0x1, 0},
11575         {0xB7, 0x55, 0},
11576         {0xB8, 0x1, 0},
11577         {0xB9, 0x5, 0},
11578         {0xBA, 0x55, 0},
11579         {0xBB, 0x55, 0},
11580         {0xC1, 0, 0},
11581         {0xC2, 0, 0},
11582         {0xC3, 0, 0},
11583         {0xC4, 0, 0},
11584         {0xC5, 0, 0},
11585         {0xC6, 0, 0},
11586         {0xC7, 0, 0},
11587         {0xC8, 0, 0},
11588         {0xC9, 0, 0},
11589         {0xCA, 0, 0},
11590         {0xCB, 0, 0},
11591         {0xCC, 0, 0},
11592         {0xCD, 0, 0},
11593         {0xCE, 0x5e, 0},
11594         {0xCF, 0xc, 0},
11595         {0xD0, 0xc, 0},
11596         {0xD1, 0xc, 0},
11597         {0xD2, 0, 0},
11598         {0xD3, 0x2b, 0},
11599         {0xD4, 0xc, 0},
11600         {0xD5, 0, 0},
11601         {0xD6, 0x75, 0},
11602         {0xDB, 0x7, 0},
11603         {0xDC, 0, 0},
11604         {0xDD, 0, 0},
11605         {0xDE, 0xa8, 0},
11606         {0xDF, 0, 0},
11607         {0xE0, 0x1f, 0},
11608         {0xE1, 0x30, 0},
11609         {0xE2, 0x1, 0},
11610         {0xE3, 0x30, 0},
11611         {0xE4, 0x70, 0},
11612         {0xE5, 0, 0},
11613         {0xE6, 0, 0},
11614         {0xE7, 0x33, 0},
11615         {0xE8, 0x19, 0},
11616         {0xE9, 0x62, 0},
11617         {0xEA, 0, 0},
11618         {0xEB, 0x11, 0},
11619         {0xEE, 0, 0},
11620         {0xEF, 0x7e, 0},
11621         {0xF0, 0x3f, 0},
11622         {0xF1, 0x7f, 0},
11623         {0xF2, 0x78, 0},
11624         {0xF3, 0xc8, 0},
11625         {0xF4, 0x88, 0},
11626         {0xF5, 0x8, 0},
11627         {0xF6, 0xf, 0},
11628         {0xF7, 0xbc, 0},
11629         {0xF8, 0x8, 0},
11630         {0xF9, 0x60, 0},
11631         {0xFA, 0x1e, 0},
11632         {0xFB, 0x70, 0},
11633         {0xFC, 0, 0},
11634         {0xFD, 0, 0},
11635         {0xFE, 0, 0},
11636         {0xFF, 0x33, 0},
11637         {0x100, 0x1e, 0},
11638         {0x101, 0x62, 0},
11639         {0x102, 0x11, 0},
11640         {0x105, 0x3c, 0},
11641         {0x106, 0x9c, 0},
11642         {0x107, 0xa, 0},
11643         {0x108, 0x9d, 0},
11644         {0x109, 0xa, 0},
11645         {0x10A, 0, 0},
11646         {0x10B, 0x40, 0},
11647         {0x10C, 0x40, 0},
11648         {0x10D, 0x88, 0},
11649         {0x10E, 0x10, 0},
11650         {0x10F, 0xf0, 1},
11651         {0x110, 0x10, 1},
11652         {0x111, 0xf0, 1},
11653         {0x112, 0, 0},
11654         {0x113, 0, 0},
11655         {0x114, 0x10, 0},
11656         {0x115, 0x55, 0},
11657         {0x116, 0x3f, 1},
11658         {0x117, 0x36, 1},
11659         {0x118, 0, 0},
11660         {0x119, 0, 0},
11661         {0x11A, 0, 0},
11662         {0x11B, 0x87, 0},
11663         {0x11C, 0x11, 0},
11664         {0x11D, 0, 0},
11665         {0x11E, 0x33, 0},
11666         {0x11F, 0x88, 0},
11667         {0x120, 0, 0},
11668         {0x121, 0x87, 0},
11669         {0x122, 0x11, 0},
11670         {0x123, 0, 0},
11671         {0x124, 0x33, 0},
11672         {0x125, 0x88, 0},
11673         {0x126, 0xe1, 0},
11674         {0x127, 0x3f, 0},
11675         {0x128, 0x44, 0},
11676         {0x129, 0x8c, 1},
11677         {0x12A, 0x6d, 0},
11678         {0x12B, 0x22, 0},
11679         {0x12C, 0xbe, 0},
11680         {0x12D, 0x55, 1},
11681         {0x12E, 0xc, 0},
11682         {0x12F, 0xc, 0},
11683         {0x130, 0xaa, 0},
11684         {0x131, 0x2, 0},
11685         {0x132, 0, 0},
11686         {0x133, 0x10, 0},
11687         {0x134, 0x1, 1},
11688         {0x135, 0, 0},
11689         {0x136, 0, 0},
11690         {0x137, 0x80, 0},
11691         {0x138, 0x60, 0},
11692         {0x139, 0x44, 0},
11693         {0x13A, 0x55, 0},
11694         {0x13B, 0x1, 0},
11695         {0x13C, 0x55, 0},
11696         {0x13D, 0x1, 0},
11697         {0x13E, 0x5, 0},
11698         {0x13F, 0x55, 0},
11699         {0x140, 0x55, 0},
11700         {0x146, 0, 0},
11701         {0x147, 0, 0},
11702         {0x148, 0, 0},
11703         {0x149, 0, 0},
11704         {0x14A, 0, 0},
11705         {0x14B, 0, 0},
11706         {0x14C, 0, 0},
11707         {0x14D, 0, 0},
11708         {0x14E, 0, 0},
11709         {0x14F, 0, 0},
11710         {0x150, 0, 0},
11711         {0x151, 0, 0},
11712         {0x152, 0, 0},
11713         {0x153, 0, 0},
11714         {0x154, 0xc, 0},
11715         {0x155, 0xc, 0},
11716         {0x156, 0xc, 0},
11717         {0x157, 0, 0},
11718         {0x158, 0x2b, 0},
11719         {0x159, 0x84, 0},
11720         {0x15A, 0x15, 0},
11721         {0x15B, 0xf, 0},
11722         {0x15C, 0, 0},
11723         {0x15D, 0, 0},
11724         {0x15E, 0, 1},
11725         {0x15F, 0, 1},
11726         {0x160, 0, 1},
11727         {0x161, 0, 1},
11728         {0x162, 0, 1},
11729         {0x163, 0, 1},
11730         {0x164, 0, 0},
11731         {0x165, 0, 0},
11732         {0x166, 0, 0},
11733         {0x167, 0, 0},
11734         {0x168, 0, 0},
11735         {0x169, 0x2, 1},
11736         {0x16A, 0, 1},
11737         {0x16B, 0, 1},
11738         {0x16C, 0, 1},
11739         {0x16D, 0, 0},
11740         {0x170, 0, 0},
11741         {0x171, 0x77, 0},
11742         {0x172, 0x77, 0},
11743         {0x173, 0x77, 0},
11744         {0x174, 0x77, 0},
11745         {0x175, 0, 0},
11746         {0x176, 0x3, 0},
11747         {0x177, 0x37, 0},
11748         {0x178, 0x3, 0},
11749         {0x179, 0, 0},
11750         {0x17A, 0x21, 0},
11751         {0x17B, 0x21, 0},
11752         {0x17C, 0, 0},
11753         {0x17D, 0xaa, 0},
11754         {0x17E, 0, 0},
11755         {0x17F, 0xaa, 0},
11756         {0x180, 0, 0},
11757         {0x190, 0, 0},
11758         {0x191, 0x77, 0},
11759         {0x192, 0x77, 0},
11760         {0x193, 0x77, 0},
11761         {0x194, 0x77, 0},
11762         {0x195, 0, 0},
11763         {0x196, 0x3, 0},
11764         {0x197, 0x37, 0},
11765         {0x198, 0x3, 0},
11766         {0x199, 0, 0},
11767         {0x19A, 0x21, 0},
11768         {0x19B, 0x21, 0},
11769         {0x19C, 0, 0},
11770         {0x19D, 0xaa, 0},
11771         {0x19E, 0, 0},
11772         {0x19F, 0xaa, 0},
11773         {0x1A0, 0, 0},
11774         {0x1A1, 0x2, 0},
11775         {0x1A2, 0xf, 0},
11776         {0x1A3, 0xf, 0},
11777         {0x1A4, 0, 1},
11778         {0x1A5, 0, 1},
11779         {0x1A6, 0, 1},
11780         {0x1A7, 0x2, 0},
11781         {0x1A8, 0xf, 0},
11782         {0x1A9, 0xf, 0},
11783         {0x1AA, 0, 1},
11784         {0x1AB, 0, 1},
11785         {0x1AC, 0, 1},
11786         {0xFFFF, 0, 0},
11787 };
11788
11789 radio_20xx_regs_t regs_2057_rev5[] = {
11790         {0x00, 0, 1},
11791         {0x01, 0x57, 1},
11792         {0x02, 0x20, 1},
11793         {0x03, 0x1f, 0},
11794         {0x04, 0x4, 0},
11795         {0x05, 0x2, 0},
11796         {0x06, 0x1, 0},
11797         {0x07, 0x1, 0},
11798         {0x08, 0x1, 0},
11799         {0x09, 0x69, 0},
11800         {0x0A, 0x66, 0},
11801         {0x0B, 0x6, 0},
11802         {0x0C, 0x18, 0},
11803         {0x0D, 0x3, 0},
11804         {0x0E, 0x20, 0},
11805         {0x0F, 0x20, 0},
11806         {0x10, 0, 0},
11807         {0x11, 0x7c, 0},
11808         {0x12, 0x42, 0},
11809         {0x13, 0xbd, 0},
11810         {0x14, 0x7, 0},
11811         {0x15, 0x87, 0},
11812         {0x16, 0x8, 0},
11813         {0x17, 0x17, 0},
11814         {0x18, 0x7, 0},
11815         {0x19, 0, 0},
11816         {0x1A, 0x2, 0},
11817         {0x1B, 0x13, 0},
11818         {0x1C, 0x3e, 0},
11819         {0x1D, 0x3e, 0},
11820         {0x1E, 0x96, 0},
11821         {0x1F, 0x4, 0},
11822         {0x20, 0, 0},
11823         {0x21, 0, 0},
11824         {0x22, 0x17, 0},
11825         {0x23, 0x6, 1},
11826         {0x24, 0x1, 0},
11827         {0x25, 0x6, 0},
11828         {0x26, 0x4, 0},
11829         {0x27, 0xd, 0},
11830         {0x28, 0xd, 0},
11831         {0x29, 0x30, 0},
11832         {0x2A, 0x32, 0},
11833         {0x2B, 0x8, 0},
11834         {0x2C, 0x1c, 0},
11835         {0x2D, 0x2, 0},
11836         {0x2E, 0x4, 0},
11837         {0x2F, 0x7f, 0},
11838         {0x30, 0x27, 0},
11839         {0x31, 0, 1},
11840         {0x32, 0, 1},
11841         {0x33, 0, 1},
11842         {0x34, 0, 0},
11843         {0x35, 0x20, 0},
11844         {0x36, 0x18, 0},
11845         {0x37, 0x7, 0},
11846         {0x38, 0x66, 0},
11847         {0x39, 0x66, 0},
11848         {0x3C, 0xff, 0},
11849         {0x3D, 0xff, 0},
11850         {0x40, 0x16, 0},
11851         {0x41, 0x7, 0},
11852         {0x45, 0x3, 0},
11853         {0x46, 0x1, 0},
11854         {0x47, 0x7, 0},
11855         {0x4B, 0x66, 0},
11856         {0x4C, 0x66, 0},
11857         {0x4D, 0, 0},
11858         {0x4E, 0x4, 0},
11859         {0x4F, 0xc, 0},
11860         {0x50, 0, 0},
11861         {0x51, 0x70, 1},
11862         {0x56, 0x7, 0},
11863         {0x57, 0, 0},
11864         {0x58, 0, 0},
11865         {0x59, 0x88, 1},
11866         {0x5A, 0, 0},
11867         {0x5B, 0x1f, 0},
11868         {0x5C, 0x20, 1},
11869         {0x5D, 0x1, 0},
11870         {0x5E, 0x30, 0},
11871         {0x5F, 0x70, 0},
11872         {0x60, 0, 0},
11873         {0x61, 0, 0},
11874         {0x62, 0x33, 1},
11875         {0x63, 0xf, 1},
11876         {0x64, 0xf, 1},
11877         {0x65, 0, 0},
11878         {0x66, 0x11, 0},
11879         {0x80, 0x3c, 0},
11880         {0x81, 0x1, 1},
11881         {0x82, 0xa, 0},
11882         {0x85, 0, 0},
11883         {0x86, 0x40, 0},
11884         {0x87, 0x40, 0},
11885         {0x88, 0x88, 0},
11886         {0x89, 0x10, 0},
11887         {0x8A, 0xf0, 0},
11888         {0x8B, 0x10, 0},
11889         {0x8C, 0xf0, 0},
11890         {0x8F, 0x10, 0},
11891         {0x90, 0x55, 0},
11892         {0x91, 0x3f, 1},
11893         {0x92, 0x36, 1},
11894         {0x93, 0, 0},
11895         {0x94, 0, 0},
11896         {0x95, 0, 0},
11897         {0x96, 0x87, 0},
11898         {0x97, 0x11, 0},
11899         {0x98, 0, 0},
11900         {0x99, 0x33, 0},
11901         {0x9A, 0x88, 0},
11902         {0xA1, 0x20, 1},
11903         {0xA2, 0x3f, 0},
11904         {0xA3, 0x44, 0},
11905         {0xA4, 0x8c, 0},
11906         {0xA5, 0x6c, 0},
11907         {0xA6, 0x22, 0},
11908         {0xA7, 0xbe, 0},
11909         {0xA8, 0x55, 0},
11910         {0xAA, 0xc, 0},
11911         {0xAB, 0xaa, 0},
11912         {0xAC, 0x2, 0},
11913         {0xAD, 0, 0},
11914         {0xAE, 0x10, 0},
11915         {0xAF, 0x1, 0},
11916         {0xB0, 0, 0},
11917         {0xB1, 0, 0},
11918         {0xB2, 0x80, 0},
11919         {0xB3, 0x60, 0},
11920         {0xB4, 0x44, 0},
11921         {0xB5, 0x55, 0},
11922         {0xB6, 0x1, 0},
11923         {0xB7, 0x55, 0},
11924         {0xB8, 0x1, 0},
11925         {0xB9, 0x5, 0},
11926         {0xBA, 0x55, 0},
11927         {0xBB, 0x55, 0},
11928         {0xC3, 0, 0},
11929         {0xC4, 0, 0},
11930         {0xC5, 0, 0},
11931         {0xC6, 0, 0},
11932         {0xC7, 0, 0},
11933         {0xC8, 0, 0},
11934         {0xC9, 0, 0},
11935         {0xCA, 0, 0},
11936         {0xCB, 0, 0},
11937         {0xCD, 0, 0},
11938         {0xCE, 0x5e, 0},
11939         {0xCF, 0xc, 0},
11940         {0xD0, 0xc, 0},
11941         {0xD1, 0xc, 0},
11942         {0xD2, 0, 0},
11943         {0xD3, 0x2b, 0},
11944         {0xD4, 0xc, 0},
11945         {0xD5, 0, 0},
11946         {0xD6, 0x70, 1},
11947         {0xDB, 0x7, 0},
11948         {0xDC, 0, 0},
11949         {0xDD, 0, 0},
11950         {0xDE, 0x88, 1},
11951         {0xDF, 0, 0},
11952         {0xE0, 0x1f, 0},
11953         {0xE1, 0x20, 1},
11954         {0xE2, 0x1, 0},
11955         {0xE3, 0x30, 0},
11956         {0xE4, 0x70, 0},
11957         {0xE5, 0, 0},
11958         {0xE6, 0, 0},
11959         {0xE7, 0x33, 0},
11960         {0xE8, 0xf, 1},
11961         {0xE9, 0xf, 1},
11962         {0xEA, 0, 0},
11963         {0xEB, 0x11, 0},
11964         {0x105, 0x3c, 0},
11965         {0x106, 0x1, 1},
11966         {0x107, 0xa, 0},
11967         {0x10A, 0, 0},
11968         {0x10B, 0x40, 0},
11969         {0x10C, 0x40, 0},
11970         {0x10D, 0x88, 0},
11971         {0x10E, 0x10, 0},
11972         {0x10F, 0xf0, 0},
11973         {0x110, 0x10, 0},
11974         {0x111, 0xf0, 0},
11975         {0x114, 0x10, 0},
11976         {0x115, 0x55, 0},
11977         {0x116, 0x3f, 1},
11978         {0x117, 0x36, 1},
11979         {0x118, 0, 0},
11980         {0x119, 0, 0},
11981         {0x11A, 0, 0},
11982         {0x11B, 0x87, 0},
11983         {0x11C, 0x11, 0},
11984         {0x11D, 0, 0},
11985         {0x11E, 0x33, 0},
11986         {0x11F, 0x88, 0},
11987         {0x126, 0x20, 1},
11988         {0x127, 0x3f, 0},
11989         {0x128, 0x44, 0},
11990         {0x129, 0x8c, 0},
11991         {0x12A, 0x6c, 0},
11992         {0x12B, 0x22, 0},
11993         {0x12C, 0xbe, 0},
11994         {0x12D, 0x55, 0},
11995         {0x12F, 0xc, 0},
11996         {0x130, 0xaa, 0},
11997         {0x131, 0x2, 0},
11998         {0x132, 0, 0},
11999         {0x133, 0x10, 0},
12000         {0x134, 0x1, 0},
12001         {0x135, 0, 0},
12002         {0x136, 0, 0},
12003         {0x137, 0x80, 0},
12004         {0x138, 0x60, 0},
12005         {0x139, 0x44, 0},
12006         {0x13A, 0x55, 0},
12007         {0x13B, 0x1, 0},
12008         {0x13C, 0x55, 0},
12009         {0x13D, 0x1, 0},
12010         {0x13E, 0x5, 0},
12011         {0x13F, 0x55, 0},
12012         {0x140, 0x55, 0},
12013         {0x148, 0, 0},
12014         {0x149, 0, 0},
12015         {0x14A, 0, 0},
12016         {0x14B, 0, 0},
12017         {0x14C, 0, 0},
12018         {0x14D, 0, 0},
12019         {0x14E, 0, 0},
12020         {0x14F, 0, 0},
12021         {0x150, 0, 0},
12022         {0x154, 0xc, 0},
12023         {0x155, 0xc, 0},
12024         {0x156, 0xc, 0},
12025         {0x157, 0, 0},
12026         {0x158, 0x2b, 0},
12027         {0x159, 0x84, 0},
12028         {0x15A, 0x15, 0},
12029         {0x15B, 0xf, 0},
12030         {0x15C, 0, 0},
12031         {0x15D, 0, 0},
12032         {0x15E, 0, 1},
12033         {0x15F, 0, 1},
12034         {0x160, 0, 1},
12035         {0x161, 0, 1},
12036         {0x162, 0, 1},
12037         {0x163, 0, 1},
12038         {0x164, 0, 0},
12039         {0x165, 0, 0},
12040         {0x166, 0, 0},
12041         {0x167, 0, 0},
12042         {0x168, 0, 0},
12043         {0x169, 0, 0},
12044         {0x16A, 0, 1},
12045         {0x16B, 0, 1},
12046         {0x16C, 0, 1},
12047         {0x16D, 0, 0},
12048         {0x170, 0, 0},
12049         {0x171, 0x77, 0},
12050         {0x172, 0x77, 0},
12051         {0x173, 0x77, 0},
12052         {0x174, 0x77, 0},
12053         {0x175, 0, 0},
12054         {0x176, 0x3, 0},
12055         {0x177, 0x37, 0},
12056         {0x178, 0x3, 0},
12057         {0x179, 0, 0},
12058         {0x17B, 0x21, 0},
12059         {0x17C, 0, 0},
12060         {0x17D, 0xaa, 0},
12061         {0x17E, 0, 0},
12062         {0x190, 0, 0},
12063         {0x191, 0x77, 0},
12064         {0x192, 0x77, 0},
12065         {0x193, 0x77, 0},
12066         {0x194, 0x77, 0},
12067         {0x195, 0, 0},
12068         {0x196, 0x3, 0},
12069         {0x197, 0x37, 0},
12070         {0x198, 0x3, 0},
12071         {0x199, 0, 0},
12072         {0x19B, 0x21, 0},
12073         {0x19C, 0, 0},
12074         {0x19D, 0xaa, 0},
12075         {0x19E, 0, 0},
12076         {0x1A1, 0x2, 0},
12077         {0x1A2, 0xf, 0},
12078         {0x1A3, 0xf, 0},
12079         {0x1A4, 0, 1},
12080         {0x1A5, 0, 1},
12081         {0x1A6, 0, 1},
12082         {0x1A7, 0x2, 0},
12083         {0x1A8, 0xf, 0},
12084         {0x1A9, 0xf, 0},
12085         {0x1AA, 0, 1},
12086         {0x1AB, 0, 1},
12087         {0x1AC, 0, 1},
12088         {0x1AD, 0x84, 0},
12089         {0x1AE, 0x60, 0},
12090         {0x1AF, 0x47, 0},
12091         {0x1B0, 0x47, 0},
12092         {0x1B1, 0, 0},
12093         {0x1B2, 0, 0},
12094         {0x1B3, 0, 0},
12095         {0x1B4, 0, 0},
12096         {0x1B5, 0, 0},
12097         {0x1B6, 0, 0},
12098         {0x1B7, 0xc, 1},
12099         {0x1B8, 0, 0},
12100         {0x1B9, 0, 0},
12101         {0x1BA, 0, 0},
12102         {0x1BB, 0, 0},
12103         {0x1BC, 0, 0},
12104         {0x1BD, 0, 0},
12105         {0x1BE, 0, 0},
12106         {0x1BF, 0, 0},
12107         {0x1C0, 0, 0},
12108         {0x1C1, 0x1, 1},
12109         {0x1C2, 0x80, 1},
12110         {0x1C3, 0, 0},
12111         {0x1C4, 0, 0},
12112         {0x1C5, 0, 0},
12113         {0x1C6, 0, 0},
12114         {0x1C7, 0, 0},
12115         {0x1C8, 0, 0},
12116         {0x1C9, 0, 0},
12117         {0x1CA, 0, 0},
12118         {0xFFFF, 0, 0}
12119 };
12120
12121 radio_20xx_regs_t regs_2057_rev5v1[] = {
12122         {0x00, 0x15, 1},
12123         {0x01, 0x57, 1},
12124         {0x02, 0x20, 1},
12125         {0x03, 0x1f, 0},
12126         {0x04, 0x4, 0},
12127         {0x05, 0x2, 0},
12128         {0x06, 0x1, 0},
12129         {0x07, 0x1, 0},
12130         {0x08, 0x1, 0},
12131         {0x09, 0x69, 0},
12132         {0x0A, 0x66, 0},
12133         {0x0B, 0x6, 0},
12134         {0x0C, 0x18, 0},
12135         {0x0D, 0x3, 0},
12136         {0x0E, 0x20, 0},
12137         {0x0F, 0x20, 0},
12138         {0x10, 0, 0},
12139         {0x11, 0x7c, 0},
12140         {0x12, 0x42, 0},
12141         {0x13, 0xbd, 0},
12142         {0x14, 0x7, 0},
12143         {0x15, 0x87, 0},
12144         {0x16, 0x8, 0},
12145         {0x17, 0x17, 0},
12146         {0x18, 0x7, 0},
12147         {0x19, 0, 0},
12148         {0x1A, 0x2, 0},
12149         {0x1B, 0x13, 0},
12150         {0x1C, 0x3e, 0},
12151         {0x1D, 0x3e, 0},
12152         {0x1E, 0x96, 0},
12153         {0x1F, 0x4, 0},
12154         {0x20, 0, 0},
12155         {0x21, 0, 0},
12156         {0x22, 0x17, 0},
12157         {0x23, 0x6, 1},
12158         {0x24, 0x1, 0},
12159         {0x25, 0x6, 0},
12160         {0x26, 0x4, 0},
12161         {0x27, 0xd, 0},
12162         {0x28, 0xd, 0},
12163         {0x29, 0x30, 0},
12164         {0x2A, 0x32, 0},
12165         {0x2B, 0x8, 0},
12166         {0x2C, 0x1c, 0},
12167         {0x2D, 0x2, 0},
12168         {0x2E, 0x4, 0},
12169         {0x2F, 0x7f, 0},
12170         {0x30, 0x27, 0},
12171         {0x31, 0, 1},
12172         {0x32, 0, 1},
12173         {0x33, 0, 1},
12174         {0x34, 0, 0},
12175         {0x35, 0x20, 0},
12176         {0x36, 0x18, 0},
12177         {0x37, 0x7, 0},
12178         {0x38, 0x66, 0},
12179         {0x39, 0x66, 0},
12180         {0x3C, 0xff, 0},
12181         {0x3D, 0xff, 0},
12182         {0x40, 0x16, 0},
12183         {0x41, 0x7, 0},
12184         {0x45, 0x3, 0},
12185         {0x46, 0x1, 0},
12186         {0x47, 0x7, 0},
12187         {0x4B, 0x66, 0},
12188         {0x4C, 0x66, 0},
12189         {0x4D, 0, 0},
12190         {0x4E, 0x4, 0},
12191         {0x4F, 0xc, 0},
12192         {0x50, 0, 0},
12193         {0x51, 0x70, 1},
12194         {0x56, 0x7, 0},
12195         {0x57, 0, 0},
12196         {0x58, 0, 0},
12197         {0x59, 0x88, 1},
12198         {0x5A, 0, 0},
12199         {0x5B, 0x1f, 0},
12200         {0x5C, 0x20, 1},
12201         {0x5D, 0x1, 0},
12202         {0x5E, 0x30, 0},
12203         {0x5F, 0x70, 0},
12204         {0x60, 0, 0},
12205         {0x61, 0, 0},
12206         {0x62, 0x33, 1},
12207         {0x63, 0xf, 1},
12208         {0x64, 0xf, 1},
12209         {0x65, 0, 0},
12210         {0x66, 0x11, 0},
12211         {0x80, 0x3c, 0},
12212         {0x81, 0x1, 1},
12213         {0x82, 0xa, 0},
12214         {0x85, 0, 0},
12215         {0x86, 0x40, 0},
12216         {0x87, 0x40, 0},
12217         {0x88, 0x88, 0},
12218         {0x89, 0x10, 0},
12219         {0x8A, 0xf0, 0},
12220         {0x8B, 0x10, 0},
12221         {0x8C, 0xf0, 0},
12222         {0x8F, 0x10, 0},
12223         {0x90, 0x55, 0},
12224         {0x91, 0x3f, 1},
12225         {0x92, 0x36, 1},
12226         {0x93, 0, 0},
12227         {0x94, 0, 0},
12228         {0x95, 0, 0},
12229         {0x96, 0x87, 0},
12230         {0x97, 0x11, 0},
12231         {0x98, 0, 0},
12232         {0x99, 0x33, 0},
12233         {0x9A, 0x88, 0},
12234         {0xA1, 0x20, 1},
12235         {0xA2, 0x3f, 0},
12236         {0xA3, 0x44, 0},
12237         {0xA4, 0x8c, 0},
12238         {0xA5, 0x6c, 0},
12239         {0xA6, 0x22, 0},
12240         {0xA7, 0xbe, 0},
12241         {0xA8, 0x55, 0},
12242         {0xAA, 0xc, 0},
12243         {0xAB, 0xaa, 0},
12244         {0xAC, 0x2, 0},
12245         {0xAD, 0, 0},
12246         {0xAE, 0x10, 0},
12247         {0xAF, 0x1, 0},
12248         {0xB0, 0, 0},
12249         {0xB1, 0, 0},
12250         {0xB2, 0x80, 0},
12251         {0xB3, 0x60, 0},
12252         {0xB4, 0x44, 0},
12253         {0xB5, 0x55, 0},
12254         {0xB6, 0x1, 0},
12255         {0xB7, 0x55, 0},
12256         {0xB8, 0x1, 0},
12257         {0xB9, 0x5, 0},
12258         {0xBA, 0x55, 0},
12259         {0xBB, 0x55, 0},
12260         {0xC3, 0, 0},
12261         {0xC4, 0, 0},
12262         {0xC5, 0, 0},
12263         {0xC6, 0, 0},
12264         {0xC7, 0, 0},
12265         {0xC8, 0, 0},
12266         {0xC9, 0x1, 1},
12267         {0xCA, 0, 0},
12268         {0xCB, 0, 0},
12269         {0xCD, 0, 0},
12270         {0xCE, 0x5e, 0},
12271         {0xCF, 0xc, 0},
12272         {0xD0, 0xc, 0},
12273         {0xD1, 0xc, 0},
12274         {0xD2, 0, 0},
12275         {0xD3, 0x2b, 0},
12276         {0xD4, 0xc, 0},
12277         {0xD5, 0, 0},
12278         {0xD6, 0x70, 1},
12279         {0xDB, 0x7, 0},
12280         {0xDC, 0, 0},
12281         {0xDD, 0, 0},
12282         {0xDE, 0x88, 1},
12283         {0xDF, 0, 0},
12284         {0xE0, 0x1f, 0},
12285         {0xE1, 0x20, 1},
12286         {0xE2, 0x1, 0},
12287         {0xE3, 0x30, 0},
12288         {0xE4, 0x70, 0},
12289         {0xE5, 0, 0},
12290         {0xE6, 0, 0},
12291         {0xE7, 0x33, 0},
12292         {0xE8, 0xf, 1},
12293         {0xE9, 0xf, 1},
12294         {0xEA, 0, 0},
12295         {0xEB, 0x11, 0},
12296         {0x105, 0x3c, 0},
12297         {0x106, 0x1, 1},
12298         {0x107, 0xa, 0},
12299         {0x10A, 0, 0},
12300         {0x10B, 0x40, 0},
12301         {0x10C, 0x40, 0},
12302         {0x10D, 0x88, 0},
12303         {0x10E, 0x10, 0},
12304         {0x10F, 0xf0, 0},
12305         {0x110, 0x10, 0},
12306         {0x111, 0xf0, 0},
12307         {0x114, 0x10, 0},
12308         {0x115, 0x55, 0},
12309         {0x116, 0x3f, 1},
12310         {0x117, 0x36, 1},
12311         {0x118, 0, 0},
12312         {0x119, 0, 0},
12313         {0x11A, 0, 0},
12314         {0x11B, 0x87, 0},
12315         {0x11C, 0x11, 0},
12316         {0x11D, 0, 0},
12317         {0x11E, 0x33, 0},
12318         {0x11F, 0x88, 0},
12319         {0x126, 0x20, 1},
12320         {0x127, 0x3f, 0},
12321         {0x128, 0x44, 0},
12322         {0x129, 0x8c, 0},
12323         {0x12A, 0x6c, 0},
12324         {0x12B, 0x22, 0},
12325         {0x12C, 0xbe, 0},
12326         {0x12D, 0x55, 0},
12327         {0x12F, 0xc, 0},
12328         {0x130, 0xaa, 0},
12329         {0x131, 0x2, 0},
12330         {0x132, 0, 0},
12331         {0x133, 0x10, 0},
12332         {0x134, 0x1, 0},
12333         {0x135, 0, 0},
12334         {0x136, 0, 0},
12335         {0x137, 0x80, 0},
12336         {0x138, 0x60, 0},
12337         {0x139, 0x44, 0},
12338         {0x13A, 0x55, 0},
12339         {0x13B, 0x1, 0},
12340         {0x13C, 0x55, 0},
12341         {0x13D, 0x1, 0},
12342         {0x13E, 0x5, 0},
12343         {0x13F, 0x55, 0},
12344         {0x140, 0x55, 0},
12345         {0x148, 0, 0},
12346         {0x149, 0, 0},
12347         {0x14A, 0, 0},
12348         {0x14B, 0, 0},
12349         {0x14C, 0, 0},
12350         {0x14D, 0, 0},
12351         {0x14E, 0x1, 1},
12352         {0x14F, 0, 0},
12353         {0x150, 0, 0},
12354         {0x154, 0xc, 0},
12355         {0x155, 0xc, 0},
12356         {0x156, 0xc, 0},
12357         {0x157, 0, 0},
12358         {0x158, 0x2b, 0},
12359         {0x159, 0x84, 0},
12360         {0x15A, 0x15, 0},
12361         {0x15B, 0xf, 0},
12362         {0x15C, 0, 0},
12363         {0x15D, 0, 0},
12364         {0x15E, 0, 1},
12365         {0x15F, 0, 1},
12366         {0x160, 0, 1},
12367         {0x161, 0, 1},
12368         {0x162, 0, 1},
12369         {0x163, 0, 1},
12370         {0x164, 0, 0},
12371         {0x165, 0, 0},
12372         {0x166, 0, 0},
12373         {0x167, 0, 0},
12374         {0x168, 0, 0},
12375         {0x169, 0, 0},
12376         {0x16A, 0, 1},
12377         {0x16B, 0, 1},
12378         {0x16C, 0, 1},
12379         {0x16D, 0, 0},
12380         {0x170, 0, 0},
12381         {0x171, 0x77, 0},
12382         {0x172, 0x77, 0},
12383         {0x173, 0x77, 0},
12384         {0x174, 0x77, 0},
12385         {0x175, 0, 0},
12386         {0x176, 0x3, 0},
12387         {0x177, 0x37, 0},
12388         {0x178, 0x3, 0},
12389         {0x179, 0, 0},
12390         {0x17B, 0x21, 0},
12391         {0x17C, 0, 0},
12392         {0x17D, 0xaa, 0},
12393         {0x17E, 0, 0},
12394         {0x190, 0, 0},
12395         {0x191, 0x77, 0},
12396         {0x192, 0x77, 0},
12397         {0x193, 0x77, 0},
12398         {0x194, 0x77, 0},
12399         {0x195, 0, 0},
12400         {0x196, 0x3, 0},
12401         {0x197, 0x37, 0},
12402         {0x198, 0x3, 0},
12403         {0x199, 0, 0},
12404         {0x19B, 0x21, 0},
12405         {0x19C, 0, 0},
12406         {0x19D, 0xaa, 0},
12407         {0x19E, 0, 0},
12408         {0x1A1, 0x2, 0},
12409         {0x1A2, 0xf, 0},
12410         {0x1A3, 0xf, 0},
12411         {0x1A4, 0, 1},
12412         {0x1A5, 0, 1},
12413         {0x1A6, 0, 1},
12414         {0x1A7, 0x2, 0},
12415         {0x1A8, 0xf, 0},
12416         {0x1A9, 0xf, 0},
12417         {0x1AA, 0, 1},
12418         {0x1AB, 0, 1},
12419         {0x1AC, 0, 1},
12420         {0x1AD, 0x84, 0},
12421         {0x1AE, 0x60, 0},
12422         {0x1AF, 0x47, 0},
12423         {0x1B0, 0x47, 0},
12424         {0x1B1, 0, 0},
12425         {0x1B2, 0, 0},
12426         {0x1B3, 0, 0},
12427         {0x1B4, 0, 0},
12428         {0x1B5, 0, 0},
12429         {0x1B6, 0, 0},
12430         {0x1B7, 0xc, 1},
12431         {0x1B8, 0, 0},
12432         {0x1B9, 0, 0},
12433         {0x1BA, 0, 0},
12434         {0x1BB, 0, 0},
12435         {0x1BC, 0, 0},
12436         {0x1BD, 0, 0},
12437         {0x1BE, 0, 0},
12438         {0x1BF, 0, 0},
12439         {0x1C0, 0, 0},
12440         {0x1C1, 0x1, 1},
12441         {0x1C2, 0x80, 1},
12442         {0x1C3, 0, 0},
12443         {0x1C4, 0, 0},
12444         {0x1C5, 0, 0},
12445         {0x1C6, 0, 0},
12446         {0x1C7, 0, 0},
12447         {0x1C8, 0, 0},
12448         {0x1C9, 0, 0},
12449         {0x1CA, 0, 0},
12450         {0xFFFF, 0, 0}
12451 };
12452
12453 radio_20xx_regs_t regs_2057_rev7[] = {
12454         {0x00, 0, 1},
12455         {0x01, 0x57, 1},
12456         {0x02, 0x20, 1},
12457         {0x03, 0x1f, 0},
12458         {0x04, 0x4, 0},
12459         {0x05, 0x2, 0},
12460         {0x06, 0x1, 0},
12461         {0x07, 0x1, 0},
12462         {0x08, 0x1, 0},
12463         {0x09, 0x69, 0},
12464         {0x0A, 0x66, 0},
12465         {0x0B, 0x6, 0},
12466         {0x0C, 0x18, 0},
12467         {0x0D, 0x3, 0},
12468         {0x0E, 0x20, 0},
12469         {0x0F, 0x20, 0},
12470         {0x10, 0, 0},
12471         {0x11, 0x7c, 0},
12472         {0x12, 0x42, 0},
12473         {0x13, 0xbd, 0},
12474         {0x14, 0x7, 0},
12475         {0x15, 0x87, 0},
12476         {0x16, 0x8, 0},
12477         {0x17, 0x17, 0},
12478         {0x18, 0x7, 0},
12479         {0x19, 0, 0},
12480         {0x1A, 0x2, 0},
12481         {0x1B, 0x13, 0},
12482         {0x1C, 0x3e, 0},
12483         {0x1D, 0x3e, 0},
12484         {0x1E, 0x96, 0},
12485         {0x1F, 0x4, 0},
12486         {0x20, 0, 0},
12487         {0x21, 0, 0},
12488         {0x22, 0x17, 0},
12489         {0x23, 0x6, 0},
12490         {0x24, 0x1, 0},
12491         {0x25, 0x6, 0},
12492         {0x26, 0x4, 0},
12493         {0x27, 0xd, 0},
12494         {0x28, 0xd, 0},
12495         {0x29, 0x30, 0},
12496         {0x2A, 0x32, 0},
12497         {0x2B, 0x8, 0},
12498         {0x2C, 0x1c, 0},
12499         {0x2D, 0x2, 0},
12500         {0x2E, 0x4, 0},
12501         {0x2F, 0x7f, 0},
12502         {0x30, 0x27, 0},
12503         {0x31, 0, 1},
12504         {0x32, 0, 1},
12505         {0x33, 0, 1},
12506         {0x34, 0, 0},
12507         {0x35, 0x20, 0},
12508         {0x36, 0x18, 0},
12509         {0x37, 0x7, 0},
12510         {0x38, 0x66, 0},
12511         {0x39, 0x66, 0},
12512         {0x3A, 0x66, 0},
12513         {0x3B, 0x66, 0},
12514         {0x3C, 0xff, 0},
12515         {0x3D, 0xff, 0},
12516         {0x3E, 0xff, 0},
12517         {0x3F, 0xff, 0},
12518         {0x40, 0x16, 0},
12519         {0x41, 0x7, 0},
12520         {0x42, 0x19, 0},
12521         {0x43, 0x7, 0},
12522         {0x44, 0x6, 0},
12523         {0x45, 0x3, 0},
12524         {0x46, 0x1, 0},
12525         {0x47, 0x7, 0},
12526         {0x48, 0x33, 0},
12527         {0x49, 0x5, 0},
12528         {0x4A, 0x77, 0},
12529         {0x4B, 0x66, 0},
12530         {0x4C, 0x66, 0},
12531         {0x4D, 0, 0},
12532         {0x4E, 0x4, 0},
12533         {0x4F, 0xc, 0},
12534         {0x50, 0, 0},
12535         {0x51, 0x70, 1},
12536         {0x56, 0x7, 0},
12537         {0x57, 0, 0},
12538         {0x58, 0, 0},
12539         {0x59, 0x88, 1},
12540         {0x5A, 0, 0},
12541         {0x5B, 0x1f, 0},
12542         {0x5C, 0x20, 1},
12543         {0x5D, 0x1, 0},
12544         {0x5E, 0x30, 0},
12545         {0x5F, 0x70, 0},
12546         {0x60, 0, 0},
12547         {0x61, 0, 0},
12548         {0x62, 0x33, 1},
12549         {0x63, 0xf, 1},
12550         {0x64, 0x13, 1},
12551         {0x65, 0, 0},
12552         {0x66, 0xee, 1},
12553         {0x69, 0, 0},
12554         {0x6A, 0x7e, 0},
12555         {0x6B, 0x3f, 0},
12556         {0x6C, 0x7f, 0},
12557         {0x6D, 0x78, 0},
12558         {0x6E, 0x58, 1},
12559         {0x6F, 0x88, 0},
12560         {0x70, 0x8, 0},
12561         {0x71, 0xf, 0},
12562         {0x72, 0xbc, 0},
12563         {0x73, 0x8, 0},
12564         {0x74, 0x60, 0},
12565         {0x75, 0x13, 1},
12566         {0x76, 0x70, 0},
12567         {0x77, 0, 0},
12568         {0x78, 0, 0},
12569         {0x79, 0, 0},
12570         {0x7A, 0x33, 0},
12571         {0x7B, 0x13, 1},
12572         {0x7C, 0x14, 1},
12573         {0x7D, 0xee, 1},
12574         {0x80, 0x3c, 0},
12575         {0x81, 0x1, 1},
12576         {0x82, 0xa, 0},
12577         {0x83, 0x9d, 0},
12578         {0x84, 0xa, 0},
12579         {0x85, 0, 0},
12580         {0x86, 0x40, 0},
12581         {0x87, 0x40, 0},
12582         {0x88, 0x88, 0},
12583         {0x89, 0x10, 0},
12584         {0x8A, 0xf0, 0},
12585         {0x8B, 0x10, 0},
12586         {0x8C, 0xf0, 0},
12587         {0x8D, 0, 0},
12588         {0x8E, 0, 0},
12589         {0x8F, 0x10, 0},
12590         {0x90, 0x55, 0},
12591         {0x91, 0x3f, 1},
12592         {0x92, 0x36, 1},
12593         {0x93, 0, 0},
12594         {0x94, 0, 0},
12595         {0x95, 0, 0},
12596         {0x96, 0x87, 0},
12597         {0x97, 0x11, 0},
12598         {0x98, 0, 0},
12599         {0x99, 0x33, 0},
12600         {0x9A, 0x88, 0},
12601         {0x9B, 0, 0},
12602         {0x9C, 0x87, 0},
12603         {0x9D, 0x11, 0},
12604         {0x9E, 0, 0},
12605         {0x9F, 0x33, 0},
12606         {0xA0, 0x88, 0},
12607         {0xA1, 0x20, 1},
12608         {0xA2, 0x3f, 0},
12609         {0xA3, 0x44, 0},
12610         {0xA4, 0x8c, 0},
12611         {0xA5, 0x6c, 0},
12612         {0xA6, 0x22, 0},
12613         {0xA7, 0xbe, 0},
12614         {0xA8, 0x55, 0},
12615         {0xAA, 0xc, 0},
12616         {0xAB, 0xaa, 0},
12617         {0xAC, 0x2, 0},
12618         {0xAD, 0, 0},
12619         {0xAE, 0x10, 0},
12620         {0xAF, 0x1, 0},
12621         {0xB0, 0, 0},
12622         {0xB1, 0, 0},
12623         {0xB2, 0x80, 0},
12624         {0xB3, 0x60, 0},
12625         {0xB4, 0x44, 0},
12626         {0xB5, 0x55, 0},
12627         {0xB6, 0x1, 0},
12628         {0xB7, 0x55, 0},
12629         {0xB8, 0x1, 0},
12630         {0xB9, 0x5, 0},
12631         {0xBA, 0x55, 0},
12632         {0xBB, 0x55, 0},
12633         {0xC1, 0, 0},
12634         {0xC2, 0, 0},
12635         {0xC3, 0, 0},
12636         {0xC4, 0, 0},
12637         {0xC5, 0, 0},
12638         {0xC6, 0, 0},
12639         {0xC7, 0, 0},
12640         {0xC8, 0, 0},
12641         {0xC9, 0, 0},
12642         {0xCA, 0, 0},
12643         {0xCB, 0, 0},
12644         {0xCC, 0, 0},
12645         {0xCD, 0, 0},
12646         {0xCE, 0x5e, 0},
12647         {0xCF, 0xc, 0},
12648         {0xD0, 0xc, 0},
12649         {0xD1, 0xc, 0},
12650         {0xD2, 0, 0},
12651         {0xD3, 0x2b, 0},
12652         {0xD4, 0xc, 0},
12653         {0xD5, 0, 0},
12654         {0xD6, 0x70, 1},
12655         {0xDB, 0x7, 0},
12656         {0xDC, 0, 0},
12657         {0xDD, 0, 0},
12658         {0xDE, 0x88, 1},
12659         {0xDF, 0, 0},
12660         {0xE0, 0x1f, 0},
12661         {0xE1, 0x20, 1},
12662         {0xE2, 0x1, 0},
12663         {0xE3, 0x30, 0},
12664         {0xE4, 0x70, 0},
12665         {0xE5, 0, 0},
12666         {0xE6, 0, 0},
12667         {0xE7, 0x33, 0},
12668         {0xE8, 0xf, 1},
12669         {0xE9, 0x13, 1},
12670         {0xEA, 0, 0},
12671         {0xEB, 0xee, 1},
12672         {0xEE, 0, 0},
12673         {0xEF, 0x7e, 0},
12674         {0xF0, 0x3f, 0},
12675         {0xF1, 0x7f, 0},
12676         {0xF2, 0x78, 0},
12677         {0xF3, 0x58, 1},
12678         {0xF4, 0x88, 0},
12679         {0xF5, 0x8, 0},
12680         {0xF6, 0xf, 0},
12681         {0xF7, 0xbc, 0},
12682         {0xF8, 0x8, 0},
12683         {0xF9, 0x60, 0},
12684         {0xFA, 0x13, 1},
12685         {0xFB, 0x70, 0},
12686         {0xFC, 0, 0},
12687         {0xFD, 0, 0},
12688         {0xFE, 0, 0},
12689         {0xFF, 0x33, 0},
12690         {0x100, 0x13, 1},
12691         {0x101, 0x14, 1},
12692         {0x102, 0xee, 1},
12693         {0x105, 0x3c, 0},
12694         {0x106, 0x1, 1},
12695         {0x107, 0xa, 0},
12696         {0x108, 0x9d, 0},
12697         {0x109, 0xa, 0},
12698         {0x10A, 0, 0},
12699         {0x10B, 0x40, 0},
12700         {0x10C, 0x40, 0},
12701         {0x10D, 0x88, 0},
12702         {0x10E, 0x10, 0},
12703         {0x10F, 0xf0, 0},
12704         {0x110, 0x10, 0},
12705         {0x111, 0xf0, 0},
12706         {0x112, 0, 0},
12707         {0x113, 0, 0},
12708         {0x114, 0x10, 0},
12709         {0x115, 0x55, 0},
12710         {0x116, 0x3f, 1},
12711         {0x117, 0x36, 1},
12712         {0x118, 0, 0},
12713         {0x119, 0, 0},
12714         {0x11A, 0, 0},
12715         {0x11B, 0x87, 0},
12716         {0x11C, 0x11, 0},
12717         {0x11D, 0, 0},
12718         {0x11E, 0x33, 0},
12719         {0x11F, 0x88, 0},
12720         {0x120, 0, 0},
12721         {0x121, 0x87, 0},
12722         {0x122, 0x11, 0},
12723         {0x123, 0, 0},
12724         {0x124, 0x33, 0},
12725         {0x125, 0x88, 0},
12726         {0x126, 0x20, 1},
12727         {0x127, 0x3f, 0},
12728         {0x128, 0x44, 0},
12729         {0x129, 0x8c, 0},
12730         {0x12A, 0x6c, 0},
12731         {0x12B, 0x22, 0},
12732         {0x12C, 0xbe, 0},
12733         {0x12D, 0x55, 0},
12734         {0x12F, 0xc, 0},
12735         {0x130, 0xaa, 0},
12736         {0x131, 0x2, 0},
12737         {0x132, 0, 0},
12738         {0x133, 0x10, 0},
12739         {0x134, 0x1, 0},
12740         {0x135, 0, 0},
12741         {0x136, 0, 0},
12742         {0x137, 0x80, 0},
12743         {0x138, 0x60, 0},
12744         {0x139, 0x44, 0},
12745         {0x13A, 0x55, 0},
12746         {0x13B, 0x1, 0},
12747         {0x13C, 0x55, 0},
12748         {0x13D, 0x1, 0},
12749         {0x13E, 0x5, 0},
12750         {0x13F, 0x55, 0},
12751         {0x140, 0x55, 0},
12752         {0x146, 0, 0},
12753         {0x147, 0, 0},
12754         {0x148, 0, 0},
12755         {0x149, 0, 0},
12756         {0x14A, 0, 0},
12757         {0x14B, 0, 0},
12758         {0x14C, 0, 0},
12759         {0x14D, 0, 0},
12760         {0x14E, 0, 0},
12761         {0x14F, 0, 0},
12762         {0x150, 0, 0},
12763         {0x151, 0, 0},
12764         {0x154, 0xc, 0},
12765         {0x155, 0xc, 0},
12766         {0x156, 0xc, 0},
12767         {0x157, 0, 0},
12768         {0x158, 0x2b, 0},
12769         {0x159, 0x84, 0},
12770         {0x15A, 0x15, 0},
12771         {0x15B, 0xf, 0},
12772         {0x15C, 0, 0},
12773         {0x15D, 0, 0},
12774         {0x15E, 0, 1},
12775         {0x15F, 0, 1},
12776         {0x160, 0, 1},
12777         {0x161, 0, 1},
12778         {0x162, 0, 1},
12779         {0x163, 0, 1},
12780         {0x164, 0, 0},
12781         {0x165, 0, 0},
12782         {0x166, 0, 0},
12783         {0x167, 0, 0},
12784         {0x168, 0, 0},
12785         {0x169, 0, 0},
12786         {0x16A, 0, 1},
12787         {0x16B, 0, 1},
12788         {0x16C, 0, 1},
12789         {0x16D, 0, 0},
12790         {0x170, 0, 0},
12791         {0x171, 0x77, 0},
12792         {0x172, 0x77, 0},
12793         {0x173, 0x77, 0},
12794         {0x174, 0x77, 0},
12795         {0x175, 0, 0},
12796         {0x176, 0x3, 0},
12797         {0x177, 0x37, 0},
12798         {0x178, 0x3, 0},
12799         {0x179, 0, 0},
12800         {0x17A, 0x21, 0},
12801         {0x17B, 0x21, 0},
12802         {0x17C, 0, 0},
12803         {0x17D, 0xaa, 0},
12804         {0x17E, 0, 0},
12805         {0x17F, 0xaa, 0},
12806         {0x180, 0, 0},
12807         {0x190, 0, 0},
12808         {0x191, 0x77, 0},
12809         {0x192, 0x77, 0},
12810         {0x193, 0x77, 0},
12811         {0x194, 0x77, 0},
12812         {0x195, 0, 0},
12813         {0x196, 0x3, 0},
12814         {0x197, 0x37, 0},
12815         {0x198, 0x3, 0},
12816         {0x199, 0, 0},
12817         {0x19A, 0x21, 0},
12818         {0x19B, 0x21, 0},
12819         {0x19C, 0, 0},
12820         {0x19D, 0xaa, 0},
12821         {0x19E, 0, 0},
12822         {0x19F, 0xaa, 0},
12823         {0x1A0, 0, 0},
12824         {0x1A1, 0x2, 0},
12825         {0x1A2, 0xf, 0},
12826         {0x1A3, 0xf, 0},
12827         {0x1A4, 0, 1},
12828         {0x1A5, 0, 1},
12829         {0x1A6, 0, 1},
12830         {0x1A7, 0x2, 0},
12831         {0x1A8, 0xf, 0},
12832         {0x1A9, 0xf, 0},
12833         {0x1AA, 0, 1},
12834         {0x1AB, 0, 1},
12835         {0x1AC, 0, 1},
12836         {0x1AD, 0x84, 0},
12837         {0x1AE, 0x60, 0},
12838         {0x1AF, 0x47, 0},
12839         {0x1B0, 0x47, 0},
12840         {0x1B1, 0, 0},
12841         {0x1B2, 0, 0},
12842         {0x1B3, 0, 0},
12843         {0x1B4, 0, 0},
12844         {0x1B5, 0, 0},
12845         {0x1B6, 0, 0},
12846         {0x1B7, 0x5, 1},
12847         {0x1B8, 0, 0},
12848         {0x1B9, 0, 0},
12849         {0x1BA, 0, 0},
12850         {0x1BB, 0, 0},
12851         {0x1BC, 0, 0},
12852         {0x1BD, 0, 0},
12853         {0x1BE, 0, 0},
12854         {0x1BF, 0, 0},
12855         {0x1C0, 0, 0},
12856         {0x1C1, 0, 0},
12857         {0x1C2, 0xa0, 1},
12858         {0x1C3, 0, 0},
12859         {0x1C4, 0, 0},
12860         {0x1C5, 0, 0},
12861         {0x1C6, 0, 0},
12862         {0x1C7, 0, 0},
12863         {0x1C8, 0, 0},
12864         {0x1C9, 0, 0},
12865         {0x1CA, 0, 0},
12866         {0xFFFF, 0, 0}
12867 };
12868
12869 radio_20xx_regs_t regs_2057_rev8[] = {
12870         {0x00, 0x8, 1},
12871         {0x01, 0x57, 1},
12872         {0x02, 0x20, 1},
12873         {0x03, 0x1f, 0},
12874         {0x04, 0x4, 0},
12875         {0x05, 0x2, 0},
12876         {0x06, 0x1, 0},
12877         {0x07, 0x1, 0},
12878         {0x08, 0x1, 0},
12879         {0x09, 0x69, 0},
12880         {0x0A, 0x66, 0},
12881         {0x0B, 0x6, 0},
12882         {0x0C, 0x18, 0},
12883         {0x0D, 0x3, 0},
12884         {0x0E, 0x20, 0},
12885         {0x0F, 0x20, 0},
12886         {0x10, 0, 0},
12887         {0x11, 0x7c, 0},
12888         {0x12, 0x42, 0},
12889         {0x13, 0xbd, 0},
12890         {0x14, 0x7, 0},
12891         {0x15, 0x87, 0},
12892         {0x16, 0x8, 0},
12893         {0x17, 0x17, 0},
12894         {0x18, 0x7, 0},
12895         {0x19, 0, 0},
12896         {0x1A, 0x2, 0},
12897         {0x1B, 0x13, 0},
12898         {0x1C, 0x3e, 0},
12899         {0x1D, 0x3e, 0},
12900         {0x1E, 0x96, 0},
12901         {0x1F, 0x4, 0},
12902         {0x20, 0, 0},
12903         {0x21, 0, 0},
12904         {0x22, 0x17, 0},
12905         {0x23, 0x6, 0},
12906         {0x24, 0x1, 0},
12907         {0x25, 0x6, 0},
12908         {0x26, 0x4, 0},
12909         {0x27, 0xd, 0},
12910         {0x28, 0xd, 0},
12911         {0x29, 0x30, 0},
12912         {0x2A, 0x32, 0},
12913         {0x2B, 0x8, 0},
12914         {0x2C, 0x1c, 0},
12915         {0x2D, 0x2, 0},
12916         {0x2E, 0x4, 0},
12917         {0x2F, 0x7f, 0},
12918         {0x30, 0x27, 0},
12919         {0x31, 0, 1},
12920         {0x32, 0, 1},
12921         {0x33, 0, 1},
12922         {0x34, 0, 0},
12923         {0x35, 0x20, 0},
12924         {0x36, 0x18, 0},
12925         {0x37, 0x7, 0},
12926         {0x38, 0x66, 0},
12927         {0x39, 0x66, 0},
12928         {0x3A, 0x66, 0},
12929         {0x3B, 0x66, 0},
12930         {0x3C, 0xff, 0},
12931         {0x3D, 0xff, 0},
12932         {0x3E, 0xff, 0},
12933         {0x3F, 0xff, 0},
12934         {0x40, 0x16, 0},
12935         {0x41, 0x7, 0},
12936         {0x42, 0x19, 0},
12937         {0x43, 0x7, 0},
12938         {0x44, 0x6, 0},
12939         {0x45, 0x3, 0},
12940         {0x46, 0x1, 0},
12941         {0x47, 0x7, 0},
12942         {0x48, 0x33, 0},
12943         {0x49, 0x5, 0},
12944         {0x4A, 0x77, 0},
12945         {0x4B, 0x66, 0},
12946         {0x4C, 0x66, 0},
12947         {0x4D, 0, 0},
12948         {0x4E, 0x4, 0},
12949         {0x4F, 0xc, 0},
12950         {0x50, 0, 0},
12951         {0x51, 0x70, 1},
12952         {0x56, 0x7, 0},
12953         {0x57, 0, 0},
12954         {0x58, 0, 0},
12955         {0x59, 0x88, 1},
12956         {0x5A, 0, 0},
12957         {0x5B, 0x1f, 0},
12958         {0x5C, 0x20, 1},
12959         {0x5D, 0x1, 0},
12960         {0x5E, 0x30, 0},
12961         {0x5F, 0x70, 0},
12962         {0x60, 0, 0},
12963         {0x61, 0, 0},
12964         {0x62, 0x33, 1},
12965         {0x63, 0xf, 1},
12966         {0x64, 0xf, 1},
12967         {0x65, 0, 0},
12968         {0x66, 0x11, 0},
12969         {0x69, 0, 0},
12970         {0x6A, 0x7e, 0},
12971         {0x6B, 0x3f, 0},
12972         {0x6C, 0x7f, 0},
12973         {0x6D, 0x78, 0},
12974         {0x6E, 0x58, 1},
12975         {0x6F, 0x88, 0},
12976         {0x70, 0x8, 0},
12977         {0x71, 0xf, 0},
12978         {0x72, 0xbc, 0},
12979         {0x73, 0x8, 0},
12980         {0x74, 0x60, 0},
12981         {0x75, 0x13, 1},
12982         {0x76, 0x70, 0},
12983         {0x77, 0, 0},
12984         {0x78, 0, 0},
12985         {0x79, 0, 0},
12986         {0x7A, 0x33, 0},
12987         {0x7B, 0x13, 1},
12988         {0x7C, 0xf, 1},
12989         {0x7D, 0xee, 1},
12990         {0x80, 0x3c, 0},
12991         {0x81, 0x1, 1},
12992         {0x82, 0xa, 0},
12993         {0x83, 0x9d, 0},
12994         {0x84, 0xa, 0},
12995         {0x85, 0, 0},
12996         {0x86, 0x40, 0},
12997         {0x87, 0x40, 0},
12998         {0x88, 0x88, 0},
12999         {0x89, 0x10, 0},
13000         {0x8A, 0xf0, 0},
13001         {0x8B, 0x10, 0},
13002         {0x8C, 0xf0, 0},
13003         {0x8D, 0, 0},
13004         {0x8E, 0, 0},
13005         {0x8F, 0x10, 0},
13006         {0x90, 0x55, 0},
13007         {0x91, 0x3f, 1},
13008         {0x92, 0x36, 1},
13009         {0x93, 0, 0},
13010         {0x94, 0, 0},
13011         {0x95, 0, 0},
13012         {0x96, 0x87, 0},
13013         {0x97, 0x11, 0},
13014         {0x98, 0, 0},
13015         {0x99, 0x33, 0},
13016         {0x9A, 0x88, 0},
13017         {0x9B, 0, 0},
13018         {0x9C, 0x87, 0},
13019         {0x9D, 0x11, 0},
13020         {0x9E, 0, 0},
13021         {0x9F, 0x33, 0},
13022         {0xA0, 0x88, 0},
13023         {0xA1, 0x20, 1},
13024         {0xA2, 0x3f, 0},
13025         {0xA3, 0x44, 0},
13026         {0xA4, 0x8c, 0},
13027         {0xA5, 0x6c, 0},
13028         {0xA6, 0x22, 0},
13029         {0xA7, 0xbe, 0},
13030         {0xA8, 0x55, 0},
13031         {0xAA, 0xc, 0},
13032         {0xAB, 0xaa, 0},
13033         {0xAC, 0x2, 0},
13034         {0xAD, 0, 0},
13035         {0xAE, 0x10, 0},
13036         {0xAF, 0x1, 0},
13037         {0xB0, 0, 0},
13038         {0xB1, 0, 0},
13039         {0xB2, 0x80, 0},
13040         {0xB3, 0x60, 0},
13041         {0xB4, 0x44, 0},
13042         {0xB5, 0x55, 0},
13043         {0xB6, 0x1, 0},
13044         {0xB7, 0x55, 0},
13045         {0xB8, 0x1, 0},
13046         {0xB9, 0x5, 0},
13047         {0xBA, 0x55, 0},
13048         {0xBB, 0x55, 0},
13049         {0xC1, 0, 0},
13050         {0xC2, 0, 0},
13051         {0xC3, 0, 0},
13052         {0xC4, 0, 0},
13053         {0xC5, 0, 0},
13054         {0xC6, 0, 0},
13055         {0xC7, 0, 0},
13056         {0xC8, 0, 0},
13057         {0xC9, 0x1, 1},
13058         {0xCA, 0, 0},
13059         {0xCB, 0, 0},
13060         {0xCC, 0, 0},
13061         {0xCD, 0, 0},
13062         {0xCE, 0x5e, 0},
13063         {0xCF, 0xc, 0},
13064         {0xD0, 0xc, 0},
13065         {0xD1, 0xc, 0},
13066         {0xD2, 0, 0},
13067         {0xD3, 0x2b, 0},
13068         {0xD4, 0xc, 0},
13069         {0xD5, 0, 0},
13070         {0xD6, 0x70, 1},
13071         {0xDB, 0x7, 0},
13072         {0xDC, 0, 0},
13073         {0xDD, 0, 0},
13074         {0xDE, 0x88, 1},
13075         {0xDF, 0, 0},
13076         {0xE0, 0x1f, 0},
13077         {0xE1, 0x20, 1},
13078         {0xE2, 0x1, 0},
13079         {0xE3, 0x30, 0},
13080         {0xE4, 0x70, 0},
13081         {0xE5, 0, 0},
13082         {0xE6, 0, 0},
13083         {0xE7, 0x33, 0},
13084         {0xE8, 0xf, 1},
13085         {0xE9, 0xf, 1},
13086         {0xEA, 0, 0},
13087         {0xEB, 0x11, 0},
13088         {0xEE, 0, 0},
13089         {0xEF, 0x7e, 0},
13090         {0xF0, 0x3f, 0},
13091         {0xF1, 0x7f, 0},
13092         {0xF2, 0x78, 0},
13093         {0xF3, 0x58, 1},
13094         {0xF4, 0x88, 0},
13095         {0xF5, 0x8, 0},
13096         {0xF6, 0xf, 0},
13097         {0xF7, 0xbc, 0},
13098         {0xF8, 0x8, 0},
13099         {0xF9, 0x60, 0},
13100         {0xFA, 0x13, 1},
13101         {0xFB, 0x70, 0},
13102         {0xFC, 0, 0},
13103         {0xFD, 0, 0},
13104         {0xFE, 0, 0},
13105         {0xFF, 0x33, 0},
13106         {0x100, 0x13, 1},
13107         {0x101, 0xf, 1},
13108         {0x102, 0xee, 1},
13109         {0x105, 0x3c, 0},
13110         {0x106, 0x1, 1},
13111         {0x107, 0xa, 0},
13112         {0x108, 0x9d, 0},
13113         {0x109, 0xa, 0},
13114         {0x10A, 0, 0},
13115         {0x10B, 0x40, 0},
13116         {0x10C, 0x40, 0},
13117         {0x10D, 0x88, 0},
13118         {0x10E, 0x10, 0},
13119         {0x10F, 0xf0, 0},
13120         {0x110, 0x10, 0},
13121         {0x111, 0xf0, 0},
13122         {0x112, 0, 0},
13123         {0x113, 0, 0},
13124         {0x114, 0x10, 0},
13125         {0x115, 0x55, 0},
13126         {0x116, 0x3f, 1},
13127         {0x117, 0x36, 1},
13128         {0x118, 0, 0},
13129         {0x119, 0, 0},
13130         {0x11A, 0, 0},
13131         {0x11B, 0x87, 0},
13132         {0x11C, 0x11, 0},
13133         {0x11D, 0, 0},
13134         {0x11E, 0x33, 0},
13135         {0x11F, 0x88, 0},
13136         {0x120, 0, 0},
13137         {0x121, 0x87, 0},
13138         {0x122, 0x11, 0},
13139         {0x123, 0, 0},
13140         {0x124, 0x33, 0},
13141         {0x125, 0x88, 0},
13142         {0x126, 0x20, 1},
13143         {0x127, 0x3f, 0},
13144         {0x128, 0x44, 0},
13145         {0x129, 0x8c, 0},
13146         {0x12A, 0x6c, 0},
13147         {0x12B, 0x22, 0},
13148         {0x12C, 0xbe, 0},
13149         {0x12D, 0x55, 0},
13150         {0x12F, 0xc, 0},
13151         {0x130, 0xaa, 0},
13152         {0x131, 0x2, 0},
13153         {0x132, 0, 0},
13154         {0x133, 0x10, 0},
13155         {0x134, 0x1, 0},
13156         {0x135, 0, 0},
13157         {0x136, 0, 0},
13158         {0x137, 0x80, 0},
13159         {0x138, 0x60, 0},
13160         {0x139, 0x44, 0},
13161         {0x13A, 0x55, 0},
13162         {0x13B, 0x1, 0},
13163         {0x13C, 0x55, 0},
13164         {0x13D, 0x1, 0},
13165         {0x13E, 0x5, 0},
13166         {0x13F, 0x55, 0},
13167         {0x140, 0x55, 0},
13168         {0x146, 0, 0},
13169         {0x147, 0, 0},
13170         {0x148, 0, 0},
13171         {0x149, 0, 0},
13172         {0x14A, 0, 0},
13173         {0x14B, 0, 0},
13174         {0x14C, 0, 0},
13175         {0x14D, 0, 0},
13176         {0x14E, 0x1, 1},
13177         {0x14F, 0, 0},
13178         {0x150, 0, 0},
13179         {0x151, 0, 0},
13180         {0x154, 0xc, 0},
13181         {0x155, 0xc, 0},
13182         {0x156, 0xc, 0},
13183         {0x157, 0, 0},
13184         {0x158, 0x2b, 0},
13185         {0x159, 0x84, 0},
13186         {0x15A, 0x15, 0},
13187         {0x15B, 0xf, 0},
13188         {0x15C, 0, 0},
13189         {0x15D, 0, 0},
13190         {0x15E, 0, 1},
13191         {0x15F, 0, 1},
13192         {0x160, 0, 1},
13193         {0x161, 0, 1},
13194         {0x162, 0, 1},
13195         {0x163, 0, 1},
13196         {0x164, 0, 0},
13197         {0x165, 0, 0},
13198         {0x166, 0, 0},
13199         {0x167, 0, 0},
13200         {0x168, 0, 0},
13201         {0x169, 0, 0},
13202         {0x16A, 0, 1},
13203         {0x16B, 0, 1},
13204         {0x16C, 0, 1},
13205         {0x16D, 0, 0},
13206         {0x170, 0, 0},
13207         {0x171, 0x77, 0},
13208         {0x172, 0x77, 0},
13209         {0x173, 0x77, 0},
13210         {0x174, 0x77, 0},
13211         {0x175, 0, 0},
13212         {0x176, 0x3, 0},
13213         {0x177, 0x37, 0},
13214         {0x178, 0x3, 0},
13215         {0x179, 0, 0},
13216         {0x17A, 0x21, 0},
13217         {0x17B, 0x21, 0},
13218         {0x17C, 0, 0},
13219         {0x17D, 0xaa, 0},
13220         {0x17E, 0, 0},
13221         {0x17F, 0xaa, 0},
13222         {0x180, 0, 0},
13223         {0x190, 0, 0},
13224         {0x191, 0x77, 0},
13225         {0x192, 0x77, 0},
13226         {0x193, 0x77, 0},
13227         {0x194, 0x77, 0},
13228         {0x195, 0, 0},
13229         {0x196, 0x3, 0},
13230         {0x197, 0x37, 0},
13231         {0x198, 0x3, 0},
13232         {0x199, 0, 0},
13233         {0x19A, 0x21, 0},
13234         {0x19B, 0x21, 0},
13235         {0x19C, 0, 0},
13236         {0x19D, 0xaa, 0},
13237         {0x19E, 0, 0},
13238         {0x19F, 0xaa, 0},
13239         {0x1A0, 0, 0},
13240         {0x1A1, 0x2, 0},
13241         {0x1A2, 0xf, 0},
13242         {0x1A3, 0xf, 0},
13243         {0x1A4, 0, 1},
13244         {0x1A5, 0, 1},
13245         {0x1A6, 0, 1},
13246         {0x1A7, 0x2, 0},
13247         {0x1A8, 0xf, 0},
13248         {0x1A9, 0xf, 0},
13249         {0x1AA, 0, 1},
13250         {0x1AB, 0, 1},
13251         {0x1AC, 0, 1},
13252         {0x1AD, 0x84, 0},
13253         {0x1AE, 0x60, 0},
13254         {0x1AF, 0x47, 0},
13255         {0x1B0, 0x47, 0},
13256         {0x1B1, 0, 0},
13257         {0x1B2, 0, 0},
13258         {0x1B3, 0, 0},
13259         {0x1B4, 0, 0},
13260         {0x1B5, 0, 0},
13261         {0x1B6, 0, 0},
13262         {0x1B7, 0x5, 1},
13263         {0x1B8, 0, 0},
13264         {0x1B9, 0, 0},
13265         {0x1BA, 0, 0},
13266         {0x1BB, 0, 0},
13267         {0x1BC, 0, 0},
13268         {0x1BD, 0, 0},
13269         {0x1BE, 0, 0},
13270         {0x1BF, 0, 0},
13271         {0x1C0, 0, 0},
13272         {0x1C1, 0, 0},
13273         {0x1C2, 0xa0, 1},
13274         {0x1C3, 0, 0},
13275         {0x1C4, 0, 0},
13276         {0x1C5, 0, 0},
13277         {0x1C6, 0, 0},
13278         {0x1C7, 0, 0},
13279         {0x1C8, 0, 0},
13280         {0x1C9, 0, 0},
13281         {0x1CA, 0, 0},
13282         {0xFFFF, 0, 0}
13283 };
13284
13285 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13286
13287 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13288 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13289
13290 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13291         {
13292          {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13293          {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13294          {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13295          {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13296          {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13297          {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13298          {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13299          {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13300          {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13301          },
13302         {
13303          {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13304          {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13305          {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13306          {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13307          {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13308          {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13309          {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13310          {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13311          {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13312          }
13313 };
13314
13315 static const u32 nphy_tpc_txgain[] = {
13316         0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13317         0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13318         0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13319         0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13320         0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13321         0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13322         0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13323         0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13324         0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13325         0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13326         0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13327         0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13328         0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13329         0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13330         0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13331         0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13332         0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13333         0x03902942, 0x03902844, 0x03902842, 0x03902744,
13334         0x03902742, 0x03902644, 0x03902642, 0x03902544,
13335         0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13336         0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13337         0x03802842, 0x03802744, 0x03802742, 0x03802644,
13338         0x03802642, 0x03802544, 0x03802542, 0x03802444,
13339         0x03802442, 0x03802344, 0x03802342, 0x03802244,
13340         0x03802242, 0x03802144, 0x03802142, 0x03802044,
13341         0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13342         0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13343         0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13344         0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13345         0x03801842, 0x03801744, 0x03801742, 0x03801644,
13346         0x03801642, 0x03801544, 0x03801542, 0x03801444,
13347         0x03801442, 0x03801344, 0x03801342, 0x00002b00
13348 };
13349
13350 static const u16 nphy_tpc_loscale[] = {
13351         256, 256, 271, 271, 287, 256, 256, 271,
13352         271, 287, 287, 304, 304, 256, 256, 271,
13353         271, 287, 287, 304, 304, 322, 322, 341,
13354         341, 362, 362, 383, 383, 256, 256, 271,
13355         271, 287, 287, 304, 304, 322, 322, 256,
13356         256, 271, 271, 287, 287, 304, 304, 322,
13357         322, 341, 341, 362, 362, 256, 256, 271,
13358         271, 287, 287, 304, 304, 322, 322, 256,
13359         256, 271, 271, 287, 287, 304, 304, 322,
13360         322, 341, 341, 362, 362, 256, 256, 271,
13361         271, 287, 287, 304, 304, 322, 322, 341,
13362         341, 362, 362, 383, 383, 406, 406, 430,
13363         430, 455, 455, 482, 482, 511, 511, 541,
13364         541, 573, 573, 607, 607, 643, 643, 681,
13365         681, 722, 722, 764, 764, 810, 810, 858,
13366         858, 908, 908, 962, 962, 1019, 1019, 256
13367 };
13368
13369 static u32 nphy_tpc_txgain_ipa[] = {
13370         0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13371         0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13372         0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13373         0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13374         0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13375         0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13376         0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13377         0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13378         0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13379         0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13380         0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13381         0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13382         0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13383         0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13384         0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13385         0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13386         0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13387         0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13388         0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13389         0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13390         0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13391         0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13392         0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13393         0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13394         0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13395         0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13396         0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13397         0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13398         0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13399         0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13400         0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13401         0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13402 };
13403
13404 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13405         0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13406         0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13407         0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13408         0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13409         0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13410         0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13411         0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13412         0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13413         0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13414         0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13415         0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13416         0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13417         0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13418         0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13419         0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13420         0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13421         0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13422         0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13423         0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13424         0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13425         0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13426         0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13427         0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13428         0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13429         0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13430         0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13431         0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13432         0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13433         0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13434         0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13435         0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13436         0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13437 };
13438
13439 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13440         0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13441         0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13442         0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13443         0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13444         0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13445         0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13446         0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13447         0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13448         0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13449         0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13450         0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13451         0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13452         0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13453         0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13454         0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13455         0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13456         0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13457         0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13458         0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13459         0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13460         0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13461         0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13462         0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13463         0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13464         0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13465         0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13466         0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13467         0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13468         0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13469         0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13470         0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13471         0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13472 };
13473
13474 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13475         0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13476         0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13477         0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13478         0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13479         0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13480         0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13481         0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13482         0x70470028, 0x70470026, 0x70470024, 0x70470022,
13483         0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13484         0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13485         0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13486         0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13487         0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13488         0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13489         0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13490         0x70170019, 0x70170018, 0x70170016, 0x70170015,
13491         0x70170014, 0x70170013, 0x70170012, 0x70170010,
13492         0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13493         0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13494         0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13495         0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13496         0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13497         0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13498         0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13499         0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13500         0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13501         0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13502         0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13503         0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13504         0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13505         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13506         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13507 };
13508
13509 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13510         0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13511         0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13512         0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13513         0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13514         0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13515         0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13516         0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13517         0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13518         0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13519         0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13520         0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13521         0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13522         0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13523         0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13524         0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13525         0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13526         0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13527         0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13528         0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13529         0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13530         0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13531         0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13532         0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13533         0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13534         0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13535         0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13536         0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13537         0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13538         0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13539         0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13540         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13541         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13542 };
13543
13544 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13545         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13546         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13547         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13548         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13549         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13550         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13551         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13552         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13553         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13554         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13555         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13556         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13557         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13558         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13559         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13560         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13561         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13562         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13563         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13564         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13565         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13566         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13567         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13568         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13569         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13570         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13571         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13572         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13573         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13574         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13575         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13576         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13577 };
13578
13579 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13580         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13581         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13582         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13583         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13584         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13585         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13586         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13587         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13588         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13589         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13590         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13591         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13592         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13593         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13594         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13595         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13596         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13597         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13598         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
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         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13611         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13612 };
13613
13614 static u32 nphy_tpc_txgain_ipa_5g[] = {
13615         0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13616         0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13617         0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13618         0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13619         0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13620         0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13621         0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13622         0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13623         0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13624         0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13625         0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13626         0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13627         0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13628         0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13629         0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13630         0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13631         0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13632         0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13633         0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13634         0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13635         0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13636         0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13637         0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13638         0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13639         0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13640         0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13641         0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13642         0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13643         0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13644         0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13645         0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13646         0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13647 };
13648
13649 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13650         0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13651         0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13652         0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13653         0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13654         0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13655         0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13656         0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13657         0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13658         0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13659         0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13660         0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13661         0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13662         0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13663         0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13664         0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13665         0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13666         0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13667         0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13668         0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13669         0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13670         0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13671         0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13672         0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13673         0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13674         0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13675         0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13676         0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13677         0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13678         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13679         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13680         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13681         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13682 };
13683
13684 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13685         0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13686         0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13687         0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13688         0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13689         0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13690         0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13691         0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13692         0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13693         0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13694         0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13695         0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13696         0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13697         0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13698         0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13699         0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13700         0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13701         0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13702         0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13703         0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13704         0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13705         0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13706         0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13707         0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13708         0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13709         0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13710         0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13711         0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13712         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13713         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13714         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13715         0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13716         0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13717 };
13718
13719 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13720         -114, -108, -98, -91, -84, -78, -70, -62,
13721         -54, -46, -39, -31, -23, -15, -8, 0
13722 };
13723
13724 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13725         -100, -95, -89, -83, -77, -70, -63, -56,
13726         -48, -41, -33, -25, -19, -12, -6, 0
13727 };
13728
13729 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13730         -159, -113, -86, -72, -62, -54, -48, -43,
13731         -39, -35, -31, -28, -25, -23, -20, -18,
13732         -17, -15, -13, -11, -10, -8, -7, -6,
13733         -5, -4, -3, -3, -2, -1, -1, 0
13734 };
13735
13736 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13737         -109, -109, -82, -68, -58, -50, -44, -39,
13738         -35, -31, -28, -26, -23, -21, -19, -17,
13739         -16, -14, -13, -11, -10, -9, -8, -7,
13740         -5, -5, -4, -3, -2, -1, -1, 0
13741 };
13742
13743 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13744         -122, -122, -95, -80, -69, -61, -54, -49,
13745         -43, -39, -35, -32, -28, -26, -23, -21,
13746         -18, -16, -15, -13, -11, -10, -8, -7,
13747         -6, -5, -4, -3, -2, -1, -1, 0
13748 };
13749
13750 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13751         -107, -101, -92, -85, -78, -71, -62, -55,
13752         -47, -39, -32, -24, -19, -12, -6, 0
13753 };
13754
13755 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13756         -110, -104, -95, -88, -81, -74, -66, -58,
13757         -50, -44, -36, -28, -23, -15, -8, 0
13758 };
13759
13760 static u8 pad_gain_codes_used_2057rev5[] = {
13761         20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13762         10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13763 };
13764
13765 static u8 pad_gain_codes_used_2057rev7[] = {
13766         15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13767         5, 4, 3, 2, 1
13768 };
13769
13770 static u8 pad_all_gain_codes_2057[] = {
13771         31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13772         21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13773         11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13774         1, 0
13775 };
13776
13777 static u8 pga_all_gain_codes_2057[] = {
13778         15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13779 };
13780
13781 static u32 nphy_papd_scaltbl[] = {
13782         0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13783         0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13784         0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13785         0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13786         0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13787         0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13788         0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13789         0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13790         0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13791         0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13792         0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13793         0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13794         0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13795         0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13796         0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13797         0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13798 };
13799
13800 static u32 nphy_tpc_txgain_rev3[] = {
13801         0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13802         0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13803         0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13804         0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13805         0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13806         0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13807         0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13808         0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13809         0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13810         0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13811         0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13812         0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13813         0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13814         0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13815         0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13816         0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13817         0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13818         0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13819         0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13820         0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13821         0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13822         0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13823         0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13824         0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13825         0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13826         0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13827         0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13828         0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13829         0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13830         0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13831         0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13832         0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13833 };
13834
13835 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13836         0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13837         0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13838         0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13839         0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13840         0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13841         0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13842         0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13843         0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13844         0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13845         0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13846         0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13847         0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13848         0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13849         0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13850         0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13851         0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13852         0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13853         0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13854         0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13855         0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13856         0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13857         0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13858         0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13859         0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13860         0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13861         0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13862         0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13863         0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13864         0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13865         0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13866         0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13867         0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13868 };
13869
13870 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13871         0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13872         0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13873         0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13874         0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13875         0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13876         0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13877         0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13878         0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13879         0x80290031, 0x80210039, 0x80210036, 0x80210033,
13880         0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13881         0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13882         0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13883         0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13884         0x80110027, 0x80110024, 0x80110022, 0x80110020,
13885         0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13886         0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13887         0x80090029, 0x80090027, 0x80090025, 0x80090023,
13888         0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13889         0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13890         0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13891         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13892         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13893         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13894         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13895         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13896         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13897         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13898         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13899         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13900         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13901         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13902         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13903 };
13904
13905 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13906         0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13907         0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13908         0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13909         0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13910         0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13911         0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13912         0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13913         0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13914         0x10290031, 0x10210039, 0x10210036, 0x10210033,
13915         0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13916         0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13917         0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13918         0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13919         0x10110027, 0x10110024, 0x10110022, 0x10110020,
13920         0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13921         0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13922         0x10090029, 0x10090027, 0x10090025, 0x10090023,
13923         0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13924         0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13925         0x10090015, 0x10090013, 0x10090012, 0x10090011,
13926         0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13927         0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13928         0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13929         0x10090008, 0x10090008, 0x10090007, 0x10090007,
13930         0x10090007, 0x10090006, 0x10090006, 0x10090005,
13931         0x10090005, 0x10090005, 0x10090005, 0x10090004,
13932         0x10090004, 0x10090004, 0x10090004, 0x10090003,
13933         0x10090003, 0x10090003, 0x10090003, 0x10090003,
13934         0x10090003, 0x10090002, 0x10090002, 0x10090002,
13935         0x10090002, 0x10090002, 0x10090002, 0x10090002,
13936         0x10090002, 0x10090002, 0x10090001, 0x10090001,
13937         0x10090001, 0x10090001, 0x10090001, 0x10090001
13938 };
13939
13940 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13941         0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13942         0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13943         0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13944         0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13945         0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13946         0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13947         0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13948         0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13949         0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13950         0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13951         0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13952         0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13953         0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13954         0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13955         0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13956         0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13957         0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13958         0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13959         0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13960         0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13961         0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13962         0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13963         0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13964         0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13965         0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13966         0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
13967         0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
13968         0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
13969         0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
13970         0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
13971         0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
13972         0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
13973 };
13974
13975 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
13976         0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
13977         0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
13978         0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
13979         0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
13980         0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
13981         0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
13982         0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
13983         0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
13984         0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
13985         0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
13986         0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
13987         0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
13988         0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
13989         0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
13990         0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
13991         0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
13992         0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
13993         0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
13994         0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
13995         0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
13996         0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
13997         0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
13998         0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
13999         0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14000         0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14001         0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14002         0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14003         0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14004         0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14005         0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14006         0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14007         0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14008 };
14009
14010 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14011         0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14012         0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14013         0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14014         0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14015         0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14016         0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14017         0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14018         0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14019         0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14020         0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14021         0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14022         0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14023         0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14024         0x09620039, 0x09620037, 0x09620035, 0x09620033,
14025         0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14026         0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14027         0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14028         0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14029         0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14030         0x06620039, 0x06620037, 0x06620035, 0x06620033,
14031         0x05620046, 0x05620044, 0x05620042, 0x05620040,
14032         0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14033         0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14034         0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14035         0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14036         0x03620038, 0x03620037, 0x03620035, 0x03620033,
14037         0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14038         0x02620046, 0x02620044, 0x02620043, 0x02620042,
14039         0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14040         0x01620043, 0x01620042, 0x01620041, 0x01620040,
14041         0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14042         0x0062003b, 0x00620039, 0x00620037, 0x00620035
14043 };
14044
14045 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14046         0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14047         0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14048         0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14049         0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14050         0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14051         0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14052         0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14053         0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14054         0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14055         0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14056         0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14057         0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14058         0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14059         0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14060         0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14061         0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14062         0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14063         0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14064         0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14065         0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14066         0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14067         0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14068         0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14069         0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14070         0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14071         0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14072         0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14073         0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14074         0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14075         0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14076         0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14077         0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14078 };
14079
14080 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14081 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14082 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14083         0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a };
14084 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14085         0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16 };
14086
14087 static bool wlc_phy_chan2freq_nphy(phy_info_t *pi, uint channel, int *f,
14088                                    chan_info_nphy_radio2057_t **t0,
14089                                    chan_info_nphy_radio205x_t **t1,
14090                                    chan_info_nphy_radio2057_rev5_t **t2,
14091                                    chan_info_nphy_2055_t **t3);
14092 static void wlc_phy_chanspec_nphy_setup(phy_info_t *pi, chanspec_t chans,
14093                                         const nphy_sfo_cfg_t *c);
14094
14095 static void wlc_phy_adjust_rx_analpfbw_nphy(phy_info_t *pi,
14096                                             u16 reduction_factr);
14097 static void wlc_phy_adjust_min_noisevar_nphy(phy_info_t *pi, int ntones, int *,
14098                                              u32 *buf);
14099 static void wlc_phy_adjust_crsminpwr_nphy(phy_info_t *pi, u8 minpwr);
14100 static void wlc_phy_txlpfbw_nphy(phy_info_t *pi);
14101 static void wlc_phy_spurwar_nphy(phy_info_t *pi);
14102
14103 static void wlc_phy_radio_preinit_2055(phy_info_t *pi);
14104 static void wlc_phy_radio_init_2055(phy_info_t *pi);
14105 static void wlc_phy_radio_postinit_2055(phy_info_t *pi);
14106 static void wlc_phy_radio_preinit_205x(phy_info_t *pi);
14107 static void wlc_phy_radio_init_2056(phy_info_t *pi);
14108 static void wlc_phy_radio_postinit_2056(phy_info_t *pi);
14109 static void wlc_phy_radio_init_2057(phy_info_t *pi);
14110 static void wlc_phy_radio_postinit_2057(phy_info_t *pi);
14111 static void wlc_phy_workarounds_nphy(phy_info_t *pi);
14112 static void wlc_phy_workarounds_nphy_gainctrl(phy_info_t *pi);
14113 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(phy_info_t *pi);
14114 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(phy_info_t *pi);
14115 static void wlc_phy_adjust_lnagaintbl_nphy(phy_info_t *pi);
14116
14117 static void wlc_phy_restore_rssical_nphy(phy_info_t *pi);
14118 static void wlc_phy_reapply_txcal_coeffs_nphy(phy_info_t *pi);
14119 static void wlc_phy_tx_iq_war_nphy(phy_info_t *pi);
14120 static int wlc_phy_cal_rxiq_nphy_rev3(phy_info_t *pi, nphy_txgains_t tg,
14121                                       u8 type, bool d);
14122 static void wlc_phy_rxcal_gainctrl_nphy_rev5(phy_info_t *pi, u8 rxcore,
14123                                              u16 *rg, u8 type);
14124 static void wlc_phy_update_mimoconfig_nphy(phy_info_t *pi, s32 preamble);
14125 static void wlc_phy_savecal_nphy(phy_info_t *pi);
14126 static void wlc_phy_restorecal_nphy(phy_info_t *pi);
14127 static void wlc_phy_resetcca_nphy(phy_info_t *pi);
14128
14129 static void wlc_phy_txpwrctrl_config_nphy(phy_info_t *pi);
14130 static void wlc_phy_internal_cal_txgain_nphy(phy_info_t *pi);
14131 static void wlc_phy_precal_txgain_nphy(phy_info_t *pi);
14132 static void wlc_phy_update_txcal_ladder_nphy(phy_info_t *pi, u16 core);
14133
14134 static void wlc_phy_extpa_set_tx_digi_filts_nphy(phy_info_t *pi);
14135 static void wlc_phy_ipa_set_tx_digi_filts_nphy(phy_info_t *pi);
14136 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(phy_info_t *pi);
14137 static u16 wlc_phy_ipa_get_bbmult_nphy(phy_info_t *pi);
14138 static void wlc_phy_ipa_set_bbmult_nphy(phy_info_t *pi, u8 m0, u8 m1);
14139 static u32 *wlc_phy_get_ipa_gaintbl_nphy(phy_info_t *pi);
14140
14141 static void wlc_phy_a1_nphy(phy_info_t *pi, u8 core, u32 winsz, u32,
14142                             u32 e);
14143 static u8 wlc_phy_a3_nphy(phy_info_t *pi, u8 start_gain, u8 core);
14144 static void wlc_phy_a2_nphy(phy_info_t *pi, nphy_ipa_txcalgains_t *,
14145                             phy_cal_mode_t, u8);
14146 static void wlc_phy_papd_cal_cleanup_nphy(phy_info_t *pi,
14147                                           nphy_papd_restore_state *state);
14148 static void wlc_phy_papd_cal_setup_nphy(phy_info_t *pi,
14149                                         nphy_papd_restore_state *state, u8);
14150
14151 static void wlc_phy_clip_det_nphy(phy_info_t *pi, u8 write, u16 *vals);
14152
14153 static void wlc_phy_set_rfseq_nphy(phy_info_t *pi, u8 cmd, u8 *evts,
14154                                    u8 *dlys, u8 len);
14155
14156 static u16 wlc_phy_read_lpf_bw_ctl_nphy(phy_info_t *pi, u16 offset);
14157
14158 static void
14159 wlc_phy_rfctrl_override_nphy_rev7(phy_info_t *pi, u16 field, u16 value,
14160                                   u8 core_mask, u8 off,
14161                                   u8 override_id);
14162
14163 static void wlc_phy_rssi_cal_nphy_rev2(phy_info_t *pi, u8 rssi_type);
14164 static void wlc_phy_rssi_cal_nphy_rev3(phy_info_t *pi);
14165
14166 static bool wlc_phy_txpwr_srom_read_nphy(phy_info_t *pi);
14167 static void wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max,
14168                                             u16 *pwr_offset,
14169                                             u8 tmp_max_pwr, u8 rate_start,
14170                                             u8 rate_end);
14171
14172 static void wlc_phy_txpwr_limit_to_tbl_nphy(phy_info_t *pi);
14173 static void wlc_phy_txpwrctrl_coeff_setup_nphy(phy_info_t *pi);
14174 static void wlc_phy_txpwrctrl_idle_tssi_nphy(phy_info_t *pi);
14175 static void wlc_phy_txpwrctrl_pwr_setup_nphy(phy_info_t *pi);
14176
14177 static bool wlc_phy_txpwr_ison_nphy(phy_info_t *pi);
14178 static u8 wlc_phy_txpwr_idx_cur_get_nphy(phy_info_t *pi, u8 core);
14179 static void wlc_phy_txpwr_idx_cur_set_nphy(phy_info_t *pi, u8 idx0,
14180                                            u8 idx1);
14181 static void wlc_phy_a4(phy_info_t *pi, bool full_cal);
14182
14183 static u16 wlc_phy_radio205x_rcal(phy_info_t *pi);
14184
14185 static u16 wlc_phy_radio2057_rccal(phy_info_t *pi);
14186
14187 static u16 wlc_phy_gen_load_samples_nphy(phy_info_t *pi, u32 f_kHz,
14188                                             u16 max_val,
14189                                             u8 dac_test_mode);
14190 static void wlc_phy_loadsampletable_nphy(phy_info_t *pi, cs32 *tone_buf,
14191                                          u16 num_samps);
14192 static void wlc_phy_runsamples_nphy(phy_info_t *pi, u16 n, u16 lps,
14193                                     u16 wait, u8 iq, u8 dac_test_mode,
14194                                     bool modify_bbmult);
14195
14196 bool wlc_phy_bist_check_phy(wlc_phy_t *pih)
14197 {
14198         phy_info_t *pi = (phy_info_t *) pih;
14199         u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14200
14201         if (NREV_GE(pi->pubpi.phy_rev, 16))
14202                 return true;
14203
14204         phybist0 = read_phy_reg(pi, 0x0e);
14205         phybist1 = read_phy_reg(pi, 0x0f);
14206         phybist2 = read_phy_reg(pi, 0xea);
14207         phybist3 = read_phy_reg(pi, 0xeb);
14208         phybist4 = read_phy_reg(pi, 0x156);
14209
14210         if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14211             (phybist3 == 0) && (phybist4 == 0)) {
14212                 return true;
14213         }
14214
14215         return false;
14216 }
14217
14218 static void WLBANDINITFN(wlc_phy_bphy_init_nphy) (phy_info_t *pi)
14219 {
14220         u16 addr, val;
14221
14222         ASSERT(ISNPHY(pi));
14223
14224         val = 0x1e1f;
14225         for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14226              addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14227                 write_phy_reg(pi, addr, val);
14228                 if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14229                         val = 0x3e3f;
14230                 else
14231                         val -= 0x0202;
14232         }
14233
14234         if (NORADIO_ENAB(pi->pubpi)) {
14235
14236                 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_PHYCRSTH, 0x3206);
14237
14238                 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_RSSI_TRESH, 0x281e);
14239
14240                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_LNA_GAIN_RANGE, 0x1a);
14241
14242         } else {
14243
14244                 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14245         }
14246 }
14247
14248 void
14249 wlc_phy_table_write_nphy(phy_info_t *pi, u32 id, u32 len, u32 offset,
14250                          u32 width, const void *data)
14251 {
14252         mimophytbl_info_t tbl;
14253
14254         tbl.tbl_id = id;
14255         tbl.tbl_len = len;
14256         tbl.tbl_offset = offset;
14257         tbl.tbl_width = width;
14258         tbl.tbl_ptr = data;
14259         wlc_phy_write_table_nphy(pi, &tbl);
14260 }
14261
14262 void
14263 wlc_phy_table_read_nphy(phy_info_t *pi, u32 id, u32 len, u32 offset,
14264                         u32 width, void *data)
14265 {
14266         mimophytbl_info_t tbl;
14267
14268         tbl.tbl_id = id;
14269         tbl.tbl_len = len;
14270         tbl.tbl_offset = offset;
14271         tbl.tbl_width = width;
14272         tbl.tbl_ptr = data;
14273         wlc_phy_read_table_nphy(pi, &tbl);
14274 }
14275
14276 static void WLBANDINITFN(wlc_phy_static_table_download_nphy) (phy_info_t *pi)
14277 {
14278         uint idx;
14279
14280         if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14281                 for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14282                         wlc_phy_write_table_nphy(pi,
14283                                                  &mimophytbl_info_rev16[idx]);
14284         } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14285                 for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14286                         wlc_phy_write_table_nphy(pi,
14287                                                  &mimophytbl_info_rev7[idx]);
14288         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14289                 for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14290                         wlc_phy_write_table_nphy(pi,
14291                                                  &mimophytbl_info_rev3[idx]);
14292         } else {
14293                 for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14294                         wlc_phy_write_table_nphy(pi,
14295                                                  &mimophytbl_info_rev0[idx]);
14296         }
14297 }
14298
14299 static void WLBANDINITFN(wlc_phy_tbl_init_nphy) (phy_info_t *pi)
14300 {
14301         uint idx = 0;
14302         u8 antswctrllut;
14303
14304         if (pi->phy_init_por)
14305                 wlc_phy_static_table_download_nphy(pi);
14306
14307         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14308
14309                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14310                     pi->srom_fem2g.antswctrllut : pi->srom_fem5g.antswctrllut;
14311
14312                 switch (antswctrllut) {
14313                 case 0:
14314
14315                         break;
14316
14317                 case 1:
14318
14319                         if (pi->aa2g == 7) {
14320
14321                                 wlc_phy_table_write_nphy(pi,
14322                                                          NPHY_TBL_ID_ANTSWCTRLLUT,
14323                                                          2, 0x21, 8,
14324                                                          &ant_sw_ctrl_tbl_rev8_2o3
14325                                                          [0]);
14326                         } else {
14327                                 wlc_phy_table_write_nphy(pi,
14328                                                          NPHY_TBL_ID_ANTSWCTRLLUT,
14329                                                          2, 0x21, 8,
14330                                                          &ant_sw_ctrl_tbl_rev8
14331                                                          [0]);
14332                         }
14333                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14334                                                  2, 0x25, 8,
14335                                                  &ant_sw_ctrl_tbl_rev8[2]);
14336                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14337                                                  2, 0x29, 8,
14338                                                  &ant_sw_ctrl_tbl_rev8[4]);
14339                         break;
14340
14341                 case 2:
14342
14343                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14344                                                  2, 0x1, 8,
14345                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core0
14346                                                  [0]);
14347                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14348                                                  2, 0x5, 8,
14349                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core0
14350                                                  [2]);
14351                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14352                                                  2, 0x9, 8,
14353                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core0
14354                                                  [4]);
14355
14356                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14357                                                  2, 0x21, 8,
14358                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core1
14359                                                  [0]);
14360                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14361                                                  2, 0x25, 8,
14362                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core1
14363                                                  [2]);
14364                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14365                                                  2, 0x29, 8,
14366                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core1
14367                                                  [4]);
14368                         break;
14369
14370                 default:
14371
14372                         ASSERT(0);
14373                         break;
14374                 }
14375
14376         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14377                 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14378
14379                         if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14380                                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14381                                     pi->srom_fem2g.antswctrllut : pi->
14382                                     srom_fem5g.antswctrllut;
14383                                 switch (antswctrllut) {
14384                                 case 0:
14385                                         wlc_phy_write_table_nphy(pi,
14386                                                                  &mimophytbl_info_rev3_volatile
14387                                                                  [idx]);
14388                                         break;
14389                                 case 1:
14390                                         wlc_phy_write_table_nphy(pi,
14391                                                                  &mimophytbl_info_rev3_volatile1
14392                                                                  [idx]);
14393                                         break;
14394                                 case 2:
14395                                         wlc_phy_write_table_nphy(pi,
14396                                                                  &mimophytbl_info_rev3_volatile2
14397                                                                  [idx]);
14398                                         break;
14399                                 case 3:
14400                                         wlc_phy_write_table_nphy(pi,
14401                                                                  &mimophytbl_info_rev3_volatile3
14402                                                                  [idx]);
14403                                         break;
14404                                 default:
14405
14406                                         ASSERT(0);
14407                                         break;
14408                                 }
14409                         } else {
14410                                 wlc_phy_write_table_nphy(pi,
14411                                                          &mimophytbl_info_rev3_volatile
14412                                                          [idx]);
14413                         }
14414                 }
14415         } else {
14416                 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++) {
14417                         wlc_phy_write_table_nphy(pi,
14418                                                  &mimophytbl_info_rev0_volatile
14419                                                  [idx]);
14420                 }
14421         }
14422 }
14423
14424 static void
14425 wlc_phy_write_txmacreg_nphy(phy_info_t *pi, u16 holdoff, u16 delay)
14426 {
14427         write_phy_reg(pi, 0x77, holdoff);
14428         write_phy_reg(pi, 0xb4, delay);
14429 }
14430
14431 void wlc_phy_nphy_tkip_rifs_war(phy_info_t *pi, u8 rifs)
14432 {
14433         u16 holdoff, delay;
14434
14435         if (rifs) {
14436
14437                 holdoff = 0x10;
14438                 delay = 0x258;
14439         } else {
14440
14441                 holdoff = 0x15;
14442                 delay = 0x320;
14443         }
14444
14445         wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14446
14447         if (pi && pi->sh && (pi->sh->_rifs_phy != rifs)) {
14448                 pi->sh->_rifs_phy = rifs;
14449         }
14450 }
14451
14452 bool wlc_phy_attach_nphy(phy_info_t *pi)
14453 {
14454         uint i;
14455
14456         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6)) {
14457                 pi->phyhang_avoid = true;
14458         }
14459
14460         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14461
14462                 pi->nphy_gband_spurwar_en = true;
14463
14464                 if (pi->sh->boardflags2 & BFL2_SPUR_WAR) {
14465                         pi->nphy_aband_spurwar_en = true;
14466                 }
14467         }
14468         if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14469
14470                 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR) {
14471                         pi->nphy_gband_spurwar2_en = true;
14472                 }
14473         }
14474
14475         pi->n_preamble_override = AUTO;
14476         if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14477                 pi->n_preamble_override = WLC_N_PREAMBLE_MIXEDMODE;
14478
14479         pi->nphy_txrx_chain = AUTO;
14480         pi->phy_scraminit = AUTO;
14481
14482         pi->nphy_rxcalparams = 0x010100B5;
14483
14484         pi->nphy_perical = PHY_PERICAL_MPHASE;
14485         pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14486         pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14487
14488         pi->nphy_gain_boost = true;
14489         pi->nphy_elna_gain_config = false;
14490         pi->radio_is_on = false;
14491
14492         for (i = 0; i < pi->pubpi.phy_corenum; i++) {
14493                 pi->nphy_txpwrindex[i].index = AUTO;
14494         }
14495
14496         wlc_phy_txpwrctrl_config_nphy(pi);
14497         if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14498                 pi->hwpwrctrl_capable = true;
14499
14500         pi->pi_fptr.init = wlc_phy_init_nphy;
14501         pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14502         pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14503         pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14504
14505         if (!wlc_phy_txpwr_srom_read_nphy(pi))
14506                 return false;
14507
14508         return true;
14509 }
14510
14511 static void wlc_phy_txpwrctrl_config_nphy(phy_info_t *pi)
14512 {
14513
14514         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14515                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14516                 pi->phy_5g_pwrgain = true;
14517                 return;
14518         }
14519
14520         pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14521         pi->phy_5g_pwrgain = false;
14522
14523         if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14524             NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14525                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14526         else if ((pi->sh->sromrev >= 4)
14527                  && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14528                 pi->phy_5g_pwrgain = true;
14529 }
14530
14531 void WLBANDINITFN(wlc_phy_init_nphy) (phy_info_t *pi)
14532 {
14533         u16 val;
14534         u16 clip1_ths[2];
14535         nphy_txgains_t target_gain;
14536         u8 tx_pwr_ctrl_state;
14537         bool do_nphy_cal = false;
14538         uint core;
14539         uint origidx, intr_val;
14540         d11regs_t *regs;
14541         u32 d11_clk_ctl_st;
14542
14543         core = 0;
14544
14545         if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN)) {
14546                 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
14547         }
14548
14549         if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
14550             ((pi->sh->chippkg == BCM4717_PKG_ID) ||
14551              (pi->sh->chippkg == BCM4718_PKG_ID))) {
14552                 if ((pi->sh->boardflags & BFL_EXTLNA) &&
14553                     (CHSPEC_IS2G(pi->radio_chanspec))) {
14554                         si_corereg(pi->sh->sih, SI_CC_IDX,
14555                                    offsetof(chipcregs_t, chipcontrol), 0x40,
14556                                    0x40);
14557                 }
14558         }
14559
14560         if ((!PHY_IPA(pi)) && (pi->sh->chip == BCM5357_CHIP_ID)) {
14561                 si_pmu_chipcontrol(pi->sh->sih, 1, CCTRL5357_EXTPA,
14562                                    CCTRL5357_EXTPA);
14563         }
14564
14565         if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
14566             CHSPEC_IS40(pi->radio_chanspec)) {
14567
14568                 regs = (d11regs_t *) si_switch_core(pi->sh->sih, D11_CORE_ID,
14569                                                     &origidx, &intr_val);
14570                 ASSERT(regs != NULL);
14571
14572                 d11_clk_ctl_st = R_REG(pi->sh->osh, &regs->clk_ctl_st);
14573                 AND_REG(pi->sh->osh, &regs->clk_ctl_st,
14574                         ~(CCS_FORCEHT | CCS_HTAREQ));
14575
14576                 W_REG(pi->sh->osh, &regs->clk_ctl_st, d11_clk_ctl_st);
14577
14578                 si_restore_core(pi->sh->sih, origidx, intr_val);
14579         }
14580
14581         pi->use_int_tx_iqlo_cal_nphy =
14582             (PHY_IPA(pi) ||
14583              (NREV_GE(pi->pubpi.phy_rev, 7) ||
14584               (NREV_GE(pi->pubpi.phy_rev, 5)
14585                && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
14586
14587         pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
14588
14589         pi->nphy_deaf_count = 0;
14590
14591         wlc_phy_tbl_init_nphy(pi);
14592
14593         pi->nphy_crsminpwr_adjusted = false;
14594         pi->nphy_noisevars_adjusted = false;
14595
14596         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14597                 write_phy_reg(pi, 0xe7, 0);
14598                 write_phy_reg(pi, 0xec, 0);
14599                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14600                         write_phy_reg(pi, 0x342, 0);
14601                         write_phy_reg(pi, 0x343, 0);
14602                         write_phy_reg(pi, 0x346, 0);
14603                         write_phy_reg(pi, 0x347, 0);
14604                 }
14605                 write_phy_reg(pi, 0xe5, 0);
14606                 write_phy_reg(pi, 0xe6, 0);
14607         } else {
14608                 write_phy_reg(pi, 0xec, 0);
14609         }
14610
14611         write_phy_reg(pi, 0x91, 0);
14612         write_phy_reg(pi, 0x92, 0);
14613         if (NREV_LT(pi->pubpi.phy_rev, 6)) {
14614                 write_phy_reg(pi, 0x93, 0);
14615                 write_phy_reg(pi, 0x94, 0);
14616         }
14617
14618         and_phy_reg(pi, 0xa1, ~3);
14619
14620         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14621                 write_phy_reg(pi, 0x8f, 0);
14622                 write_phy_reg(pi, 0xa5, 0);
14623         } else {
14624                 write_phy_reg(pi, 0xa5, 0);
14625         }
14626
14627         if (NREV_IS(pi->pubpi.phy_rev, 2))
14628                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
14629         else if (NREV_LT(pi->pubpi.phy_rev, 2))
14630                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
14631
14632         write_phy_reg(pi, 0x203, 32);
14633         write_phy_reg(pi, 0x201, 32);
14634
14635         if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
14636                 write_phy_reg(pi, 0x20d, 160);
14637         else
14638                 write_phy_reg(pi, 0x20d, 184);
14639
14640         write_phy_reg(pi, 0x13a, 200);
14641
14642         write_phy_reg(pi, 0x70, 80);
14643
14644         write_phy_reg(pi, 0x1ff, 48);
14645
14646         if (NREV_LT(pi->pubpi.phy_rev, 8)) {
14647                 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
14648         }
14649
14650         wlc_phy_stf_chain_upd_nphy(pi);
14651
14652         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
14653                 write_phy_reg(pi, 0x180, 0xaa8);
14654                 write_phy_reg(pi, 0x181, 0x9a4);
14655         }
14656
14657         if (PHY_IPA(pi)) {
14658                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
14659
14660                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
14661                                     0x29b, (0x1 << 0), (1) << 0);
14662
14663                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
14664                                     0x29c, (0x1ff << 7),
14665                                     (pi->nphy_papd_epsilon_offset[core]) << 7);
14666
14667                 }
14668
14669                 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
14670         } else {
14671
14672                 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
14673                         wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
14674                 }
14675         }
14676
14677         wlc_phy_workarounds_nphy(pi);
14678
14679         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
14680
14681         val = read_phy_reg(pi, 0x01);
14682         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
14683         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
14684         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
14685
14686         wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
14687
14688         wlc_phy_pa_override_nphy(pi, OFF);
14689         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
14690         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
14691         wlc_phy_pa_override_nphy(pi, ON);
14692
14693         wlc_phy_classifier_nphy(pi, 0, 0);
14694         wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
14695
14696         if (CHSPEC_IS2G(pi->radio_chanspec))
14697                 wlc_phy_bphy_init_nphy(pi);
14698
14699         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
14700         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
14701
14702         wlc_phy_txpwr_fixpower_nphy(pi);
14703
14704         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
14705
14706         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
14707
14708         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14709                 u32 *tx_pwrctrl_tbl = NULL;
14710                 u16 idx;
14711                 s16 pga_gn = 0;
14712                 s16 pad_gn = 0;
14713                 s32 rfpwr_offset = 0;
14714
14715                 if (PHY_IPA(pi)) {
14716                         tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
14717                 } else {
14718                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
14719                                 if NREV_IS
14720                                         (pi->pubpi.phy_rev, 3) {
14721                                         tx_pwrctrl_tbl =
14722                                             nphy_tpc_5GHz_txgain_rev3;
14723                                 } else if NREV_IS
14724                                         (pi->pubpi.phy_rev, 4) {
14725                                         tx_pwrctrl_tbl =
14726                                             (pi->srom_fem5g.extpagain == 3) ?
14727                                             nphy_tpc_5GHz_txgain_HiPwrEPA :
14728                                             nphy_tpc_5GHz_txgain_rev4;
14729                                 } else {
14730                                         tx_pwrctrl_tbl =
14731                                             nphy_tpc_5GHz_txgain_rev5;
14732                                 }
14733
14734                         } else {
14735                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14736                                         if (pi->pubpi.radiorev == 5) {
14737                                                 tx_pwrctrl_tbl =
14738                                                     nphy_tpc_txgain_epa_2057rev5;
14739                                         } else if (pi->pubpi.radiorev == 3) {
14740                                                 tx_pwrctrl_tbl =
14741                                                     nphy_tpc_txgain_epa_2057rev3;
14742                                         }
14743
14744                                 } else {
14745                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
14746                                             (pi->srom_fem2g.extpagain == 3)) {
14747                                                 tx_pwrctrl_tbl =
14748                                                     nphy_tpc_txgain_HiPwrEPA;
14749                                         } else {
14750                                                 tx_pwrctrl_tbl =
14751                                                     nphy_tpc_txgain_rev3;
14752                                         }
14753                                 }
14754                         }
14755                 }
14756
14757                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
14758                                          192, 32, tx_pwrctrl_tbl);
14759                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
14760                                          192, 32, tx_pwrctrl_tbl);
14761
14762                 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
14763
14764                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14765
14766                         for (idx = 0; idx < 128; idx++) {
14767                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
14768                                 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
14769
14770                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14771                                         if ((pi->pubpi.radiorev == 3) ||
14772                                             (pi->pubpi.radiorev == 4) ||
14773                                             (pi->pubpi.radiorev == 6)) {
14774                                                 rfpwr_offset = (s16)
14775                                                     nphy_papd_padgain_dlt_2g_2057rev3n4
14776                                                     [pad_gn];
14777                                         } else if (pi->pubpi.radiorev == 5) {
14778                                                 rfpwr_offset = (s16)
14779                                                     nphy_papd_padgain_dlt_2g_2057rev5
14780                                                     [pad_gn];
14781                                         } else if ((pi->pubpi.radiorev == 7)
14782                                                    || (pi->pubpi.radiorev ==
14783                                                        8)) {
14784                                                 rfpwr_offset = (s16)
14785                                                     nphy_papd_padgain_dlt_2g_2057rev7
14786                                                     [pad_gn];
14787                                         } else {
14788                                                 ASSERT(0);
14789                                         }
14790
14791                                 } else {
14792                                         if ((pi->pubpi.radiorev == 3) ||
14793                                             (pi->pubpi.radiorev == 4) ||
14794                                             (pi->pubpi.radiorev == 6)) {
14795                                                 rfpwr_offset = (s16)
14796                                                     nphy_papd_pgagain_dlt_5g_2057
14797                                                     [pga_gn];
14798                                         } else if ((pi->pubpi.radiorev == 7)
14799                                                    || (pi->pubpi.radiorev ==
14800                                                        8)) {
14801                                                 rfpwr_offset = (s16)
14802                                                     nphy_papd_pgagain_dlt_5g_2057rev7
14803                                                     [pga_gn];
14804                                         } else {
14805                                                 ASSERT(0);
14806                                         }
14807                                 }
14808                                 wlc_phy_table_write_nphy(pi,
14809                                                          NPHY_TBL_ID_CORE1TXPWRCTL,
14810                                                          1, 576 + idx, 32,
14811                                                          &rfpwr_offset);
14812                                 wlc_phy_table_write_nphy(pi,
14813                                                          NPHY_TBL_ID_CORE2TXPWRCTL,
14814                                                          1, 576 + idx, 32,
14815                                                          &rfpwr_offset);
14816                         }
14817                 } else {
14818
14819                         for (idx = 0; idx < 128; idx++) {
14820                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
14821                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14822                                         rfpwr_offset = (s16)
14823                                             nphy_papd_pga_gain_delta_ipa_2g
14824                                             [pga_gn];
14825                                 } else {
14826                                         rfpwr_offset = (s16)
14827                                             nphy_papd_pga_gain_delta_ipa_5g
14828                                             [pga_gn];
14829                                 }
14830
14831                                 wlc_phy_table_write_nphy(pi,
14832                                                          NPHY_TBL_ID_CORE1TXPWRCTL,
14833                                                          1, 576 + idx, 32,
14834                                                          &rfpwr_offset);
14835                                 wlc_phy_table_write_nphy(pi,
14836                                                          NPHY_TBL_ID_CORE2TXPWRCTL,
14837                                                          1, 576 + idx, 32,
14838                                                          &rfpwr_offset);
14839                         }
14840
14841                 }
14842         } else {
14843
14844                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
14845                                          192, 32, nphy_tpc_txgain);
14846                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
14847                                          192, 32, nphy_tpc_txgain);
14848         }
14849
14850         if (pi->sh->phyrxchain != 0x3) {
14851                 wlc_phy_rxcore_setstate_nphy((wlc_phy_t *) pi,
14852                                              pi->sh->phyrxchain);
14853         }
14854
14855         if (PHY_PERICAL_MPHASE_PENDING(pi)) {
14856                 wlc_phy_cal_perical_mphase_restart(pi);
14857         }
14858
14859         if (!NORADIO_ENAB(pi->pubpi)) {
14860                 bool do_rssi_cal = false;
14861
14862                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14863                         do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
14864                             (pi->nphy_rssical_chanspec_2G == 0) :
14865                             (pi->nphy_rssical_chanspec_5G == 0);
14866
14867                         if (do_rssi_cal) {
14868                                 wlc_phy_rssi_cal_nphy(pi);
14869                         } else {
14870                                 wlc_phy_restore_rssical_nphy(pi);
14871                         }
14872                 } else {
14873                         wlc_phy_rssi_cal_nphy(pi);
14874                 }
14875
14876                 if (!SCAN_RM_IN_PROGRESS(pi)) {
14877                         do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
14878                             (pi->nphy_iqcal_chanspec_2G == 0) :
14879                             (pi->nphy_iqcal_chanspec_5G == 0);
14880                 }
14881
14882                 if (!pi->do_initcal)
14883                         do_nphy_cal = false;
14884
14885                 if (do_nphy_cal) {
14886
14887                         target_gain = wlc_phy_get_tx_gain_nphy(pi);
14888
14889                         if (pi->antsel_type == ANTSEL_2x3)
14890                                 wlc_phy_antsel_init((wlc_phy_t *) pi, true);
14891
14892                         if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
14893                                 wlc_phy_rssi_cal_nphy(pi);
14894
14895                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14896                                         pi->nphy_cal_orig_pwr_idx[0] =
14897                                             pi->nphy_txpwrindex[PHY_CORE_0].
14898                                             index_internal;
14899                                         pi->nphy_cal_orig_pwr_idx[1] =
14900                                             pi->nphy_txpwrindex[PHY_CORE_1].
14901                                             index_internal;
14902
14903                                         wlc_phy_precal_txgain_nphy(pi);
14904                                         target_gain =
14905                                             wlc_phy_get_tx_gain_nphy(pi);
14906                                 }
14907
14908                                 if (wlc_phy_cal_txiqlo_nphy
14909                                     (pi, target_gain, true, false) == BCME_OK) {
14910                                         if (wlc_phy_cal_rxiq_nphy
14911                                             (pi, target_gain, 2,
14912                                              false) == BCME_OK) {
14913                                                 wlc_phy_savecal_nphy(pi);
14914
14915                                         }
14916                                 }
14917                         } else if (pi->mphase_cal_phase_id ==
14918                                    MPHASE_CAL_STATE_IDLE) {
14919
14920                                 wlc_phy_cal_perical((wlc_phy_t *) pi,
14921                                                     PHY_PERICAL_PHYINIT);
14922                         }
14923                 } else {
14924                         wlc_phy_restorecal_nphy(pi);
14925                 }
14926         }
14927
14928         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
14929
14930         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
14931
14932         wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
14933
14934         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
14935
14936                 write_phy_reg(pi, 0x70, 50);
14937
14938         wlc_phy_txlpfbw_nphy(pi);
14939
14940         wlc_phy_spurwar_nphy(pi);
14941
14942 }
14943
14944 static void wlc_phy_update_mimoconfig_nphy(phy_info_t *pi, s32 preamble)
14945 {
14946         bool gf_preamble = false;
14947         u16 val;
14948
14949         if (preamble == WLC_N_PREAMBLE_GF) {
14950                 gf_preamble = true;
14951         }
14952
14953         val = read_phy_reg(pi, 0xed);
14954
14955         val |= RX_GF_MM_AUTO;
14956         val &= ~RX_GF_OR_MM;
14957         if (gf_preamble)
14958                 val |= RX_GF_OR_MM;
14959
14960         write_phy_reg(pi, 0xed, val);
14961 }
14962
14963 static void wlc_phy_resetcca_nphy(phy_info_t *pi)
14964 {
14965         u16 val;
14966
14967         ASSERT(0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
14968
14969         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
14970
14971         val = read_phy_reg(pi, 0x01);
14972         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
14973         udelay(1);
14974         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
14975
14976         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
14977
14978         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
14979 }
14980
14981 void wlc_phy_pa_override_nphy(phy_info_t *pi, bool en)
14982 {
14983         u16 rfctrlintc_override_val;
14984
14985         if (!en) {
14986
14987                 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
14988                 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
14989
14990                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14991                         rfctrlintc_override_val = 0x1480;
14992                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14993                         rfctrlintc_override_val =
14994                             CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
14995                 } else {
14996                         rfctrlintc_override_val =
14997                             CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
14998                 }
14999
15000                 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
15001                 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
15002         } else {
15003
15004                 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
15005                 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
15006         }
15007
15008 }
15009
15010 void wlc_phy_stf_chain_upd_nphy(phy_info_t *pi)
15011 {
15012
15013         u16 txrx_chain =
15014             (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
15015         bool CoreActv_override = false;
15016
15017         if (pi->nphy_txrx_chain == WLC_N_TXRX_CHAIN0) {
15018                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
15019                 CoreActv_override = true;
15020
15021                 if (NREV_LE(pi->pubpi.phy_rev, 2)) {
15022                         and_phy_reg(pi, 0xa0, ~0x20);
15023                 }
15024         } else if (pi->nphy_txrx_chain == WLC_N_TXRX_CHAIN1) {
15025                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
15026                 CoreActv_override = true;
15027
15028                 if (NREV_LE(pi->pubpi.phy_rev, 2)) {
15029                         or_phy_reg(pi, 0xa0, 0x20);
15030                 }
15031         }
15032
15033         mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
15034
15035         if (CoreActv_override) {
15036
15037                 pi->nphy_perical = PHY_PERICAL_DISABLE;
15038                 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
15039         } else {
15040                 pi->nphy_perical = PHY_PERICAL_MPHASE;
15041                 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
15042         }
15043 }
15044
15045 void wlc_phy_rxcore_setstate_nphy(wlc_phy_t *pih, u8 rxcore_bitmask)
15046 {
15047         u16 regval;
15048         u16 tbl_buf[16];
15049         uint i;
15050         phy_info_t *pi = (phy_info_t *) pih;
15051         u16 tbl_opcode;
15052         bool suspend;
15053
15054         pi->sh->phyrxchain = rxcore_bitmask;
15055
15056         if (!pi->sh->clk)
15057                 return;
15058
15059         suspend =
15060             (0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
15061         if (!suspend)
15062                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
15063
15064         if (pi->phyhang_avoid)
15065                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15066
15067         regval = read_phy_reg(pi, 0xa2);
15068         regval &= ~(0xf << 4);
15069         regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
15070         write_phy_reg(pi, 0xa2, regval);
15071
15072         if ((rxcore_bitmask & 0x3) != 0x3) {
15073
15074                 write_phy_reg(pi, 0x20e, 1);
15075
15076                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15077                         if (pi->rx2tx_biasentry == -1) {
15078                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
15079                                                         ARRAY_SIZE(tbl_buf), 80,
15080                                                         16, tbl_buf);
15081
15082                                 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
15083                                         if (tbl_buf[i] ==
15084                                             NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
15085
15086                                                 pi->rx2tx_biasentry = (u8) i;
15087                                                 tbl_opcode =
15088                                                     NPHY_REV3_RFSEQ_CMD_NOP;
15089                                                 wlc_phy_table_write_nphy(pi,
15090                                                                          NPHY_TBL_ID_RFSEQ,
15091                                                                          1, i,
15092                                                                          16,
15093                                                                          &tbl_opcode);
15094                                                 break;
15095                                         } else if (tbl_buf[i] ==
15096                                                    NPHY_REV3_RFSEQ_CMD_END) {
15097                                                 break;
15098                                         }
15099                                 }
15100                         }
15101                 }
15102         } else {
15103
15104                 write_phy_reg(pi, 0x20e, 30);
15105
15106                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15107                         if (pi->rx2tx_biasentry != -1) {
15108                                 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
15109                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15110                                                          1, pi->rx2tx_biasentry,
15111                                                          16, &tbl_opcode);
15112                                 pi->rx2tx_biasentry = -1;
15113                         }
15114                 }
15115         }
15116
15117         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
15118
15119         if (pi->phyhang_avoid)
15120                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15121
15122         if (!suspend)
15123                 wlapi_enable_mac(pi->sh->physhim);
15124 }
15125
15126 u8 wlc_phy_rxcore_getstate_nphy(wlc_phy_t *pih)
15127 {
15128         u16 regval, rxen_bits;
15129         phy_info_t *pi = (phy_info_t *) pih;
15130
15131         regval = read_phy_reg(pi, 0xa2);
15132         rxen_bits = (regval >> 4) & 0xf;
15133
15134         return (u8) rxen_bits;
15135 }
15136
15137 bool wlc_phy_n_txpower_ipa_ison(phy_info_t *pi)
15138 {
15139         return PHY_IPA(pi);
15140 }
15141
15142 static void wlc_phy_txpwr_limit_to_tbl_nphy(phy_info_t *pi)
15143 {
15144         u8 idx, idx2, i, delta_ind;
15145
15146         for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++) {
15147                 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
15148         }
15149
15150         for (i = 0; i < 4; i++) {
15151                 idx2 = 0;
15152
15153                 delta_ind = 0;
15154
15155                 switch (i) {
15156                 case 0:
15157
15158                         if (CHSPEC_IS40(pi->radio_chanspec)
15159                             && NPHY_IS_SROM_REINTERPRET) {
15160                                 idx = TXP_FIRST_MCS_40_SISO;
15161                         } else {
15162                                 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15163                                     TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
15164                                 delta_ind = 1;
15165                         }
15166                         break;
15167
15168                 case 1:
15169
15170                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15171                             TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
15172                         break;
15173
15174                 case 2:
15175
15176                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15177                             TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
15178                         break;
15179
15180                 case 3:
15181
15182                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15183                             TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
15184                         break;
15185                 }
15186
15187                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15188                     pi->tx_power_offset[idx];
15189                 idx = idx + delta_ind;
15190                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15191                     pi->tx_power_offset[idx];
15192                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15193                     pi->tx_power_offset[idx];
15194                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15195                     pi->tx_power_offset[idx++];
15196
15197                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15198                     pi->tx_power_offset[idx++];
15199                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15200                     pi->tx_power_offset[idx];
15201                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15202                     pi->tx_power_offset[idx];
15203                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15204                     pi->tx_power_offset[idx++];
15205
15206                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15207                     pi->tx_power_offset[idx++];
15208                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15209                     pi->tx_power_offset[idx];
15210                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15211                     pi->tx_power_offset[idx];
15212                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15213                     pi->tx_power_offset[idx++];
15214
15215                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15216                     pi->tx_power_offset[idx];
15217                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15218                     pi->tx_power_offset[idx++];
15219                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15220                     pi->tx_power_offset[idx];
15221                 idx = idx + 1 - delta_ind;
15222                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15223                     pi->tx_power_offset[idx];
15224
15225                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15226                     pi->tx_power_offset[idx];
15227                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15228                     pi->tx_power_offset[idx];
15229                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15230                     pi->tx_power_offset[idx];
15231                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15232                     pi->tx_power_offset[idx];
15233         }
15234 }
15235
15236 void wlc_phy_cal_init_nphy(phy_info_t *pi)
15237 {
15238 }
15239
15240 static void wlc_phy_war_force_trsw_to_R_cliplo_nphy(phy_info_t *pi, u8 core)
15241 {
15242         if (core == PHY_CORE_0) {
15243                 write_phy_reg(pi, 0x38, 0x4);
15244                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15245                         write_phy_reg(pi, 0x37, 0x0060);
15246                 } else {
15247                         write_phy_reg(pi, 0x37, 0x1080);
15248                 }
15249         } else if (core == PHY_CORE_1) {
15250                 write_phy_reg(pi, 0x2ae, 0x4);
15251                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15252                         write_phy_reg(pi, 0x2ad, 0x0060);
15253                 } else {
15254                         write_phy_reg(pi, 0x2ad, 0x1080);
15255                 }
15256         }
15257 }
15258
15259 static void wlc_phy_war_txchain_upd_nphy(phy_info_t *pi, u8 txchain)
15260 {
15261         u8 txchain0, txchain1;
15262
15263         txchain0 = txchain & 0x1;
15264         txchain1 = (txchain & 0x2) >> 1;
15265         if (!txchain0) {
15266                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15267         }
15268
15269         if (!txchain1) {
15270                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15271         }
15272 }
15273
15274 static void wlc_phy_workarounds_nphy(phy_info_t *pi)
15275 {
15276         u8 rfseq_rx2tx_events[] = {
15277                 NPHY_RFSEQ_CMD_NOP,
15278                 NPHY_RFSEQ_CMD_RXG_FBW,
15279                 NPHY_RFSEQ_CMD_TR_SWITCH,
15280                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15281                 NPHY_RFSEQ_CMD_RXPD_TXPD,
15282                 NPHY_RFSEQ_CMD_TX_GAIN,
15283                 NPHY_RFSEQ_CMD_EXT_PA
15284         };
15285         u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
15286         u8 rfseq_tx2rx_events[] = {
15287                 NPHY_RFSEQ_CMD_NOP,
15288                 NPHY_RFSEQ_CMD_EXT_PA,
15289                 NPHY_RFSEQ_CMD_TX_GAIN,
15290                 NPHY_RFSEQ_CMD_RXPD_TXPD,
15291                 NPHY_RFSEQ_CMD_TR_SWITCH,
15292                 NPHY_RFSEQ_CMD_RXG_FBW,
15293                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
15294         };
15295         u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
15296         u8 rfseq_tx2rx_events_rev3[] = {
15297                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
15298                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15299                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15300                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15301                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15302                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15303                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15304                 NPHY_REV3_RFSEQ_CMD_END
15305         };
15306         u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
15307         u8 rfseq_rx2tx_events_rev3[] = {
15308                 NPHY_REV3_RFSEQ_CMD_NOP,
15309                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15310                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15311                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15312                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15313                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15314                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15315                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
15316                 NPHY_REV3_RFSEQ_CMD_END
15317         };
15318         u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
15319
15320         u8 rfseq_rx2tx_events_rev3_ipa[] = {
15321                 NPHY_REV3_RFSEQ_CMD_NOP,
15322                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15323                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15324                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15325                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15326                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15327                 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
15328                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15329                 NPHY_REV3_RFSEQ_CMD_END
15330         };
15331         u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
15332         u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
15333
15334         s16 alpha0, alpha1, alpha2;
15335         s16 beta0, beta1, beta2;
15336         u32 leg_data_weights, ht_data_weights, nss1_data_weights,
15337             stbc_data_weights;
15338         u8 chan_freq_range = 0;
15339         u16 dac_control = 0x0002;
15340         u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
15341         u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
15342         u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
15343         u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
15344         u16 *aux_adc_vmid;
15345         u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
15346         u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
15347         u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
15348         u16 *aux_adc_gain;
15349         u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
15350         u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
15351         s32 min_nvar_val = 0x18d;
15352         s32 min_nvar_offset_6mbps = 20;
15353         u8 pdetrange;
15354         u8 triso;
15355         u16 regval;
15356         u16 afectrl_adc_ctrl1_rev7 = 0x20;
15357         u16 afectrl_adc_ctrl2_rev7 = 0x0;
15358         u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
15359         u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
15360         u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
15361         u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
15362         u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
15363         u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
15364         u16 ipalvlshift_3p3_war_en = 0;
15365         u16 rccal_bcap_val, rccal_scap_val;
15366         u16 rccal_tx20_11b_bcap = 0;
15367         u16 rccal_tx20_11b_scap = 0;
15368         u16 rccal_tx20_11n_bcap = 0;
15369         u16 rccal_tx20_11n_scap = 0;
15370         u16 rccal_tx40_11n_bcap = 0;
15371         u16 rccal_tx40_11n_scap = 0;
15372         u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
15373         u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
15374         u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
15375         u16 tx_lpf_bw_ofdm_20mhz = 0;
15376         u16 tx_lpf_bw_ofdm_40mhz = 0;
15377         u16 tx_lpf_bw_11b = 0;
15378         u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
15379         u16 txgm_idac_bleed = 0;
15380         bool rccal_ovrd = false;
15381         u16 freq;
15382         int coreNum;
15383
15384         if (CHSPEC_IS5G(pi->radio_chanspec)) {
15385                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
15386         } else {
15387                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
15388         }
15389
15390         if (pi->phyhang_avoid)
15391                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15392
15393         if (!ISSIM_ENAB(pi->sh->sih)) {
15394                 or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
15395         }
15396
15397         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15398
15399                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
15400                         mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
15401
15402                         mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
15403                         mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
15404                         mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
15405                         mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
15406                         mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
15407                         mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
15408                         mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
15409                         mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
15410                         mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
15411                         mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
15412                         mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
15413                         mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
15414                         mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
15415                         mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
15416                         mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
15417                         mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
15418                 }
15419
15420                 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
15421                         write_phy_reg(pi, 0x23f, 0x1b0);
15422                         write_phy_reg(pi, 0x240, 0x1b0);
15423                 }
15424
15425                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
15426                         mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
15427                 }
15428
15429                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
15430                                          &dac_control);
15431                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
15432                                          &dac_control);
15433
15434                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15435                                         1, 0, 32, &leg_data_weights);
15436                 leg_data_weights = leg_data_weights & 0xffffff;
15437                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15438                                          1, 0, 32, &leg_data_weights);
15439
15440                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15441                                          2, 0x15e, 16,
15442                                          rfseq_rx2tx_dacbufpu_rev7);
15443                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
15444                                          rfseq_rx2tx_dacbufpu_rev7);
15445
15446                 if (PHY_IPA(pi)) {
15447                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15448                                                rfseq_rx2tx_events_rev3_ipa,
15449                                                rfseq_rx2tx_dlys_rev3_ipa,
15450                                                sizeof
15451                                                (rfseq_rx2tx_events_rev3_ipa) /
15452                                                sizeof
15453                                                (rfseq_rx2tx_events_rev3_ipa
15454                                                 [0]));
15455                 }
15456
15457                 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
15458                 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
15459
15460                 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
15461                 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
15462                 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
15463
15464                 if (PHY_IPA(pi)) {
15465
15466                         if (((pi->pubpi.radiorev == 5)
15467                              && (CHSPEC_IS40(pi->radio_chanspec) == 1))
15468                             || (pi->pubpi.radiorev == 7)
15469                             || (pi->pubpi.radiorev == 8)) {
15470
15471                                 rccal_bcap_val =
15472                                     read_radio_reg(pi,
15473                                                    RADIO_2057_RCCAL_BCAP_VAL);
15474                                 rccal_scap_val =
15475                                     read_radio_reg(pi,
15476                                                    RADIO_2057_RCCAL_SCAP_VAL);
15477
15478                                 rccal_tx20_11b_bcap = rccal_bcap_val;
15479                                 rccal_tx20_11b_scap = rccal_scap_val;
15480
15481                                 if ((pi->pubpi.radiorev == 5) &&
15482                                     (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
15483
15484                                         rccal_tx20_11n_bcap = rccal_bcap_val;
15485                                         rccal_tx20_11n_scap = rccal_scap_val;
15486                                         rccal_tx40_11n_bcap = 0xc;
15487                                         rccal_tx40_11n_scap = 0xc;
15488
15489                                         rccal_ovrd = true;
15490
15491                                 } else if ((pi->pubpi.radiorev == 7)
15492                                            || (pi->pubpi.radiorev == 8)) {
15493
15494                                         tx_lpf_bw_ofdm_20mhz = 4;
15495                                         tx_lpf_bw_11b = 1;
15496
15497                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15498                                                 rccal_tx20_11n_bcap = 0xc;
15499                                                 rccal_tx20_11n_scap = 0xc;
15500                                                 rccal_tx40_11n_bcap = 0xa;
15501                                                 rccal_tx40_11n_scap = 0xa;
15502                                         } else {
15503                                                 rccal_tx20_11n_bcap = 0x14;
15504                                                 rccal_tx20_11n_scap = 0x14;
15505                                                 rccal_tx40_11n_bcap = 0xf;
15506                                                 rccal_tx40_11n_scap = 0xf;
15507                                         }
15508
15509                                         rccal_ovrd = true;
15510                                 }
15511                         }
15512
15513                 } else {
15514
15515                         if (pi->pubpi.radiorev == 5) {
15516
15517                                 tx_lpf_bw_ofdm_20mhz = 1;
15518                                 tx_lpf_bw_ofdm_40mhz = 3;
15519
15520                                 rccal_bcap_val =
15521                                     read_radio_reg(pi,
15522                                                    RADIO_2057_RCCAL_BCAP_VAL);
15523                                 rccal_scap_val =
15524                                     read_radio_reg(pi,
15525                                                    RADIO_2057_RCCAL_SCAP_VAL);
15526
15527                                 rccal_tx20_11b_bcap = rccal_bcap_val;
15528                                 rccal_tx20_11b_scap = rccal_scap_val;
15529
15530                                 rccal_tx20_11n_bcap = 0x13;
15531                                 rccal_tx20_11n_scap = 0x11;
15532                                 rccal_tx40_11n_bcap = 0x13;
15533                                 rccal_tx40_11n_scap = 0x11;
15534
15535                                 rccal_ovrd = true;
15536                         }
15537                 }
15538
15539                 if (rccal_ovrd) {
15540
15541                         rx2tx_lpf_rc_lut_tx20_11b = (rccal_tx20_11b_bcap << 8) |
15542                             (rccal_tx20_11b_scap << 3) | tx_lpf_bw_11b;
15543                         rx2tx_lpf_rc_lut_tx20_11n = (rccal_tx20_11n_bcap << 8) |
15544                             (rccal_tx20_11n_scap << 3) | tx_lpf_bw_ofdm_20mhz;
15545                         rx2tx_lpf_rc_lut_tx40_11n = (rccal_tx40_11n_bcap << 8) |
15546                             (rccal_tx40_11n_scap << 3) | tx_lpf_bw_ofdm_40mhz;
15547
15548                         for (coreNum = 0; coreNum <= 1; coreNum++) {
15549                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15550                                                          1,
15551                                                          0x152 + coreNum * 0x10,
15552                                                          16,
15553                                                          &rx2tx_lpf_rc_lut_tx20_11b);
15554                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15555                                                          1,
15556                                                          0x153 + coreNum * 0x10,
15557                                                          16,
15558                                                          &rx2tx_lpf_rc_lut_tx20_11n);
15559                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15560                                                          1,
15561                                                          0x154 + coreNum * 0x10,
15562                                                          16,
15563                                                          &rx2tx_lpf_rc_lut_tx20_11n);
15564                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15565                                                          1,
15566                                                          0x155 + coreNum * 0x10,
15567                                                          16,
15568                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15569                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15570                                                          1,
15571                                                          0x156 + coreNum * 0x10,
15572                                                          16,
15573                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15574                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15575                                                          1,
15576                                                          0x157 + coreNum * 0x10,
15577                                                          16,
15578                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15579                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15580                                                          1,
15581                                                          0x158 + coreNum * 0x10,
15582                                                          16,
15583                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15584                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15585                                                          1,
15586                                                          0x159 + coreNum * 0x10,
15587                                                          16,
15588                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15589                         }
15590
15591                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4),
15592                                                           1, 0x3, 0,
15593                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
15594                 }
15595
15596                 if (!NORADIO_ENAB(pi->pubpi)) {
15597                         write_phy_reg(pi, 0x32f, 0x3);
15598                 }
15599
15600                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6)) {
15601                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
15602                                                           1, 0x3, 0,
15603                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
15604                 }
15605
15606                 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
15607                     (pi->pubpi.radiorev == 6)) {
15608                         if ((pi->sh->sromrev >= 8)
15609                             && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
15610                                 ipalvlshift_3p3_war_en = 1;
15611
15612                         if (ipalvlshift_3p3_war_en) {
15613                                 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
15614                                                 0x5);
15615                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
15616                                                 0x30);
15617                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
15618                                 or_radio_reg(pi,
15619                                              RADIO_2057_RXTXBIAS_CONFIG_CORE0,
15620                                              0x1);
15621                                 or_radio_reg(pi,
15622                                              RADIO_2057_RXTXBIAS_CONFIG_CORE1,
15623                                              0x1);
15624
15625                                 ipa2g_mainbias = 0x1f;
15626
15627                                 ipa2g_casconv = 0x6f;
15628
15629                                 ipa2g_biasfilt = 0xaa;
15630                         } else {
15631
15632                                 ipa2g_mainbias = 0x2b;
15633
15634                                 ipa2g_casconv = 0x7f;
15635
15636                                 ipa2g_biasfilt = 0xee;
15637                         }
15638
15639                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15640                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15641                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15642                                                          coreNum, IPA2G_IMAIN,
15643                                                          ipa2g_mainbias);
15644                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15645                                                          coreNum, IPA2G_CASCONV,
15646                                                          ipa2g_casconv);
15647                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15648                                                          coreNum,
15649                                                          IPA2G_BIAS_FILTER,
15650                                                          ipa2g_biasfilt);
15651                                 }
15652                         }
15653                 }
15654
15655                 if (PHY_IPA(pi)) {
15656                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15657                                 if ((pi->pubpi.radiorev == 3)
15658                                     || (pi->pubpi.radiorev == 4)
15659                                     || (pi->pubpi.radiorev == 6)) {
15660
15661                                         txgm_idac_bleed = 0x7f;
15662                                 }
15663
15664                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15665                                         if (txgm_idac_bleed != 0)
15666                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15667                                                                  CORE, coreNum,
15668                                                                  TXGM_IDAC_BLEED,
15669                                                                  txgm_idac_bleed);
15670                                 }
15671
15672                                 if (pi->pubpi.radiorev == 5) {
15673
15674                                         for (coreNum = 0; coreNum <= 1;
15675                                              coreNum++) {
15676                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15677                                                                  CORE, coreNum,
15678                                                                  IPA2G_CASCONV,
15679                                                                  0x13);
15680                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15681                                                                  CORE, coreNum,
15682                                                                  IPA2G_IMAIN,
15683                                                                  0x1f);
15684                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15685                                                                  CORE, coreNum,
15686                                                                  IPA2G_BIAS_FILTER,
15687                                                                  0xee);
15688                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15689                                                                  CORE, coreNum,
15690                                                                  PAD2G_IDACS,
15691                                                                  0x8a);
15692                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15693                                                                  CORE, coreNum,
15694                                                                  PAD_BIAS_FILTER_BWS,
15695                                                                  0x3e);
15696                                         }
15697
15698                                 } else if ((pi->pubpi.radiorev == 7)
15699                                            || (pi->pubpi.radiorev == 8)) {
15700
15701                                         if (CHSPEC_IS40(pi->radio_chanspec) ==
15702                                             0) {
15703                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15704                                                                  CORE, 0,
15705                                                                  IPA2G_IMAIN,
15706                                                                  0x14);
15707                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15708                                                                  CORE, 1,
15709                                                                  IPA2G_IMAIN,
15710                                                                  0x12);
15711                                         } else {
15712                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15713                                                                  CORE, 0,
15714                                                                  IPA2G_IMAIN,
15715                                                                  0x16);
15716                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15717                                                                  CORE, 1,
15718                                                                  IPA2G_IMAIN,
15719                                                                  0x16);
15720                                         }
15721                                 }
15722
15723                         } else {
15724                                 freq =
15725                                     CHAN5G_FREQ(CHSPEC_CHANNEL
15726                                                 (pi->radio_chanspec));
15727                                 if (((freq >= 5180) && (freq <= 5230))
15728                                     || ((freq >= 5745) && (freq <= 5805))) {
15729                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15730                                                          0, IPA5G_BIAS_FILTER,
15731                                                          0xff);
15732                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15733                                                          1, IPA5G_BIAS_FILTER,
15734                                                          0xff);
15735                                 }
15736                         }
15737                 } else {
15738
15739                         if (pi->pubpi.radiorev != 5) {
15740                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15741                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15742                                                          coreNum,
15743                                                          TXMIX2G_TUNE_BOOST_PU,
15744                                                          0x61);
15745                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15746                                                          coreNum,
15747                                                          TXGM_IDAC_BLEED, 0x70);
15748                                 }
15749                         }
15750                 }
15751
15752                 if (pi->pubpi.radiorev == 4) {
15753                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15754                                                  0x05, 16,
15755                                                  &afectrl_adc_ctrl1_rev7);
15756                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15757                                                  0x15, 16,
15758                                                  &afectrl_adc_ctrl1_rev7);
15759
15760                         for (coreNum = 0; coreNum <= 1; coreNum++) {
15761                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15762                                                  AFE_VCM_CAL_MASTER, 0x0);
15763                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15764                                                  AFE_SET_VCM_I, 0x3f);
15765                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15766                                                  AFE_SET_VCM_Q, 0x3f);
15767                         }
15768                 } else {
15769                         mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
15770                         mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
15771                         mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
15772                         mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
15773
15774                         mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
15775                         mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
15776                         mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
15777                         mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
15778
15779                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15780                                                  0x05, 16,
15781                                                  &afectrl_adc_ctrl2_rev7);
15782                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15783                                                  0x15, 16,
15784                                                  &afectrl_adc_ctrl2_rev7);
15785
15786                         mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
15787                         mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
15788                         mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
15789                         mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
15790                 }
15791
15792                 write_phy_reg(pi, 0x6a, 0x2);
15793
15794                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
15795                                          &min_nvar_offset_6mbps);
15796
15797                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
15798                                          &rfseq_pktgn_lpf_hpc_rev7);
15799
15800                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
15801                                          &rfseq_pktgn_lpf_h_hpc_rev7);
15802
15803                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
15804                                          &rfseq_htpktgn_lpf_hpc_rev7);
15805
15806                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
15807                                          &rfseq_cckpktgn_lpf_hpc_rev7);
15808
15809                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
15810                                          &rfseq_tx2rx_lpf_h_hpc_rev7);
15811
15812                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
15813                                          &rfseq_rx2tx_lpf_h_hpc_rev7);
15814
15815                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
15816                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15817                                                  32, &min_nvar_val);
15818                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15819                                                  127, 32, &min_nvar_val);
15820                 } else {
15821                         min_nvar_val = noise_var_tbl_rev7[3];
15822                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15823                                                  32, &min_nvar_val);
15824
15825                         min_nvar_val = noise_var_tbl_rev7[127];
15826                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15827                                                  127, 32, &min_nvar_val);
15828                 }
15829
15830                 wlc_phy_workarounds_nphy_gainctrl(pi);
15831
15832                 pdetrange =
15833                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
15834                     pdetrange : pi->srom_fem2g.pdetrange;
15835
15836                 if (pdetrange == 0) {
15837                         chan_freq_range =
15838                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
15839                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15840                                 aux_adc_vmid_rev7_core0[3] = 0x70;
15841                                 aux_adc_vmid_rev7_core1[3] = 0x70;
15842                                 aux_adc_gain_rev7[3] = 2;
15843                         } else {
15844                                 aux_adc_vmid_rev7_core0[3] = 0x80;
15845                                 aux_adc_vmid_rev7_core1[3] = 0x80;
15846                                 aux_adc_gain_rev7[3] = 3;
15847                         }
15848                 } else if (pdetrange == 1) {
15849                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15850                                 aux_adc_vmid_rev7_core0[3] = 0x7c;
15851                                 aux_adc_vmid_rev7_core1[3] = 0x7c;
15852                                 aux_adc_gain_rev7[3] = 2;
15853                         } else {
15854                                 aux_adc_vmid_rev7_core0[3] = 0x8c;
15855                                 aux_adc_vmid_rev7_core1[3] = 0x8c;
15856                                 aux_adc_gain_rev7[3] = 1;
15857                         }
15858                 } else if (pdetrange == 2) {
15859                         if (pi->pubpi.radioid == BCM2057_ID) {
15860                                 if ((pi->pubpi.radiorev == 5)
15861                                     || (pi->pubpi.radiorev == 7)
15862                                     || (pi->pubpi.radiorev == 8)) {
15863                                         if (chan_freq_range ==
15864                                             WL_CHAN_FREQ_RANGE_2G) {
15865                                                 aux_adc_vmid_rev7_core0[3] =
15866                                                     0x8c;
15867                                                 aux_adc_vmid_rev7_core1[3] =
15868                                                     0x8c;
15869                                                 aux_adc_gain_rev7[3] = 0;
15870                                         } else {
15871                                                 aux_adc_vmid_rev7_core0[3] =
15872                                                     0x96;
15873                                                 aux_adc_vmid_rev7_core1[3] =
15874                                                     0x96;
15875                                                 aux_adc_gain_rev7[3] = 0;
15876                                         }
15877                                 }
15878                         }
15879
15880                 } else if (pdetrange == 3) {
15881                         if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
15882                                 aux_adc_vmid_rev7_core0[3] = 0x89;
15883                                 aux_adc_vmid_rev7_core1[3] = 0x89;
15884                                 aux_adc_gain_rev7[3] = 0;
15885                         }
15886
15887                 } else if (pdetrange == 5) {
15888
15889                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15890                                 aux_adc_vmid_rev7_core0[3] = 0x80;
15891                                 aux_adc_vmid_rev7_core1[3] = 0x80;
15892                                 aux_adc_gain_rev7[3] = 3;
15893                         } else {
15894                                 aux_adc_vmid_rev7_core0[3] = 0x70;
15895                                 aux_adc_vmid_rev7_core1[3] = 0x70;
15896                                 aux_adc_gain_rev7[3] = 2;
15897                         }
15898                 }
15899
15900                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
15901                                          &aux_adc_vmid_rev7_core0);
15902                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
15903                                          &aux_adc_vmid_rev7_core1);
15904                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
15905                                          &aux_adc_gain_rev7);
15906                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
15907                                          &aux_adc_gain_rev7);
15908
15909         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15910
15911                 write_phy_reg(pi, 0x23f, 0x1f8);
15912                 write_phy_reg(pi, 0x240, 0x1f8);
15913
15914                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15915                                         1, 0, 32, &leg_data_weights);
15916                 leg_data_weights = leg_data_weights & 0xffffff;
15917                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15918                                          1, 0, 32, &leg_data_weights);
15919
15920                 alpha0 = 293;
15921                 alpha1 = 435;
15922                 alpha2 = 261;
15923                 beta0 = 366;
15924                 beta1 = 205;
15925                 beta2 = 32;
15926                 write_phy_reg(pi, 0x145, alpha0);
15927                 write_phy_reg(pi, 0x146, alpha1);
15928                 write_phy_reg(pi, 0x147, alpha2);
15929                 write_phy_reg(pi, 0x148, beta0);
15930                 write_phy_reg(pi, 0x149, beta1);
15931                 write_phy_reg(pi, 0x14a, beta2);
15932
15933                 write_phy_reg(pi, 0x38, 0xC);
15934                 write_phy_reg(pi, 0x2ae, 0xC);
15935
15936                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
15937                                        rfseq_tx2rx_events_rev3,
15938                                        rfseq_tx2rx_dlys_rev3,
15939                                        sizeof(rfseq_tx2rx_events_rev3) /
15940                                        sizeof(rfseq_tx2rx_events_rev3[0]));
15941
15942                 if (PHY_IPA(pi)) {
15943                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15944                                                rfseq_rx2tx_events_rev3_ipa,
15945                                                rfseq_rx2tx_dlys_rev3_ipa,
15946                                                sizeof
15947                                                (rfseq_rx2tx_events_rev3_ipa) /
15948                                                sizeof
15949                                                (rfseq_rx2tx_events_rev3_ipa
15950                                                 [0]));
15951                 }
15952
15953                 if ((pi->sh->hw_phyrxchain != 0x3) &&
15954                     (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
15955
15956                         if (PHY_IPA(pi)) {
15957                                 rfseq_rx2tx_dlys_rev3[5] = 59;
15958                                 rfseq_rx2tx_dlys_rev3[6] = 1;
15959                                 rfseq_rx2tx_events_rev3[7] =
15960                                     NPHY_REV3_RFSEQ_CMD_END;
15961                         }
15962
15963                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15964                                                rfseq_rx2tx_events_rev3,
15965                                                rfseq_rx2tx_dlys_rev3,
15966                                                sizeof(rfseq_rx2tx_events_rev3) /
15967                                                sizeof(rfseq_rx2tx_events_rev3
15968                                                       [0]));
15969                 }
15970
15971                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15972                         write_phy_reg(pi, 0x6a, 0x2);
15973                 } else {
15974                         write_phy_reg(pi, 0x6a, 0x9c40);
15975                 }
15976
15977                 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
15978
15979                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
15980                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15981                                                  32, &min_nvar_val);
15982                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15983                                                  127, 32, &min_nvar_val);
15984                 } else {
15985                         min_nvar_val = noise_var_tbl_rev3[3];
15986                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15987                                                  32, &min_nvar_val);
15988
15989                         min_nvar_val = noise_var_tbl_rev3[127];
15990                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15991                                                  127, 32, &min_nvar_val);
15992                 }
15993
15994                 wlc_phy_workarounds_nphy_gainctrl(pi);
15995
15996                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
15997                                          &dac_control);
15998                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
15999                                          &dac_control);
16000
16001                 pdetrange =
16002                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16003                     pdetrange : pi->srom_fem2g.pdetrange;
16004
16005                 if (pdetrange == 0) {
16006                         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16007                                 aux_adc_vmid = aux_adc_vmid_rev4;
16008                                 aux_adc_gain = aux_adc_gain_rev4;
16009                         } else {
16010                                 aux_adc_vmid = aux_adc_vmid_rev3;
16011                                 aux_adc_gain = aux_adc_gain_rev3;
16012                         }
16013                         chan_freq_range =
16014                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16015                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16016                                 switch (chan_freq_range) {
16017                                 case WL_CHAN_FREQ_RANGE_5GL:
16018                                         aux_adc_vmid[3] = 0x89;
16019                                         aux_adc_gain[3] = 0;
16020                                         break;
16021                                 case WL_CHAN_FREQ_RANGE_5GM:
16022                                         aux_adc_vmid[3] = 0x89;
16023                                         aux_adc_gain[3] = 0;
16024                                         break;
16025                                 case WL_CHAN_FREQ_RANGE_5GH:
16026                                         aux_adc_vmid[3] = 0x89;
16027                                         aux_adc_gain[3] = 0;
16028                                         break;
16029                                 default:
16030                                         break;
16031                                 }
16032                         }
16033                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16034                                                  0x08, 16, aux_adc_vmid);
16035                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16036                                                  0x18, 16, aux_adc_vmid);
16037                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16038                                                  0x0c, 16, aux_adc_gain);
16039                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16040                                                  0x1c, 16, aux_adc_gain);
16041                 } else if (pdetrange == 1) {
16042                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16043                                                  0x08, 16, sk_adc_vmid);
16044                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16045                                                  0x18, 16, sk_adc_vmid);
16046                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16047                                                  0x0c, 16, sk_adc_gain);
16048                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16049                                                  0x1c, 16, sk_adc_gain);
16050                 } else if (pdetrange == 2) {
16051
16052                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16053                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16054
16055                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16056                                 chan_freq_range =
16057                                     wlc_phy_get_chan_freq_range_nphy(pi, 0);
16058                                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16059                                         bcm_adc_vmid[3] = 0x8e;
16060                                         bcm_adc_gain[3] = 0x03;
16061                                 } else {
16062                                         bcm_adc_vmid[3] = 0x94;
16063                                         bcm_adc_gain[3] = 0x03;
16064                                 }
16065                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16066                                 bcm_adc_vmid[3] = 0x84;
16067                                 bcm_adc_gain[3] = 0x02;
16068                         }
16069
16070                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16071                                                  0x08, 16, bcm_adc_vmid);
16072                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16073                                                  0x18, 16, bcm_adc_vmid);
16074                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16075                                                  0x0c, 16, bcm_adc_gain);
16076                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16077                                                  0x1c, 16, bcm_adc_gain);
16078                 } else if (pdetrange == 3) {
16079                         chan_freq_range =
16080                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16081                         if ((NREV_GE(pi->pubpi.phy_rev, 4))
16082                             && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16083
16084                                 u16 auxadc_vmid[] = {
16085                                         0xa2, 0xb4, 0xb4, 0x270 };
16086                                 u16 auxadc_gain[] = {
16087                                         0x02, 0x02, 0x02, 0x00 };
16088
16089                                 wlc_phy_table_write_nphy(pi,
16090                                                          NPHY_TBL_ID_AFECTRL, 4,
16091                                                          0x08, 16, auxadc_vmid);
16092                                 wlc_phy_table_write_nphy(pi,
16093                                                          NPHY_TBL_ID_AFECTRL, 4,
16094                                                          0x18, 16, auxadc_vmid);
16095                                 wlc_phy_table_write_nphy(pi,
16096                                                          NPHY_TBL_ID_AFECTRL, 4,
16097                                                          0x0c, 16, auxadc_gain);
16098                                 wlc_phy_table_write_nphy(pi,
16099                                                          NPHY_TBL_ID_AFECTRL, 4,
16100                                                          0x1c, 16, auxadc_gain);
16101                         }
16102                 } else if ((pdetrange == 4) || (pdetrange == 5)) {
16103                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16104                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16105                         u16 Vmid[2], Av[2];
16106
16107                         chan_freq_range =
16108                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16109                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16110                                 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16111                                 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16112                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16113                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16114                         } else {
16115                                 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16116                                 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16117                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16118                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16119                         }
16120
16121                         bcm_adc_vmid[3] = Vmid[0];
16122                         bcm_adc_gain[3] = Av[0];
16123                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16124                                                  0x08, 16, bcm_adc_vmid);
16125                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16126                                                  0x0c, 16, bcm_adc_gain);
16127
16128                         bcm_adc_vmid[3] = Vmid[1];
16129                         bcm_adc_gain[3] = Av[1];
16130                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16131                                                  0x18, 16, bcm_adc_vmid);
16132                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16133                                                  0x1c, 16, bcm_adc_gain);
16134                 } else {
16135                         ASSERT(0);
16136                 }
16137
16138                 write_radio_reg(pi,
16139                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
16140                                 0x0);
16141                 write_radio_reg(pi,
16142                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
16143                                 0x0);
16144
16145                 write_radio_reg(pi,
16146                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
16147                                 0x6);
16148                 write_radio_reg(pi,
16149                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
16150                                 0x6);
16151
16152                 write_radio_reg(pi,
16153                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
16154                                 0x7);
16155                 write_radio_reg(pi,
16156                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
16157                                 0x7);
16158
16159                 write_radio_reg(pi,
16160                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
16161                                 0x88);
16162                 write_radio_reg(pi,
16163                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
16164                                 0x88);
16165
16166                 write_radio_reg(pi,
16167                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
16168                                 0x0);
16169                 write_radio_reg(pi,
16170                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
16171                                 0x0);
16172
16173                 write_radio_reg(pi,
16174                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
16175                                 0x0);
16176                 write_radio_reg(pi,
16177                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
16178                                 0x0);
16179
16180                 triso =
16181                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16182                     triso : pi->srom_fem2g.triso;
16183                 if (triso == 7) {
16184                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16185                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16186                 }
16187
16188                 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16189
16190                 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16191                      (CHSPEC_IS5G(pi->radio_chanspec))) ||
16192                     (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16193                       (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16194                      (CHSPEC_IS2G(pi->radio_chanspec)))) {
16195                         nss1_data_weights = 0x00088888;
16196                         ht_data_weights = 0x00088888;
16197                         stbc_data_weights = 0x00088888;
16198                 } else {
16199                         nss1_data_weights = 0x88888888;
16200                         ht_data_weights = 0x88888888;
16201                         stbc_data_weights = 0x88888888;
16202                 }
16203                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16204                                          1, 1, 32, &nss1_data_weights);
16205                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16206                                          1, 2, 32, &ht_data_weights);
16207                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16208                                          1, 3, 32, &stbc_data_weights);
16209
16210                 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16211                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
16212                                 write_radio_reg(pi,
16213                                                 RADIO_2056_TX_GMBB_IDAC |
16214                                                 RADIO_2056_TX0, 0x70);
16215                                 write_radio_reg(pi,
16216                                                 RADIO_2056_TX_GMBB_IDAC |
16217                                                 RADIO_2056_TX1, 0x70);
16218                         }
16219                 }
16220
16221                 if (!pi->edcrs_threshold_lock) {
16222                         write_phy_reg(pi, 0x224, 0x3eb);
16223                         write_phy_reg(pi, 0x225, 0x3eb);
16224                         write_phy_reg(pi, 0x226, 0x341);
16225                         write_phy_reg(pi, 0x227, 0x341);
16226                         write_phy_reg(pi, 0x228, 0x42b);
16227                         write_phy_reg(pi, 0x229, 0x42b);
16228                         write_phy_reg(pi, 0x22a, 0x381);
16229                         write_phy_reg(pi, 0x22b, 0x381);
16230                         write_phy_reg(pi, 0x22c, 0x42b);
16231                         write_phy_reg(pi, 0x22d, 0x42b);
16232                         write_phy_reg(pi, 0x22e, 0x381);
16233                         write_phy_reg(pi, 0x22f, 0x381);
16234                 }
16235
16236                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16237
16238                         if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK) {
16239                                 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
16240                                                MHF4_BPHY_TXCORE0,
16241                                                MHF4_BPHY_TXCORE0, WLC_BAND_ALL);
16242                         }
16243                 }
16244         } else {
16245
16246                 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
16247                     (pi->sh->boardtype == 0x8b)) {
16248                         uint i;
16249                         u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
16250                         for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
16251                                 rfseq_rx2tx_dlys[i] = war_dlys[i];
16252                 }
16253
16254                 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
16255                         and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
16256                         and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
16257                 } else {
16258                         or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
16259                         or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
16260                 }
16261
16262                 regval = 0x000a;
16263                 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
16264                 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
16265
16266                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16267                         regval = 0xcdaa;
16268                         wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
16269                         wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
16270                 }
16271
16272                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16273                         regval = 0x0000;
16274                         wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
16275                         wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
16276
16277                         regval = 0x7aab;
16278                         wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
16279                         wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
16280
16281                         regval = 0x0800;
16282                         wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
16283                         wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
16284                 }
16285
16286                 write_phy_reg(pi, 0xf8, 0x02d8);
16287                 write_phy_reg(pi, 0xf9, 0x0301);
16288                 write_phy_reg(pi, 0xfa, 0x02d8);
16289                 write_phy_reg(pi, 0xfb, 0x0301);
16290
16291                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
16292                                        rfseq_rx2tx_dlys,
16293                                        sizeof(rfseq_rx2tx_events) /
16294                                        sizeof(rfseq_rx2tx_events[0]));
16295
16296                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
16297                                        rfseq_tx2rx_dlys,
16298                                        sizeof(rfseq_tx2rx_events) /
16299                                        sizeof(rfseq_tx2rx_events[0]));
16300
16301                 wlc_phy_workarounds_nphy_gainctrl(pi);
16302
16303                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16304
16305                         if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
16306                                 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
16307                                                MHF3_NPHY_MLADV_WAR,
16308                                                MHF3_NPHY_MLADV_WAR,
16309                                                WLC_BAND_ALL);
16310
16311                 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16312                         write_phy_reg(pi, 0x1e3, 0x0);
16313                         write_phy_reg(pi, 0x1e4, 0x0);
16314                 }
16315
16316                 if (NREV_LT(pi->pubpi.phy_rev, 2))
16317                         mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
16318
16319                 alpha0 = 293;
16320                 alpha1 = 435;
16321                 alpha2 = 261;
16322                 beta0 = 366;
16323                 beta1 = 205;
16324                 beta2 = 32;
16325                 write_phy_reg(pi, 0x145, alpha0);
16326                 write_phy_reg(pi, 0x146, alpha1);
16327                 write_phy_reg(pi, 0x147, alpha2);
16328                 write_phy_reg(pi, 0x148, beta0);
16329                 write_phy_reg(pi, 0x149, beta1);
16330                 write_phy_reg(pi, 0x14a, beta2);
16331
16332                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16333                         mod_phy_reg(pi, 0x142, (0xf << 12), 0);
16334
16335                         write_phy_reg(pi, 0x192, 0xb5);
16336                         write_phy_reg(pi, 0x193, 0xa4);
16337                         write_phy_reg(pi, 0x194, 0x0);
16338                 }
16339
16340                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16341                         mod_phy_reg(pi, 0x221,
16342                                     NPHY_FORCESIG_DECODEGATEDCLKS,
16343                                     NPHY_FORCESIG_DECODEGATEDCLKS);
16344                 }
16345         }
16346
16347         if (pi->phyhang_avoid)
16348                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
16349 }
16350
16351 static void wlc_phy_workarounds_nphy_gainctrl(phy_info_t *pi)
16352 {
16353         u16 w1th, hpf_code, currband;
16354         int ctr;
16355         u8 rfseq_updategainu_events[] = {
16356                 NPHY_RFSEQ_CMD_RX_GAIN,
16357                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16358                 NPHY_RFSEQ_CMD_SET_HPF_BW
16359         };
16360         u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
16361         s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
16362         s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
16363         s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
16364         s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
16365         s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
16366         s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
16367         s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
16368         s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
16369         s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
16370         s8 *lna1_gain_db = NULL;
16371         s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
16372         s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
16373         s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
16374         s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
16375         s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
16376         s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
16377         s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
16378         s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
16379         s8 *lna2_gain_db = NULL;
16380         s8 tiaG_gain_db[] = {
16381                 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
16382         s8 tiaA_gain_db[] = {
16383                 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
16384         s8 tiaA_gain_db_rev4[] = {
16385                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16386         s8 tiaA_gain_db_rev5[] = {
16387                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16388         s8 tiaA_gain_db_rev6[] = {
16389                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16390         s8 *tia_gain_db;
16391         s8 tiaG_gainbits[] = {
16392                 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
16393         s8 tiaA_gainbits[] = {
16394                 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
16395         s8 tiaA_gainbits_rev4[] = {
16396                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16397         s8 tiaA_gainbits_rev5[] = {
16398                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16399         s8 tiaA_gainbits_rev6[] = {
16400                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16401         s8 *tia_gainbits;
16402         s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
16403         s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
16404         u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
16405         u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
16406         u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
16407         u16 rfseqG_init_gain_rev5_elna[] = {
16408                 0x013f, 0x013f, 0x013f, 0x013f };
16409         u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
16410         u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
16411         u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
16412         u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
16413         u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
16414         u16 rfseqA_init_gain_rev4_elna[] = {
16415                 0x314f, 0x314f, 0x314f, 0x314f };
16416         u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
16417         u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
16418         u16 *rfseq_init_gain;
16419         u16 initG_gaincode = 0x627e;
16420         u16 initG_gaincode_rev4 = 0x527e;
16421         u16 initG_gaincode_rev5 = 0x427e;
16422         u16 initG_gaincode_rev5_elna = 0x027e;
16423         u16 initG_gaincode_rev6 = 0x527e;
16424         u16 initG_gaincode_rev6_224B0 = 0x427e;
16425         u16 initG_gaincode_rev6_elna = 0x127e;
16426         u16 initA_gaincode = 0x52de;
16427         u16 initA_gaincode_rev4 = 0x629e;
16428         u16 initA_gaincode_rev4_elna = 0x329e;
16429         u16 initA_gaincode_rev5 = 0x729e;
16430         u16 initA_gaincode_rev6 = 0x729e;
16431         u16 init_gaincode;
16432         u16 clip1hiG_gaincode = 0x107e;
16433         u16 clip1hiG_gaincode_rev4 = 0x007e;
16434         u16 clip1hiG_gaincode_rev5 = 0x1076;
16435         u16 clip1hiG_gaincode_rev6 = 0x007e;
16436         u16 clip1hiA_gaincode = 0x00de;
16437         u16 clip1hiA_gaincode_rev4 = 0x029e;
16438         u16 clip1hiA_gaincode_rev5 = 0x029e;
16439         u16 clip1hiA_gaincode_rev6 = 0x029e;
16440         u16 clip1hi_gaincode;
16441         u16 clip1mdG_gaincode = 0x0066;
16442         u16 clip1mdA_gaincode = 0x00ca;
16443         u16 clip1mdA_gaincode_rev4 = 0x1084;
16444         u16 clip1mdA_gaincode_rev5 = 0x2084;
16445         u16 clip1mdA_gaincode_rev6 = 0x2084;
16446         u16 clip1md_gaincode = 0;
16447         u16 clip1loG_gaincode = 0x0074;
16448         u16 clip1loG_gaincode_rev5[] = {
16449                 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
16450         };
16451         u16 clip1loG_gaincode_rev6[] = {
16452                 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
16453         };
16454         u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
16455         u16 clip1loA_gaincode = 0x00cc;
16456         u16 clip1loA_gaincode_rev4 = 0x0086;
16457         u16 clip1loA_gaincode_rev5 = 0x2086;
16458         u16 clip1loA_gaincode_rev6 = 0x2086;
16459         u16 clip1lo_gaincode;
16460         u8 crsminG_th = 0x18;
16461         u8 crsminG_th_rev5 = 0x18;
16462         u8 crsminG_th_rev6 = 0x18;
16463         u8 crsminA_th = 0x1e;
16464         u8 crsminA_th_rev4 = 0x24;
16465         u8 crsminA_th_rev5 = 0x24;
16466         u8 crsminA_th_rev6 = 0x24;
16467         u8 crsmin_th;
16468         u8 crsminlG_th = 0x18;
16469         u8 crsminlG_th_rev5 = 0x18;
16470         u8 crsminlG_th_rev6 = 0x18;
16471         u8 crsminlA_th = 0x1e;
16472         u8 crsminlA_th_rev4 = 0x24;
16473         u8 crsminlA_th_rev5 = 0x24;
16474         u8 crsminlA_th_rev6 = 0x24;
16475         u8 crsminl_th = 0;
16476         u8 crsminuG_th = 0x18;
16477         u8 crsminuG_th_rev5 = 0x18;
16478         u8 crsminuG_th_rev6 = 0x18;
16479         u8 crsminuA_th = 0x1e;
16480         u8 crsminuA_th_rev4 = 0x24;
16481         u8 crsminuA_th_rev5 = 0x24;
16482         u8 crsminuA_th_rev6 = 0x24;
16483         u8 crsminuA_th_rev6_224B0 = 0x2d;
16484         u8 crsminu_th;
16485         u16 nbclipG_th = 0x20d;
16486         u16 nbclipG_th_rev4 = 0x1a1;
16487         u16 nbclipG_th_rev5 = 0x1d0;
16488         u16 nbclipG_th_rev6 = 0x1d0;
16489         u16 nbclipA_th = 0x1a1;
16490         u16 nbclipA_th_rev4 = 0x107;
16491         u16 nbclipA_th_rev5 = 0x0a9;
16492         u16 nbclipA_th_rev6 = 0x0f0;
16493         u16 nbclip_th = 0;
16494         u8 w1clipG_th = 5;
16495         u8 w1clipG_th_rev5 = 9;
16496         u8 w1clipG_th_rev6 = 5;
16497         u8 w1clipA_th = 25, w1clip_th;
16498         u8 rssi_gain_default = 0x50;
16499         u8 rssiG_gain_rev6_224B0 = 0x50;
16500         u8 rssiA_gain_rev5 = 0x90;
16501         u8 rssiA_gain_rev6 = 0x90;
16502         u8 rssi_gain;
16503         u16 regval[21];
16504         u8 triso;
16505
16506         triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
16507             pi->srom_fem2g.triso;
16508
16509         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16510                 if (pi->pubpi.radiorev == 5) {
16511
16512                         wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
16513                 } else if (pi->pubpi.radiorev == 7) {
16514                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16515
16516                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
16517                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
16518
16519                 } else if ((pi->pubpi.radiorev == 3)
16520                            || (pi->pubpi.radiorev == 8)) {
16521                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16522
16523                         if (pi->pubpi.radiorev == 8) {
16524                                 mod_phy_reg(pi, 0x283,
16525                                             (0xff << 0), (0x44 << 0));
16526                                 mod_phy_reg(pi, 0x280,
16527                                             (0xff << 0), (0x44 << 0));
16528                         }
16529                 } else {
16530                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16531                 }
16532         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16533
16534                 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
16535
16536                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16537                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16538
16539                 currband =
16540                     read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
16541                 if (currband == 0) {
16542                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16543                                 if (pi->pubpi.radiorev == 11) {
16544                                         lna1_gain_db = lna1G_gain_db_rev6_224B0;
16545                                         lna2_gain_db = lna2G_gain_db_rev6_224B0;
16546                                         rfseq_init_gain =
16547                                             rfseqG_init_gain_rev6_224B0;
16548                                         init_gaincode =
16549                                             initG_gaincode_rev6_224B0;
16550                                         clip1hi_gaincode =
16551                                             clip1hiG_gaincode_rev6;
16552                                         clip1lo_gaincode =
16553                                             clip1loG_gaincode_rev6_224B0;
16554                                         nbclip_th = nbclipG_th_rev6;
16555                                         w1clip_th = w1clipG_th_rev6;
16556                                         crsmin_th = crsminG_th_rev6;
16557                                         crsminl_th = crsminlG_th_rev6;
16558                                         crsminu_th = crsminuG_th_rev6;
16559                                         rssi_gain = rssiG_gain_rev6_224B0;
16560                                 } else {
16561                                         lna1_gain_db = lna1G_gain_db_rev6;
16562                                         lna2_gain_db = lna2G_gain_db_rev6;
16563                                         if (pi->sh->boardflags & BFL_EXTLNA) {
16564
16565                                                 rfseq_init_gain =
16566                                                     rfseqG_init_gain_rev6_elna;
16567                                                 init_gaincode =
16568                                                     initG_gaincode_rev6_elna;
16569                                         } else {
16570                                                 rfseq_init_gain =
16571                                                     rfseqG_init_gain_rev6;
16572                                                 init_gaincode =
16573                                                     initG_gaincode_rev6;
16574                                         }
16575                                         clip1hi_gaincode =
16576                                             clip1hiG_gaincode_rev6;
16577                                         switch (triso) {
16578                                         case 0:
16579                                                 clip1lo_gaincode =
16580                                                     clip1loG_gaincode_rev6[0];
16581                                                 break;
16582                                         case 1:
16583                                                 clip1lo_gaincode =
16584                                                     clip1loG_gaincode_rev6[1];
16585                                                 break;
16586                                         case 2:
16587                                                 clip1lo_gaincode =
16588                                                     clip1loG_gaincode_rev6[2];
16589                                                 break;
16590                                         case 3:
16591                                         default:
16592
16593                                                 clip1lo_gaincode =
16594                                                     clip1loG_gaincode_rev6[3];
16595                                                 break;
16596                                         case 4:
16597                                                 clip1lo_gaincode =
16598                                                     clip1loG_gaincode_rev6[4];
16599                                                 break;
16600                                         case 5:
16601                                                 clip1lo_gaincode =
16602                                                     clip1loG_gaincode_rev6[5];
16603                                                 break;
16604                                         case 6:
16605                                                 clip1lo_gaincode =
16606                                                     clip1loG_gaincode_rev6[6];
16607                                                 break;
16608                                         case 7:
16609                                                 clip1lo_gaincode =
16610                                                     clip1loG_gaincode_rev6[7];
16611                                                 break;
16612                                         }
16613                                         nbclip_th = nbclipG_th_rev6;
16614                                         w1clip_th = w1clipG_th_rev6;
16615                                         crsmin_th = crsminG_th_rev6;
16616                                         crsminl_th = crsminlG_th_rev6;
16617                                         crsminu_th = crsminuG_th_rev6;
16618                                         rssi_gain = rssi_gain_default;
16619                                 }
16620                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16621                                 lna1_gain_db = lna1G_gain_db_rev5;
16622                                 lna2_gain_db = lna2G_gain_db_rev5;
16623                                 if (pi->sh->boardflags & BFL_EXTLNA) {
16624
16625                                         rfseq_init_gain =
16626                                             rfseqG_init_gain_rev5_elna;
16627                                         init_gaincode =
16628                                             initG_gaincode_rev5_elna;
16629                                 } else {
16630                                         rfseq_init_gain = rfseqG_init_gain_rev5;
16631                                         init_gaincode = initG_gaincode_rev5;
16632                                 }
16633                                 clip1hi_gaincode = clip1hiG_gaincode_rev5;
16634                                 switch (triso) {
16635                                 case 0:
16636                                         clip1lo_gaincode =
16637                                             clip1loG_gaincode_rev5[0];
16638                                         break;
16639                                 case 1:
16640                                         clip1lo_gaincode =
16641                                             clip1loG_gaincode_rev5[1];
16642                                         break;
16643                                 case 2:
16644                                         clip1lo_gaincode =
16645                                             clip1loG_gaincode_rev5[2];
16646                                         break;
16647                                 case 3:
16648
16649                                         clip1lo_gaincode =
16650                                             clip1loG_gaincode_rev5[3];
16651                                         break;
16652                                 case 4:
16653                                         clip1lo_gaincode =
16654                                             clip1loG_gaincode_rev5[4];
16655                                         break;
16656                                 case 5:
16657                                         clip1lo_gaincode =
16658                                             clip1loG_gaincode_rev5[5];
16659                                         break;
16660                                 case 6:
16661                                         clip1lo_gaincode =
16662                                             clip1loG_gaincode_rev5[6];
16663                                         break;
16664                                 case 7:
16665                                         clip1lo_gaincode =
16666                                             clip1loG_gaincode_rev5[7];
16667                                         break;
16668                                 default:
16669                                         clip1lo_gaincode =
16670                                             clip1loG_gaincode_rev5[3];
16671                                         break;
16672                                 }
16673                                 nbclip_th = nbclipG_th_rev5;
16674                                 w1clip_th = w1clipG_th_rev5;
16675                                 crsmin_th = crsminG_th_rev5;
16676                                 crsminl_th = crsminlG_th_rev5;
16677                                 crsminu_th = crsminuG_th_rev5;
16678                                 rssi_gain = rssi_gain_default;
16679                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16680                                 lna1_gain_db = lna1G_gain_db_rev4;
16681                                 lna2_gain_db = lna2G_gain_db;
16682                                 rfseq_init_gain = rfseqG_init_gain_rev4;
16683                                 init_gaincode = initG_gaincode_rev4;
16684                                 clip1hi_gaincode = clip1hiG_gaincode_rev4;
16685                                 clip1lo_gaincode = clip1loG_gaincode;
16686                                 nbclip_th = nbclipG_th_rev4;
16687                                 w1clip_th = w1clipG_th;
16688                                 crsmin_th = crsminG_th;
16689                                 crsminl_th = crsminlG_th;
16690                                 crsminu_th = crsminuG_th;
16691                                 rssi_gain = rssi_gain_default;
16692                         } else {
16693                                 lna1_gain_db = lna1G_gain_db;
16694                                 lna2_gain_db = lna2G_gain_db;
16695                                 rfseq_init_gain = rfseqG_init_gain;
16696                                 init_gaincode = initG_gaincode;
16697                                 clip1hi_gaincode = clip1hiG_gaincode;
16698                                 clip1lo_gaincode = clip1loG_gaincode;
16699                                 nbclip_th = nbclipG_th;
16700                                 w1clip_th = w1clipG_th;
16701                                 crsmin_th = crsminG_th;
16702                                 crsminl_th = crsminlG_th;
16703                                 crsminu_th = crsminuG_th;
16704                                 rssi_gain = rssi_gain_default;
16705                         }
16706                         tia_gain_db = tiaG_gain_db;
16707                         tia_gainbits = tiaG_gainbits;
16708                         clip1md_gaincode = clip1mdG_gaincode;
16709                 } else {
16710                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16711                                 lna1_gain_db = lna1A_gain_db_rev6;
16712                                 lna2_gain_db = lna2A_gain_db_rev6;
16713                                 tia_gain_db = tiaA_gain_db_rev6;
16714                                 tia_gainbits = tiaA_gainbits_rev6;
16715                                 rfseq_init_gain = rfseqA_init_gain_rev6;
16716                                 init_gaincode = initA_gaincode_rev6;
16717                                 clip1hi_gaincode = clip1hiA_gaincode_rev6;
16718                                 clip1md_gaincode = clip1mdA_gaincode_rev6;
16719                                 clip1lo_gaincode = clip1loA_gaincode_rev6;
16720                                 crsmin_th = crsminA_th_rev6;
16721                                 crsminl_th = crsminlA_th_rev6;
16722                                 if ((pi->pubpi.radiorev == 11) &&
16723                                     (CHSPEC_IS40(pi->radio_chanspec) == 0)) {
16724                                         crsminu_th = crsminuA_th_rev6_224B0;
16725                                 } else {
16726                                         crsminu_th = crsminuA_th_rev6;
16727                                 }
16728                                 nbclip_th = nbclipA_th_rev6;
16729                                 rssi_gain = rssiA_gain_rev6;
16730                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16731                                 lna1_gain_db = lna1A_gain_db_rev5;
16732                                 lna2_gain_db = lna2A_gain_db_rev5;
16733                                 tia_gain_db = tiaA_gain_db_rev5;
16734                                 tia_gainbits = tiaA_gainbits_rev5;
16735                                 rfseq_init_gain = rfseqA_init_gain_rev5;
16736                                 init_gaincode = initA_gaincode_rev5;
16737                                 clip1hi_gaincode = clip1hiA_gaincode_rev5;
16738                                 clip1md_gaincode = clip1mdA_gaincode_rev5;
16739                                 clip1lo_gaincode = clip1loA_gaincode_rev5;
16740                                 crsmin_th = crsminA_th_rev5;
16741                                 crsminl_th = crsminlA_th_rev5;
16742                                 crsminu_th = crsminuA_th_rev5;
16743                                 nbclip_th = nbclipA_th_rev5;
16744                                 rssi_gain = rssiA_gain_rev5;
16745                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16746                                 lna1_gain_db = lna1A_gain_db_rev4;
16747                                 lna2_gain_db = lna2A_gain_db_rev4;
16748                                 tia_gain_db = tiaA_gain_db_rev4;
16749                                 tia_gainbits = tiaA_gainbits_rev4;
16750                                 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
16751
16752                                         rfseq_init_gain =
16753                                             rfseqA_init_gain_rev4_elna;
16754                                         init_gaincode =
16755                                             initA_gaincode_rev4_elna;
16756                                 } else {
16757                                         rfseq_init_gain = rfseqA_init_gain_rev4;
16758                                         init_gaincode = initA_gaincode_rev4;
16759                                 }
16760                                 clip1hi_gaincode = clip1hiA_gaincode_rev4;
16761                                 clip1md_gaincode = clip1mdA_gaincode_rev4;
16762                                 clip1lo_gaincode = clip1loA_gaincode_rev4;
16763                                 crsmin_th = crsminA_th_rev4;
16764                                 crsminl_th = crsminlA_th_rev4;
16765                                 crsminu_th = crsminuA_th_rev4;
16766                                 nbclip_th = nbclipA_th_rev4;
16767                                 rssi_gain = rssi_gain_default;
16768                         } else {
16769                                 lna1_gain_db = lna1A_gain_db;
16770                                 lna2_gain_db = lna2A_gain_db;
16771                                 tia_gain_db = tiaA_gain_db;
16772                                 tia_gainbits = tiaA_gainbits;
16773                                 rfseq_init_gain = rfseqA_init_gain;
16774                                 init_gaincode = initA_gaincode;
16775                                 clip1hi_gaincode = clip1hiA_gaincode;
16776                                 clip1md_gaincode = clip1mdA_gaincode;
16777                                 clip1lo_gaincode = clip1loA_gaincode;
16778                                 crsmin_th = crsminA_th;
16779                                 crsminl_th = crsminlA_th;
16780                                 crsminu_th = crsminuA_th;
16781                                 nbclip_th = nbclipA_th;
16782                                 rssi_gain = rssi_gain_default;
16783                         }
16784                         w1clip_th = w1clipA_th;
16785                 }
16786
16787                 write_radio_reg(pi,
16788                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16789                                  RADIO_2056_RX0), 0x17);
16790                 write_radio_reg(pi,
16791                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16792                                  RADIO_2056_RX1), 0x17);
16793
16794                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
16795                                 0xf0);
16796                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
16797                                 0xf0);
16798
16799                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
16800                                 0x0);
16801                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
16802                                 0x0);
16803
16804                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
16805                                 rssi_gain);
16806                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
16807                                 rssi_gain);
16808
16809                 write_radio_reg(pi,
16810                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16811                                  RADIO_2056_RX0), 0x17);
16812                 write_radio_reg(pi,
16813                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16814                                  RADIO_2056_RX1), 0x17);
16815
16816                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
16817                                 0xFF);
16818                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
16819                                 0xFF);
16820
16821                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
16822                                          8, lna1_gain_db);
16823                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
16824                                          8, lna1_gain_db);
16825
16826                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
16827                                          8, lna2_gain_db);
16828                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
16829                                          8, lna2_gain_db);
16830
16831                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
16832                                          8, tia_gain_db);
16833                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
16834                                          8, tia_gain_db);
16835
16836                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
16837                                          8, tia_gainbits);
16838                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
16839                                          8, tia_gainbits);
16840
16841                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
16842                                          8, &lpf_gain_db);
16843                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
16844                                          8, &lpf_gain_db);
16845                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
16846                                          8, &lpf_gainbits);
16847                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
16848                                          8, &lpf_gainbits);
16849
16850                 write_phy_reg(pi, 0x20, init_gaincode);
16851                 write_phy_reg(pi, 0x2a7, init_gaincode);
16852
16853                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16854                                          pi->pubpi.phy_corenum, 0x106, 16,
16855                                          rfseq_init_gain);
16856
16857                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
16858                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
16859
16860                 write_phy_reg(pi, 0x24, clip1md_gaincode);
16861                 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
16862
16863                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
16864                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
16865
16866                 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
16867                 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
16868                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
16869
16870                 write_phy_reg(pi, 0x2b, nbclip_th);
16871                 write_phy_reg(pi, 0x41, nbclip_th);
16872
16873                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
16874                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
16875
16876                 write_phy_reg(pi, 0x150, 0x809c);
16877
16878         } else {
16879
16880                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16881                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16882
16883                 write_phy_reg(pi, 0x2b, 0x84);
16884                 write_phy_reg(pi, 0x41, 0x84);
16885
16886                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16887                         write_phy_reg(pi, 0x6b, 0x2b);
16888                         write_phy_reg(pi, 0x6c, 0x2b);
16889                         write_phy_reg(pi, 0x6d, 0x9);
16890                         write_phy_reg(pi, 0x6e, 0x9);
16891                 }
16892
16893                 w1th = NPHY_RSSICAL_W1_TARGET - 4;
16894                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
16895                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
16896
16897                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16898                         mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
16899                         mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16900
16901                         mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16902                         mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16903                 }
16904
16905                 write_phy_reg(pi, 0x150, 0x809c);
16906
16907                 if (pi->nphy_gain_boost)
16908                         if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16909                             (CHSPEC_IS40(pi->radio_chanspec)))
16910                                 hpf_code = 4;
16911                         else
16912                                 hpf_code = 5;
16913                 else if (CHSPEC_IS40(pi->radio_chanspec))
16914                         hpf_code = 6;
16915                 else
16916                         hpf_code = 7;
16917
16918                 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16919                 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16920
16921                 for (ctr = 0; ctr < 4; ctr++) {
16922                         regval[ctr] = (hpf_code << 8) | 0x7c;
16923                 }
16924                 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16925
16926                 wlc_phy_adjust_lnagaintbl_nphy(pi);
16927
16928                 if (pi->nphy_elna_gain_config) {
16929                         regval[0] = 0;
16930                         regval[1] = 1;
16931                         regval[2] = 1;
16932                         regval[3] = 1;
16933                         wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16934                         wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16935
16936                         for (ctr = 0; ctr < 4; ctr++) {
16937                                 regval[ctr] = (hpf_code << 8) | 0x74;
16938                         }
16939                         wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16940                 }
16941
16942                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16943                         for (ctr = 0; ctr < 21; ctr++) {
16944                                 regval[ctr] = 3 * ctr;
16945                         }
16946                         wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16947                         wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16948
16949                         for (ctr = 0; ctr < 21; ctr++) {
16950                                 regval[ctr] = (u16) ctr;
16951                         }
16952                         wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16953                         wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16954                 }
16955
16956                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16957                                        rfseq_updategainu_events,
16958                                        rfseq_updategainu_dlys,
16959                                        sizeof(rfseq_updategainu_events) /
16960                                        sizeof(rfseq_updategainu_events[0]));
16961
16962                 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16963
16964                 if (CHSPEC_IS2G(pi->radio_chanspec))
16965                         mod_phy_reg(pi,
16966                                     (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16967                                     0x7f, 0x4);
16968         }
16969 }
16970
16971 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(phy_info_t *pi)
16972 {
16973         s8 lna1_gain_db[] = { 8, 13, 17, 22 };
16974         s8 lna2_gain_db[] = { -2, 7, 11, 15 };
16975         s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
16976         s8 tia_gainbits[] = {
16977                 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
16978
16979         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16980         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16981
16982         mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
16983
16984         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
16985         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
16986
16987         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
16988                                  lna1_gain_db);
16989         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
16990                                  lna1_gain_db);
16991
16992         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
16993                                  lna2_gain_db);
16994         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
16995                                  lna2_gain_db);
16996
16997         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
16998                                  tia_gain_db);
16999         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
17000                                  tia_gain_db);
17001
17002         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
17003                                  tia_gainbits);
17004         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
17005                                  tia_gainbits);
17006
17007         write_phy_reg(pi, 0x37, 0x74);
17008         write_phy_reg(pi, 0x2ad, 0x74);
17009         write_phy_reg(pi, 0x38, 0x18);
17010         write_phy_reg(pi, 0x2ae, 0x18);
17011
17012         write_phy_reg(pi, 0x2b, 0xe8);
17013         write_phy_reg(pi, 0x41, 0xe8);
17014
17015         if (CHSPEC_IS20(pi->radio_chanspec)) {
17016
17017                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
17018                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
17019         } else {
17020
17021                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
17022                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
17023         }
17024 }
17025
17026 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(phy_info_t *pi)
17027 {
17028         u16 currband;
17029         s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
17030         s8 *lna1_gain_db = NULL;
17031         s8 *lna1_gain_db_2 = NULL;
17032         s8 *lna2_gain_db = NULL;
17033         s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
17034         s8 *tia_gain_db;
17035         s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
17036         s8 *tia_gainbits;
17037         u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
17038         u16 *rfseq_init_gain;
17039         u16 init_gaincode;
17040         u16 clip1hi_gaincode;
17041         u16 clip1md_gaincode = 0;
17042         u16 clip1md_gaincode_B;
17043         u16 clip1lo_gaincode;
17044         u16 clip1lo_gaincode_B;
17045         u8 crsminl_th = 0;
17046         u8 crsminu_th;
17047         u16 nbclip_th = 0;
17048         u8 w1clip_th;
17049         u16 freq;
17050         s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
17051         u8 chg_nbclip_th = 0;
17052
17053         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
17054         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
17055
17056         currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
17057         if (currband == 0) {
17058
17059                 lna1_gain_db = lna1G_gain_db_rev7;
17060
17061                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
17062                                          lna1_gain_db);
17063                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
17064                                          lna1_gain_db);
17065
17066                 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
17067
17068                 if (CHSPEC_IS40(pi->radio_chanspec)) {
17069                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
17070                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
17071                 }
17072
17073                 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
17074
17075                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17076                         mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
17077                         mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
17078                 }
17079         } else {
17080
17081                 init_gaincode = 0x9e;
17082                 clip1hi_gaincode = 0x9e;
17083                 clip1md_gaincode_B = 0x24;
17084                 clip1lo_gaincode = 0x8a;
17085                 clip1lo_gaincode_B = 8;
17086                 rfseq_init_gain = rfseqA_init_gain_rev7;
17087
17088                 tia_gain_db = tiaA_gain_db_rev7;
17089                 tia_gainbits = tiaA_gainbits_rev7;
17090
17091                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
17092                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17093
17094                         w1clip_th = 25;
17095                         clip1md_gaincode = 0x82;
17096
17097                         if ((freq <= 5080) || (freq == 5825)) {
17098
17099                                 s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
17100                                 s8 lna1A_gain_db_2_rev7[] = {
17101                                         11, 17, 22, 25 };
17102                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
17103
17104                                 crsminu_th = 0x3e;
17105                                 lna1_gain_db = lna1A_gain_db_rev7;
17106                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17107                                 lna2_gain_db = lna2A_gain_db_rev7;
17108                         } else if ((freq >= 5500) && (freq <= 5700)) {
17109
17110                                 s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
17111                                 s8 lna1A_gain_db_2_rev7[] = {
17112                                         12, 18, 22, 26 };
17113                                 s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
17114
17115                                 crsminu_th = 0x45;
17116                                 clip1md_gaincode_B = 0x14;
17117                                 nbclip_th = 0xff;
17118                                 chg_nbclip_th = 1;
17119                                 lna1_gain_db = lna1A_gain_db_rev7;
17120                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17121                                 lna2_gain_db = lna2A_gain_db_rev7;
17122                         } else {
17123
17124                                 s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
17125                                 s8 lna1A_gain_db_2_rev7[] = {
17126                                         12, 18, 22, 26 };
17127                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
17128
17129                                 crsminu_th = 0x41;
17130                                 lna1_gain_db = lna1A_gain_db_rev7;
17131                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17132                                 lna2_gain_db = lna2A_gain_db_rev7;
17133                         }
17134
17135                         if (freq <= 4920) {
17136                                 nvar_baseline_offset0 = 5;
17137                                 nvar_baseline_offset1 = 5;
17138                         } else if ((freq > 4920) && (freq <= 5320)) {
17139                                 nvar_baseline_offset0 = 3;
17140                                 nvar_baseline_offset1 = 5;
17141                         } else if ((freq > 5320) && (freq <= 5700)) {
17142                                 nvar_baseline_offset0 = 3;
17143                                 nvar_baseline_offset1 = 2;
17144                         } else {
17145                                 nvar_baseline_offset0 = 4;
17146                                 nvar_baseline_offset1 = 0;
17147                         }
17148                 } else {
17149
17150                         crsminu_th = 0x3a;
17151                         crsminl_th = 0x3a;
17152                         w1clip_th = 20;
17153
17154                         if ((freq >= 4920) && (freq <= 5320)) {
17155                                 nvar_baseline_offset0 = 4;
17156                                 nvar_baseline_offset1 = 5;
17157                         } else if ((freq > 5320) && (freq <= 5550)) {
17158                                 nvar_baseline_offset0 = 4;
17159                                 nvar_baseline_offset1 = 2;
17160                         } else {
17161                                 nvar_baseline_offset0 = 5;
17162                                 nvar_baseline_offset1 = 3;
17163                         }
17164                 }
17165
17166                 write_phy_reg(pi, 0x20, init_gaincode);
17167                 write_phy_reg(pi, 0x2a7, init_gaincode);
17168
17169                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
17170                                          pi->pubpi.phy_corenum, 0x106, 16,
17171                                          rfseq_init_gain);
17172
17173                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
17174                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
17175
17176                 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
17177                 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
17178
17179                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
17180                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
17181                 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
17182                 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
17183
17184                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
17185                                          tia_gain_db);
17186                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
17187                                          tia_gain_db);
17188
17189                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
17190                                          tia_gainbits);
17191                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
17192                                          tia_gainbits);
17193
17194                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
17195
17196                 if (chg_nbclip_th == 1) {
17197                         write_phy_reg(pi, 0x2b, nbclip_th);
17198                         write_phy_reg(pi, 0x41, nbclip_th);
17199                 }
17200
17201                 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
17202                 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
17203
17204                 mod_phy_reg(pi, 0x2e4,
17205                             (0x3f << 0), (nvar_baseline_offset0 << 0));
17206
17207                 mod_phy_reg(pi, 0x2e4,
17208                             (0x3f << 6), (nvar_baseline_offset1 << 6));
17209
17210                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17211
17212                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
17213                                                  lna1_gain_db);
17214                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
17215                                                  lna1_gain_db_2);
17216
17217                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
17218                                                  8, lna2_gain_db);
17219                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
17220                                                  8, lna2_gain_db);
17221
17222                         write_phy_reg(pi, 0x24, clip1md_gaincode);
17223                         write_phy_reg(pi, 0x2ab, clip1md_gaincode);
17224                 } else {
17225                         mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
17226                 }
17227
17228         }
17229
17230 }
17231
17232 static void wlc_phy_adjust_lnagaintbl_nphy(phy_info_t *pi)
17233 {
17234         uint core;
17235         int ctr;
17236         s16 gain_delta[2];
17237         u8 curr_channel;
17238         u16 minmax_gain[2];
17239         u16 regval[4];
17240
17241         if (pi->phyhang_avoid)
17242                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17243
17244         if (pi->nphy_gain_boost) {
17245                 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
17246
17247                         gain_delta[0] = 6;
17248                         gain_delta[1] = 6;
17249                 } else {
17250
17251                         curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
17252                         gain_delta[0] =
17253                             (s16)
17254                             PHY_HW_ROUND(((nphy_lnagain_est0[0] *
17255                                            curr_channel) +
17256                                           nphy_lnagain_est0[1]), 13);
17257                         gain_delta[1] =
17258                             (s16)
17259                             PHY_HW_ROUND(((nphy_lnagain_est1[0] *
17260                                            curr_channel) +
17261                                           nphy_lnagain_est1[1]), 13);
17262                 }
17263         } else {
17264
17265                 gain_delta[0] = 0;
17266                 gain_delta[1] = 0;
17267         }
17268
17269         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17270                 if (pi->nphy_elna_gain_config) {
17271
17272                         regval[0] = nphy_def_lnagains[2] + gain_delta[core];
17273                         regval[1] = nphy_def_lnagains[3] + gain_delta[core];
17274                         regval[2] = nphy_def_lnagains[3] + gain_delta[core];
17275                         regval[3] = nphy_def_lnagains[3] + gain_delta[core];
17276                 } else {
17277                         for (ctr = 0; ctr < 4; ctr++) {
17278                                 regval[ctr] =
17279                                     nphy_def_lnagains[ctr] + gain_delta[core];
17280                         }
17281                 }
17282                 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
17283
17284                 minmax_gain[core] =
17285                     (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
17286         }
17287
17288         mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
17289         mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
17290
17291         if (pi->phyhang_avoid)
17292                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17293 }
17294
17295 void wlc_phy_switch_radio_nphy(phy_info_t *pi, bool on)
17296 {
17297         if (on) {
17298                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17299                         if (!pi->radio_is_on) {
17300                                 wlc_phy_radio_preinit_205x(pi);
17301                                 wlc_phy_radio_init_2057(pi);
17302                                 wlc_phy_radio_postinit_2057(pi);
17303                         }
17304
17305                         wlc_phy_chanspec_set((wlc_phy_t *) pi,
17306                                              pi->radio_chanspec);
17307                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17308                         wlc_phy_radio_preinit_205x(pi);
17309                         wlc_phy_radio_init_2056(pi);
17310                         wlc_phy_radio_postinit_2056(pi);
17311
17312                         wlc_phy_chanspec_set((wlc_phy_t *) pi,
17313                                              pi->radio_chanspec);
17314                 } else {
17315                         wlc_phy_radio_preinit_2055(pi);
17316                         wlc_phy_radio_init_2055(pi);
17317                         wlc_phy_radio_postinit_2055(pi);
17318                 }
17319
17320                 pi->radio_is_on = true;
17321
17322         } else {
17323
17324                 if (NREV_GE(pi->pubpi.phy_rev, 3)
17325                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
17326                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17327                         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
17328
17329                         write_radio_reg(pi,
17330                                         RADIO_2056_TX_PADA_BOOST_TUNE |
17331                                         RADIO_2056_TX0, 0);
17332                         write_radio_reg(pi,
17333                                         RADIO_2056_TX_PADG_BOOST_TUNE |
17334                                         RADIO_2056_TX0, 0);
17335                         write_radio_reg(pi,
17336                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
17337                                         RADIO_2056_TX0, 0);
17338                         write_radio_reg(pi,
17339                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
17340                                         RADIO_2056_TX0, 0);
17341                         mod_radio_reg(pi,
17342                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
17343                                       RADIO_2056_TX0, 0xf0, 0);
17344                         write_radio_reg(pi,
17345                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
17346                                         RADIO_2056_TX0, 0);
17347
17348                         write_radio_reg(pi,
17349                                         RADIO_2056_TX_PADA_BOOST_TUNE |
17350                                         RADIO_2056_TX1, 0);
17351                         write_radio_reg(pi,
17352                                         RADIO_2056_TX_PADG_BOOST_TUNE |
17353                                         RADIO_2056_TX1, 0);
17354                         write_radio_reg(pi,
17355                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
17356                                         RADIO_2056_TX1, 0);
17357                         write_radio_reg(pi,
17358                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
17359                                         RADIO_2056_TX1, 0);
17360                         mod_radio_reg(pi,
17361                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
17362                                       RADIO_2056_TX1, 0xf0, 0);
17363                         write_radio_reg(pi,
17364                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
17365                                         RADIO_2056_TX1, 0);
17366
17367                         pi->radio_is_on = false;
17368                 }
17369
17370                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
17371                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17372                         pi->radio_is_on = false;
17373                 }
17374
17375         }
17376 }
17377
17378 static void wlc_phy_radio_preinit_2055(phy_info_t *pi)
17379 {
17380
17381         and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
17382         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
17383
17384         or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
17385 }
17386
17387 static void wlc_phy_radio_init_2055(phy_info_t *pi)
17388 {
17389         wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
17390 }
17391
17392 static void wlc_phy_radio_postinit_2055(phy_info_t *pi)
17393 {
17394
17395         and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
17396                       ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
17397
17398         if (((pi->sh->sromrev >= 4)
17399              && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
17400             || ((pi->sh->sromrev < 4))) {
17401                 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
17402                 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
17403         }
17404
17405         mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
17406         write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
17407
17408         and_radio_reg(pi, RADIO_2055_CAL_MISC,
17409                       ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
17410
17411         or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
17412
17413         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
17414
17415         udelay(1000);
17416
17417         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
17418
17419         SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
17420                    RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
17421
17422         ASSERT((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
17423                 RADIO_2055_RCAL_DONE) == RADIO_2055_RCAL_DONE);
17424
17425         and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
17426                       ~(RADIO_2055_CAL_LPO_ENABLE));
17427
17428         wlc_phy_chanspec_set((wlc_phy_t *) pi, pi->radio_chanspec);
17429
17430         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
17431         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
17432
17433         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
17434         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
17435
17436         mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
17437                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
17438         mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
17439                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
17440         if (pi->nphy_gain_boost) {
17441                 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
17442                               ~(RADIO_2055_GAINBST_DISABLE));
17443                 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
17444                               ~(RADIO_2055_GAINBST_DISABLE));
17445         } else {
17446                 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
17447                              RADIO_2055_GAINBST_DISABLE);
17448                 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
17449                              RADIO_2055_GAINBST_DISABLE);
17450         }
17451
17452         udelay(2);
17453 }
17454
17455 static void wlc_phy_radio_preinit_205x(phy_info_t *pi)
17456 {
17457
17458         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17459         and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
17460
17461         or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
17462         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
17463
17464 }
17465
17466 static void wlc_phy_radio_init_2056(phy_info_t *pi)
17467 {
17468         radio_regs_t *regs_SYN_2056_ptr = NULL;
17469         radio_regs_t *regs_TX_2056_ptr = NULL;
17470         radio_regs_t *regs_RX_2056_ptr = NULL;
17471
17472         if (NREV_IS(pi->pubpi.phy_rev, 3)) {
17473                 regs_SYN_2056_ptr = regs_SYN_2056;
17474                 regs_TX_2056_ptr = regs_TX_2056;
17475                 regs_RX_2056_ptr = regs_RX_2056;
17476         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17477                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
17478                 regs_TX_2056_ptr = regs_TX_2056_A1;
17479                 regs_RX_2056_ptr = regs_RX_2056_A1;
17480         } else {
17481                 switch (pi->pubpi.radiorev) {
17482                 case 5:
17483                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
17484                         regs_TX_2056_ptr = regs_TX_2056_rev5;
17485                         regs_RX_2056_ptr = regs_RX_2056_rev5;
17486                         break;
17487
17488                 case 6:
17489                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
17490                         regs_TX_2056_ptr = regs_TX_2056_rev6;
17491                         regs_RX_2056_ptr = regs_RX_2056_rev6;
17492                         break;
17493
17494                 case 7:
17495                 case 9:
17496                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
17497                         regs_TX_2056_ptr = regs_TX_2056_rev7;
17498                         regs_RX_2056_ptr = regs_RX_2056_rev7;
17499                         break;
17500
17501                 case 8:
17502                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
17503                         regs_TX_2056_ptr = regs_TX_2056_rev8;
17504                         regs_RX_2056_ptr = regs_RX_2056_rev8;
17505                         break;
17506
17507                 case 11:
17508                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
17509                         regs_TX_2056_ptr = regs_TX_2056_rev11;
17510                         regs_RX_2056_ptr = regs_RX_2056_rev11;
17511                         break;
17512
17513                 default:
17514                         ASSERT(0);
17515                         break;
17516                 }
17517         }
17518
17519         wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
17520
17521         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
17522
17523         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
17524
17525         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
17526
17527         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
17528 }
17529
17530 static void wlc_phy_radio_postinit_2056(phy_info_t *pi)
17531 {
17532         mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
17533
17534         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
17535         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
17536         udelay(1000);
17537         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
17538
17539         if ((pi->sh->boardflags2 & BFL2_LEGACY)
17540             || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN)) {
17541
17542                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
17543         } else {
17544
17545                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
17546         }
17547
17548         mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
17549
17550         if (pi->phy_init_por) {
17551                 wlc_phy_radio205x_rcal(pi);
17552         }
17553 }
17554
17555 static void wlc_phy_radio_init_2057(phy_info_t *pi)
17556 {
17557         radio_20xx_regs_t *regs_2057_ptr = NULL;
17558
17559         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
17560
17561                 regs_2057_ptr = regs_2057_rev4;
17562         } else if (NREV_IS(pi->pubpi.phy_rev, 8)
17563                    || NREV_IS(pi->pubpi.phy_rev, 9)) {
17564                 switch (pi->pubpi.radiorev) {
17565                 case 5:
17566
17567                         if (pi->pubpi.radiover == 0x0) {
17568
17569                                 regs_2057_ptr = regs_2057_rev5;
17570
17571                         } else if (pi->pubpi.radiover == 0x1) {
17572
17573                                 regs_2057_ptr = regs_2057_rev5v1;
17574                         } else {
17575                                 ASSERT(0);
17576                                 break;
17577                         }
17578
17579                 case 7:
17580
17581                         regs_2057_ptr = regs_2057_rev7;
17582                         break;
17583
17584                 case 8:
17585
17586                         regs_2057_ptr = regs_2057_rev8;
17587                         break;
17588
17589                 default:
17590                         ASSERT(0);
17591                         break;
17592                 }
17593         } else {
17594                 ASSERT(0);
17595         }
17596
17597         wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
17598 }
17599
17600 static void wlc_phy_radio_postinit_2057(phy_info_t *pi)
17601 {
17602
17603         mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
17604
17605         if (pi->sh->chip == !BCM6362_CHIP_ID) {
17606
17607                 mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x2, 0x2);
17608         }
17609
17610         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
17611         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
17612         mdelay(2);
17613         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
17614         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
17615
17616         if (pi->phy_init_por) {
17617                 wlc_phy_radio205x_rcal(pi);
17618                 wlc_phy_radio2057_rccal(pi);
17619         }
17620
17621         mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
17622 }
17623
17624 static bool
17625 wlc_phy_chan2freq_nphy(phy_info_t *pi, uint channel, int *f,
17626                        chan_info_nphy_radio2057_t **t0,
17627                        chan_info_nphy_radio205x_t **t1,
17628                        chan_info_nphy_radio2057_rev5_t **t2,
17629                        chan_info_nphy_2055_t **t3)
17630 {
17631         uint i;
17632         chan_info_nphy_radio2057_t *chan_info_tbl_p_0 = NULL;
17633         chan_info_nphy_radio205x_t *chan_info_tbl_p_1 = NULL;
17634         chan_info_nphy_radio2057_rev5_t *chan_info_tbl_p_2 = NULL;
17635         u32 tbl_len = 0;
17636
17637         int freq = 0;
17638
17639         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17640
17641                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
17642
17643                         chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
17644                         tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
17645
17646                 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
17647                            || NREV_IS(pi->pubpi.phy_rev, 9)) {
17648                         switch (pi->pubpi.radiorev) {
17649
17650                         case 5:
17651
17652                                 if (pi->pubpi.radiover == 0x0) {
17653
17654                                         chan_info_tbl_p_2 =
17655                                             chan_info_nphyrev8_2057_rev5;
17656                                         tbl_len =
17657                                             ARRAY_SIZE
17658                                             (chan_info_nphyrev8_2057_rev5);
17659
17660                                 } else if (pi->pubpi.radiover == 0x1) {
17661
17662                                         chan_info_tbl_p_2 =
17663                                             chan_info_nphyrev9_2057_rev5v1;
17664                                         tbl_len =
17665                                             ARRAY_SIZE
17666                                             (chan_info_nphyrev9_2057_rev5v1);
17667
17668                                 }
17669                                 break;
17670
17671                         case 7:
17672                                 chan_info_tbl_p_0 =
17673                                     chan_info_nphyrev8_2057_rev7;
17674                                 tbl_len =
17675                                     ARRAY_SIZE(chan_info_nphyrev8_2057_rev7);
17676                                 break;
17677
17678                         case 8:
17679                                 chan_info_tbl_p_0 =
17680                                     chan_info_nphyrev8_2057_rev8;
17681                                 tbl_len =
17682                                     ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
17683                                 break;
17684
17685                         default:
17686                                 if (NORADIO_ENAB(pi->pubpi)) {
17687                                         goto fail;
17688                                 }
17689                                 break;
17690                         }
17691                 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
17692
17693                         chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
17694                         tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
17695                 } else {
17696                         goto fail;
17697                 }
17698
17699                 for (i = 0; i < tbl_len; i++) {
17700                         if (pi->pubpi.radiorev == 5) {
17701
17702                                 if (chan_info_tbl_p_2[i].chan == channel)
17703                                         break;
17704                         } else {
17705
17706                                 if (chan_info_tbl_p_0[i].chan == channel)
17707                                         break;
17708                         }
17709                 }
17710
17711                 if (i >= tbl_len) {
17712                         ASSERT(i < tbl_len);
17713                         goto fail;
17714                 }
17715                 if (pi->pubpi.radiorev == 5) {
17716                         *t2 = &chan_info_tbl_p_2[i];
17717                         freq = chan_info_tbl_p_2[i].freq;
17718                 } else {
17719                         *t0 = &chan_info_tbl_p_0[i];
17720                         freq = chan_info_tbl_p_0[i].freq;
17721                 }
17722
17723         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17724                 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
17725                         chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
17726                         tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
17727                 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17728                         chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
17729                         tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
17730                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
17731                            || NREV_IS(pi->pubpi.phy_rev, 6)) {
17732                         switch (pi->pubpi.radiorev) {
17733                         case 5:
17734                                 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
17735                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
17736                                 break;
17737                         case 6:
17738                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
17739                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
17740                                 break;
17741                         case 7:
17742                         case 9:
17743                                 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
17744                                 tbl_len =
17745                                     ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
17746                                 break;
17747                         case 8:
17748                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
17749                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
17750                                 break;
17751                         case 11:
17752                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
17753                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v11);
17754                                 break;
17755                         default:
17756                                 if (NORADIO_ENAB(pi->pubpi)) {
17757                                         goto fail;
17758                                 }
17759                                 break;
17760                         }
17761                 }
17762
17763                 for (i = 0; i < tbl_len; i++) {
17764                         if (chan_info_tbl_p_1[i].chan == channel)
17765                                 break;
17766                 }
17767
17768                 if (i >= tbl_len) {
17769                         ASSERT(i < tbl_len);
17770                         goto fail;
17771                 }
17772                 *t1 = &chan_info_tbl_p_1[i];
17773                 freq = chan_info_tbl_p_1[i].freq;
17774
17775         } else {
17776                 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
17777                         if (chan_info_nphy_2055[i].chan == channel)
17778                                 break;
17779
17780                 if (i >= ARRAY_SIZE(chan_info_nphy_2055)) {
17781                         ASSERT(i < ARRAY_SIZE(chan_info_nphy_2055));
17782                         goto fail;
17783                 }
17784                 *t3 = &chan_info_nphy_2055[i];
17785                 freq = chan_info_nphy_2055[i].freq;
17786         }
17787
17788         *f = freq;
17789         return true;
17790
17791  fail:
17792         *f = WL_CHAN_FREQ_RANGE_2G;
17793         return false;
17794 }
17795
17796 u8 wlc_phy_get_chan_freq_range_nphy(phy_info_t *pi, uint channel)
17797 {
17798         int freq;
17799         chan_info_nphy_radio2057_t *t0 = NULL;
17800         chan_info_nphy_radio205x_t *t1 = NULL;
17801         chan_info_nphy_radio2057_rev5_t *t2 = NULL;
17802         chan_info_nphy_2055_t *t3 = NULL;
17803
17804         if (NORADIO_ENAB(pi->pubpi))
17805                 return WL_CHAN_FREQ_RANGE_2G;
17806
17807         if (channel == 0)
17808                 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
17809
17810         wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
17811
17812         if (CHSPEC_IS2G(pi->radio_chanspec))
17813                 return WL_CHAN_FREQ_RANGE_2G;
17814
17815         if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN)) {
17816                 return WL_CHAN_FREQ_RANGE_5GL;
17817         } else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN)) {
17818                 return WL_CHAN_FREQ_RANGE_5GM;
17819         } else {
17820                 return WL_CHAN_FREQ_RANGE_5GH;
17821         }
17822 }
17823
17824 static void
17825 wlc_phy_chanspec_radio2055_setup(phy_info_t *pi, chan_info_nphy_2055_t *ci)
17826 {
17827
17828         write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
17829         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
17830         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
17831         write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
17832
17833         WLC_PHY_WAR_PR51571(pi);
17834
17835         write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
17836         write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
17837         write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
17838         write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
17839
17840         WLC_PHY_WAR_PR51571(pi);
17841
17842         write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
17843         write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
17844         write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
17845         write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
17846
17847         WLC_PHY_WAR_PR51571(pi);
17848
17849         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
17850                         ci->RF_core1_lgbuf_a_tune);
17851         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
17852                         ci->RF_core1_lgbuf_g_tune);
17853         write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
17854         write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
17855                         ci->RF_core1_tx_pga_pad_tn);
17856
17857         WLC_PHY_WAR_PR51571(pi);
17858
17859         write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
17860                         ci->RF_core1_tx_mx_bgtrim);
17861         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
17862                         ci->RF_core2_lgbuf_a_tune);
17863         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
17864                         ci->RF_core2_lgbuf_g_tune);
17865         write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
17866
17867         WLC_PHY_WAR_PR51571(pi);
17868
17869         write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
17870                         ci->RF_core2_tx_pga_pad_tn);
17871         write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
17872                         ci->RF_core2_tx_mx_bgtrim);
17873
17874         udelay(50);
17875
17876         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
17877         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
17878
17879         WLC_PHY_WAR_PR51571(pi);
17880
17881         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
17882
17883         udelay(300);
17884 }
17885
17886 static void
17887 wlc_phy_chanspec_radio2056_setup(phy_info_t *pi,
17888                                  const chan_info_nphy_radio205x_t *ci)
17889 {
17890         radio_regs_t *regs_SYN_2056_ptr = NULL;
17891
17892         write_radio_reg(pi,
17893                         RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
17894                         ci->RF_SYN_pll_vcocal1);
17895         write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
17896                         ci->RF_SYN_pll_vcocal2);
17897         write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
17898                         ci->RF_SYN_pll_refdiv);
17899         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
17900                         ci->RF_SYN_pll_mmd2);
17901         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
17902                         ci->RF_SYN_pll_mmd1);
17903         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
17904                         ci->RF_SYN_pll_loopfilter1);
17905         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
17906                         ci->RF_SYN_pll_loopfilter2);
17907         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
17908                         ci->RF_SYN_pll_loopfilter3);
17909         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
17910                         ci->RF_SYN_pll_loopfilter4);
17911         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
17912                         ci->RF_SYN_pll_loopfilter5);
17913         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
17914                         ci->RF_SYN_reserved_addr27);
17915         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
17916                         ci->RF_SYN_reserved_addr28);
17917         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
17918                         ci->RF_SYN_reserved_addr29);
17919         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
17920                         ci->RF_SYN_logen_VCOBUF1);
17921         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
17922                         ci->RF_SYN_logen_MIXER2);
17923         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
17924                         ci->RF_SYN_logen_BUF3);
17925         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
17926                         ci->RF_SYN_logen_BUF4);
17927
17928         write_radio_reg(pi,
17929                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
17930                         ci->RF_RX0_lnaa_tune);
17931         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
17932                         ci->RF_RX0_lnag_tune);
17933         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
17934                         ci->RF_TX0_intpaa_boost_tune);
17935         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
17936                         ci->RF_TX0_intpag_boost_tune);
17937         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
17938                         ci->RF_TX0_pada_boost_tune);
17939         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
17940                         ci->RF_TX0_padg_boost_tune);
17941         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
17942                         ci->RF_TX0_pgaa_boost_tune);
17943         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
17944                         ci->RF_TX0_pgag_boost_tune);
17945         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
17946                         ci->RF_TX0_mixa_boost_tune);
17947         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
17948                         ci->RF_TX0_mixg_boost_tune);
17949
17950         write_radio_reg(pi,
17951                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
17952                         ci->RF_RX1_lnaa_tune);
17953         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
17954                         ci->RF_RX1_lnag_tune);
17955         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
17956                         ci->RF_TX1_intpaa_boost_tune);
17957         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
17958                         ci->RF_TX1_intpag_boost_tune);
17959         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
17960                         ci->RF_TX1_pada_boost_tune);
17961         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
17962                         ci->RF_TX1_padg_boost_tune);
17963         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
17964                         ci->RF_TX1_pgaa_boost_tune);
17965         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
17966                         ci->RF_TX1_pgag_boost_tune);
17967         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
17968                         ci->RF_TX1_mixa_boost_tune);
17969         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
17970                         ci->RF_TX1_mixg_boost_tune);
17971
17972         if (NREV_IS(pi->pubpi.phy_rev, 3))
17973                 regs_SYN_2056_ptr = regs_SYN_2056;
17974         else if (NREV_IS(pi->pubpi.phy_rev, 4))
17975                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
17976         else {
17977                 switch (pi->pubpi.radiorev) {
17978                 case 5:
17979                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
17980                         break;
17981                 case 6:
17982                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
17983                         break;
17984                 case 7:
17985                 case 9:
17986                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
17987                         break;
17988                 case 8:
17989                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
17990                         break;
17991                 case 11:
17992                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
17993                         break;
17994                 }
17995         }
17996         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17997                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
17998                                 RADIO_2056_SYN,
17999                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
18000         } else {
18001                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
18002                                 RADIO_2056_SYN,
18003                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
18004         }
18005
18006         if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
18007                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18008                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
18009                                         RADIO_2056_SYN, 0x1f);
18010                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
18011                                         RADIO_2056_SYN, 0x1f);
18012
18013                         if ((pi->sh->chip == BCM4716_CHIP_ID) ||
18014                             (pi->sh->chip == BCM47162_CHIP_ID)) {
18015
18016                                 write_radio_reg(pi,
18017                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
18018                                                 RADIO_2056_SYN, 0x14);
18019                                 write_radio_reg(pi,
18020                                                 RADIO_2056_SYN_PLL_CP2 |
18021                                                 RADIO_2056_SYN, 0x00);
18022                         } else {
18023                                 write_radio_reg(pi,
18024                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
18025                                                 RADIO_2056_SYN, 0xb);
18026                                 write_radio_reg(pi,
18027                                                 RADIO_2056_SYN_PLL_CP2 |
18028                                                 RADIO_2056_SYN, 0x14);
18029                         }
18030                 }
18031         }
18032
18033         if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
18034             (CHSPEC_IS2G(pi->radio_chanspec))) {
18035                 write_radio_reg(pi,
18036                                 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
18037                                 0x1f);
18038                 write_radio_reg(pi,
18039                                 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
18040                                 0x1f);
18041                 write_radio_reg(pi,
18042                                 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
18043                                 0xb);
18044                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
18045                                 0x20);
18046         }
18047
18048         if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
18049                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18050                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
18051                                         RADIO_2056_SYN, 0x1f);
18052                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
18053                                         RADIO_2056_SYN, 0x1f);
18054                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
18055                                         RADIO_2056_SYN, 0x5);
18056                         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
18057                                         RADIO_2056_SYN, 0xc);
18058                 }
18059         }
18060
18061         if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
18062                 u16 pag_boost_tune;
18063                 u16 padg_boost_tune;
18064                 u16 pgag_boost_tune;
18065                 u16 mixg_boost_tune;
18066                 u16 bias, cascbias;
18067                 uint core;
18068
18069                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18070
18071                         if (NREV_GE(pi->pubpi.phy_rev, 5)) {
18072
18073                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18074                                                  PADG_IDAC, 0xcc);
18075
18076                                 if ((pi->sh->chip == BCM4716_CHIP_ID) ||
18077                                     (pi->sh->chip ==
18078                                      BCM47162_CHIP_ID)) {
18079                                         bias = 0x40;
18080                                         cascbias = 0x45;
18081                                         pag_boost_tune = 0x5;
18082                                         pgag_boost_tune = 0x33;
18083                                         padg_boost_tune = 0x77;
18084                                         mixg_boost_tune = 0x55;
18085                                 } else {
18086                                         bias = 0x25;
18087                                         cascbias = 0x20;
18088
18089                                         if ((pi->sh->chip ==
18090                                              BCM43224_CHIP_ID)
18091                                             || (pi->sh->chip ==
18092                                                 BCM43225_CHIP_ID)
18093                                             || (pi->sh->chip ==
18094                                                 BCM43421_CHIP_ID)) {
18095                                                 if (pi->sh->chippkg ==
18096                                                     BCM43224_FAB_SMIC) {
18097                                                         bias = 0x2a;
18098                                                         cascbias = 0x38;
18099                                                 }
18100                                         }
18101
18102                                         pag_boost_tune = 0x4;
18103                                         pgag_boost_tune = 0x03;
18104                                         padg_boost_tune = 0x77;
18105                                         mixg_boost_tune = 0x65;
18106                                 }
18107
18108                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18109                                                  INTPAG_IMAIN_STAT, bias);
18110                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18111                                                  INTPAG_IAUX_STAT, bias);
18112                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18113                                                  INTPAG_CASCBIAS, cascbias);
18114
18115                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18116                                                  INTPAG_BOOST_TUNE,
18117                                                  pag_boost_tune);
18118                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18119                                                  PGAG_BOOST_TUNE,
18120                                                  pgag_boost_tune);
18121                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18122                                                  PADG_BOOST_TUNE,
18123                                                  padg_boost_tune);
18124                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18125                                                  MIXG_BOOST_TUNE,
18126                                                  mixg_boost_tune);
18127                         } else {
18128
18129                                 bias = IS40MHZ(pi) ? 0x40 : 0x20;
18130
18131                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18132                                                  INTPAG_IMAIN_STAT, bias);
18133                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18134                                                  INTPAG_IAUX_STAT, bias);
18135                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18136                                                  INTPAG_CASCBIAS, 0x30);
18137                         }
18138                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
18139                                          0xee);
18140                 }
18141         }
18142
18143         if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
18144             && CHSPEC_IS5G(pi->radio_chanspec)) {
18145                 u16 paa_boost_tune;
18146                 u16 pada_boost_tune;
18147                 u16 pgaa_boost_tune;
18148                 u16 mixa_boost_tune;
18149                 u16 freq, pabias, cascbias;
18150                 uint core;
18151
18152                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
18153
18154                 if (freq < 5150) {
18155
18156                         paa_boost_tune = 0xa;
18157                         pada_boost_tune = 0x77;
18158                         pgaa_boost_tune = 0xf;
18159                         mixa_boost_tune = 0xf;
18160                 } else if (freq < 5340) {
18161
18162                         paa_boost_tune = 0x8;
18163                         pada_boost_tune = 0x77;
18164                         pgaa_boost_tune = 0xfb;
18165                         mixa_boost_tune = 0xf;
18166                 } else if (freq < 5650) {
18167
18168                         paa_boost_tune = 0x0;
18169                         pada_boost_tune = 0x77;
18170                         pgaa_boost_tune = 0xb;
18171                         mixa_boost_tune = 0xf;
18172                 } else {
18173
18174                         paa_boost_tune = 0x0;
18175                         pada_boost_tune = 0x77;
18176                         if (freq != 5825) {
18177                                 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
18178                         } else {
18179                                 pgaa_boost_tune = 6;
18180                         }
18181                         mixa_boost_tune = 0xf;
18182                 }
18183
18184                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18185                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18186                                          INTPAA_BOOST_TUNE, paa_boost_tune);
18187                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18188                                          PADA_BOOST_TUNE, pada_boost_tune);
18189                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18190                                          PGAA_BOOST_TUNE, pgaa_boost_tune);
18191                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18192                                          MIXA_BOOST_TUNE, mixa_boost_tune);
18193
18194                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18195                                          TXSPARE1, 0x30);
18196                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18197                                          PA_SPARE2, 0xee);
18198
18199                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18200                                          PADA_CASCBIAS, 0x3);
18201
18202                         cascbias = 0x30;
18203
18204                         if ((pi->sh->chip == BCM43224_CHIP_ID) ||
18205                             (pi->sh->chip == BCM43225_CHIP_ID) ||
18206                             (pi->sh->chip == BCM43421_CHIP_ID)) {
18207                                 if (pi->sh->chippkg == BCM43224_FAB_SMIC) {
18208                                         cascbias = 0x35;
18209                                 }
18210                         }
18211
18212                         pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
18213
18214                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18215                                          INTPAA_IAUX_STAT, pabias);
18216                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18217                                          INTPAA_IMAIN_STAT, pabias);
18218                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18219                                          INTPAA_CASCBIAS, cascbias);
18220                 }
18221         }
18222
18223         udelay(50);
18224
18225         wlc_phy_radio205x_vcocal_nphy(pi);
18226 }
18227
18228 void wlc_phy_radio205x_vcocal_nphy(phy_info_t *pi)
18229 {
18230         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18231                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
18232                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
18233                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
18234                               (1 << 2));
18235                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
18236         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18237                 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
18238                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
18239                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
18240                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
18241                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
18242         }
18243
18244         udelay(300);
18245 }
18246
18247 #define MAX_205x_RCAL_WAITLOOPS 10000
18248
18249 static u16 wlc_phy_radio205x_rcal(phy_info_t *pi)
18250 {
18251         u16 rcal_reg = 0;
18252         int i;
18253
18254         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18255
18256                 if (pi->pubpi.radiorev == 5) {
18257
18258                         and_phy_reg(pi, 0x342, ~(0x1 << 1));
18259
18260                         udelay(10);
18261
18262                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
18263                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
18264                                       0x1);
18265                 }
18266                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
18267
18268                 udelay(10);
18269
18270                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
18271
18272                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18273                         rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
18274                         if (rcal_reg & 0x1) {
18275                                 break;
18276                         }
18277                         udelay(100);
18278                 }
18279
18280                 ASSERT(i < MAX_205x_RCAL_WAITLOOPS);
18281
18282                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
18283
18284                 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
18285
18286                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
18287                 if (pi->pubpi.radiorev == 5) {
18288
18289                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
18290                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
18291                                       0x0);
18292                 }
18293
18294                 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
18295
18296                         mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
18297                                       rcal_reg);
18298                         mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
18299                                       rcal_reg << 2);
18300                 }
18301
18302         } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
18303                 u16 savereg;
18304
18305                 savereg =
18306                     read_radio_reg(pi,
18307                                    RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN);
18308                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
18309                                 savereg | 0x7);
18310                 udelay(10);
18311
18312                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18313                                 0x1);
18314                 udelay(10);
18315
18316                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18317                                 0x9);
18318
18319                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18320                         rcal_reg = read_radio_reg(pi,
18321                                                   RADIO_2056_SYN_RCAL_CODE_OUT |
18322                                                   RADIO_2056_SYN);
18323                         if (rcal_reg & 0x80) {
18324                                 break;
18325                         }
18326                         udelay(100);
18327                 }
18328
18329                 ASSERT(i < MAX_205x_RCAL_WAITLOOPS);
18330
18331                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18332                                 0x1);
18333
18334                 rcal_reg =
18335                     read_radio_reg(pi,
18336                                    RADIO_2056_SYN_RCAL_CODE_OUT |
18337                                    RADIO_2056_SYN);
18338
18339                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18340                                 0x0);
18341
18342                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
18343                                 savereg);
18344
18345                 return rcal_reg & 0x1f;
18346         }
18347         return rcal_reg & 0x3e;
18348 }
18349
18350 static void
18351 wlc_phy_chanspec_radio2057_setup(phy_info_t *pi,
18352                                  const chan_info_nphy_radio2057_t *ci,
18353                                  const chan_info_nphy_radio2057_rev5_t *ci2)
18354 {
18355         int coreNum;
18356         u16 txmix2g_tune_boost_pu = 0;
18357         u16 pad2g_tune_pus = 0;
18358
18359         if (pi->pubpi.radiorev == 5) {
18360
18361                 write_radio_reg(pi,
18362                                 RADIO_2057_VCOCAL_COUNTVAL0,
18363                                 ci2->RF_vcocal_countval0);
18364                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
18365                                 ci2->RF_vcocal_countval1);
18366                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
18367                                 ci2->RF_rfpll_refmaster_sparextalsize);
18368                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18369                                 ci2->RF_rfpll_loopfilter_r1);
18370                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18371                                 ci2->RF_rfpll_loopfilter_c2);
18372                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18373                                 ci2->RF_rfpll_loopfilter_c1);
18374                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
18375                                 ci2->RF_cp_kpd_idac);
18376                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
18377                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
18378                 write_radio_reg(pi,
18379                                 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
18380                 write_radio_reg(pi,
18381                                 RADIO_2057_LOGEN_MX2G_TUNE,
18382                                 ci2->RF_logen_mx2g_tune);
18383                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
18384                                 ci2->RF_logen_indbuf2g_tune);
18385
18386                 write_radio_reg(pi,
18387                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
18388                                 ci2->RF_txmix2g_tune_boost_pu_core0);
18389                 write_radio_reg(pi,
18390                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
18391                                 ci2->RF_pad2g_tune_pus_core0);
18392                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
18393                                 ci2->RF_lna2g_tune_core0);
18394
18395                 write_radio_reg(pi,
18396                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
18397                                 ci2->RF_txmix2g_tune_boost_pu_core1);
18398                 write_radio_reg(pi,
18399                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
18400                                 ci2->RF_pad2g_tune_pus_core1);
18401                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
18402                                 ci2->RF_lna2g_tune_core1);
18403
18404         } else {
18405
18406                 write_radio_reg(pi,
18407                                 RADIO_2057_VCOCAL_COUNTVAL0,
18408                                 ci->RF_vcocal_countval0);
18409                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
18410                                 ci->RF_vcocal_countval1);
18411                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
18412                                 ci->RF_rfpll_refmaster_sparextalsize);
18413                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18414                                 ci->RF_rfpll_loopfilter_r1);
18415                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18416                                 ci->RF_rfpll_loopfilter_c2);
18417                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18418                                 ci->RF_rfpll_loopfilter_c1);
18419                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
18420                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
18421                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
18422                 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
18423                 write_radio_reg(pi,
18424                                 RADIO_2057_LOGEN_MX2G_TUNE,
18425                                 ci->RF_logen_mx2g_tune);
18426                 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
18427                                 ci->RF_logen_mx5g_tune);
18428                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
18429                                 ci->RF_logen_indbuf2g_tune);
18430                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
18431                                 ci->RF_logen_indbuf5g_tune);
18432
18433                 write_radio_reg(pi,
18434                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
18435                                 ci->RF_txmix2g_tune_boost_pu_core0);
18436                 write_radio_reg(pi,
18437                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
18438                                 ci->RF_pad2g_tune_pus_core0);
18439                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
18440                                 ci->RF_pga_boost_tune_core0);
18441                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
18442                                 ci->RF_txmix5g_boost_tune_core0);
18443                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
18444                                 ci->RF_pad5g_tune_misc_pus_core0);
18445                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
18446                                 ci->RF_lna2g_tune_core0);
18447                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
18448                                 ci->RF_lna5g_tune_core0);
18449
18450                 write_radio_reg(pi,
18451                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
18452                                 ci->RF_txmix2g_tune_boost_pu_core1);
18453                 write_radio_reg(pi,
18454                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
18455                                 ci->RF_pad2g_tune_pus_core1);
18456                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
18457                                 ci->RF_pga_boost_tune_core1);
18458                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
18459                                 ci->RF_txmix5g_boost_tune_core1);
18460                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
18461                                 ci->RF_pad5g_tune_misc_pus_core1);
18462                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
18463                                 ci->RF_lna2g_tune_core1);
18464                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
18465                                 ci->RF_lna5g_tune_core1);
18466         }
18467
18468         if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
18469
18470                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18471                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18472                                         0x3f);
18473                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18474                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18475                                         0x8);
18476                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18477                                         0x8);
18478                 } else {
18479                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18480                                         0x1f);
18481                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18482                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18483                                         0x8);
18484                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18485                                         0x8);
18486                 }
18487         } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
18488                    (pi->pubpi.radiorev == 8)) {
18489
18490                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18491                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18492                                         0x1b);
18493                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
18494                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18495                                         0xa);
18496                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18497                                         0xa);
18498                 } else {
18499                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18500                                         0x1f);
18501                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18502                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18503                                         0x8);
18504                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18505                                         0x8);
18506                 }
18507
18508         }
18509
18510         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18511                 if (PHY_IPA(pi)) {
18512                         if (pi->pubpi.radiorev == 3) {
18513                                 txmix2g_tune_boost_pu = 0x6b;
18514                         }
18515
18516                         if (pi->pubpi.radiorev == 5)
18517                                 pad2g_tune_pus = 0x73;
18518
18519                 } else {
18520                         if (pi->pubpi.radiorev != 5) {
18521                                 pad2g_tune_pus = 0x3;
18522
18523                                 txmix2g_tune_boost_pu = 0x61;
18524                         }
18525                 }
18526
18527                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18528
18529                         if (txmix2g_tune_boost_pu != 0)
18530                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
18531                                                  TXMIX2G_TUNE_BOOST_PU,
18532                                                  txmix2g_tune_boost_pu);
18533
18534                         if (pad2g_tune_pus != 0)
18535                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
18536                                                  PAD2G_TUNE_PUS,
18537                                                  pad2g_tune_pus);
18538                 }
18539         }
18540
18541         udelay(50);
18542
18543         wlc_phy_radio205x_vcocal_nphy(pi);
18544 }
18545
18546 static u16 wlc_phy_radio2057_rccal(phy_info_t *pi)
18547 {
18548         u16 rccal_valid;
18549         int i;
18550         bool chip43226_6362A0;
18551
18552         chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
18553                             || (pi->pubpi.radiorev == 4)
18554                             || (pi->pubpi.radiorev == 6));
18555
18556         rccal_valid = 0;
18557         if (chip43226_6362A0) {
18558                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
18559                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
18560         } else {
18561                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
18562
18563                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
18564         }
18565         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18566         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18567
18568         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18569                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18570                 if (rccal_valid & 0x2) {
18571                         break;
18572                 }
18573                 udelay(500);
18574         }
18575
18576         ASSERT(rccal_valid & 0x2);
18577
18578         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18579
18580         rccal_valid = 0;
18581         if (chip43226_6362A0) {
18582                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
18583                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
18584         } else {
18585                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
18586
18587                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
18588         }
18589         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18590         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18591
18592         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18593                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18594                 if (rccal_valid & 0x2) {
18595                         break;
18596                 }
18597                 udelay(500);
18598         }
18599
18600         ASSERT(rccal_valid & 0x2);
18601
18602         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18603
18604         rccal_valid = 0;
18605         if (chip43226_6362A0) {
18606                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
18607
18608                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
18609                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
18610         } else {
18611                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
18612                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18613                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
18614         }
18615         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18616
18617         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18618                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18619                 if (rccal_valid & 0x2) {
18620                         break;
18621                 }
18622                 udelay(500);
18623         }
18624
18625         ASSERT(rccal_valid & 0x2);
18626
18627         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18628
18629         return rccal_valid;
18630 }
18631
18632 static void
18633 wlc_phy_adjust_rx_analpfbw_nphy(phy_info_t *pi, u16 reduction_factr)
18634 {
18635         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18636                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18637                     CHSPEC_IS40(pi->radio_chanspec)) {
18638                         if (!pi->nphy_anarxlpf_adjusted) {
18639                                 write_radio_reg(pi,
18640                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18641                                                  RADIO_2056_RX0),
18642                                                 ((pi->nphy_rccal_value +
18643                                                   reduction_factr) | 0x80));
18644
18645                                 pi->nphy_anarxlpf_adjusted = true;
18646                         }
18647                 } else {
18648                         if (pi->nphy_anarxlpf_adjusted) {
18649                                 write_radio_reg(pi,
18650                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18651                                                  RADIO_2056_RX0),
18652                                                 (pi->nphy_rccal_value | 0x80));
18653
18654                                 pi->nphy_anarxlpf_adjusted = false;
18655                         }
18656                 }
18657         }
18658 }
18659
18660 static void
18661 wlc_phy_adjust_min_noisevar_nphy(phy_info_t *pi, int ntones, int *tone_id_buf,
18662                                  u32 *noise_var_buf)
18663 {
18664         int i;
18665         u32 offset;
18666         int tone_id;
18667         int tbllen =
18668             CHSPEC_IS40(pi->
18669                         radio_chanspec) ? NPHY_NOISEVAR_TBLLEN40 :
18670             NPHY_NOISEVAR_TBLLEN20;
18671
18672         if (pi->nphy_noisevars_adjusted) {
18673                 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
18674                         tone_id = pi->nphy_saved_noisevars.tone_id[i];
18675                         offset = (tone_id >= 0) ?
18676                             ((tone_id * 2) + 1) : (tbllen + (tone_id * 2) + 1);
18677                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18678                                                  offset, 32,
18679                                                  (void *)&pi->
18680                                                  nphy_saved_noisevars.
18681                                                  min_noise_vars[i]);
18682                 }
18683
18684                 pi->nphy_saved_noisevars.bufcount = 0;
18685                 pi->nphy_noisevars_adjusted = false;
18686         }
18687
18688         if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
18689                 pi->nphy_saved_noisevars.bufcount = 0;
18690
18691                 for (i = 0; i < ntones; i++) {
18692                         tone_id = tone_id_buf[i];
18693                         offset = (tone_id >= 0) ?
18694                             ((tone_id * 2) + 1) : (tbllen + (tone_id * 2) + 1);
18695                         pi->nphy_saved_noisevars.tone_id[i] = tone_id;
18696                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18697                                                 offset, 32,
18698                                                 &pi->nphy_saved_noisevars.
18699                                                 min_noise_vars[i]);
18700                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18701                                                  offset, 32,
18702                                                  (void *)&noise_var_buf[i]);
18703                         pi->nphy_saved_noisevars.bufcount++;
18704                 }
18705
18706                 pi->nphy_noisevars_adjusted = true;
18707         }
18708 }
18709
18710 static void wlc_phy_adjust_crsminpwr_nphy(phy_info_t *pi, u8 minpwr)
18711 {
18712         u16 regval;
18713
18714         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18715                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18716                     CHSPEC_IS40(pi->radio_chanspec)) {
18717                         if (!pi->nphy_crsminpwr_adjusted) {
18718                                 regval = read_phy_reg(pi, 0x27d);
18719                                 pi->nphy_crsminpwr[0] = regval & 0xff;
18720                                 regval &= 0xff00;
18721                                 regval |= (u16) minpwr;
18722                                 write_phy_reg(pi, 0x27d, regval);
18723
18724                                 regval = read_phy_reg(pi, 0x280);
18725                                 pi->nphy_crsminpwr[1] = regval & 0xff;
18726                                 regval &= 0xff00;
18727                                 regval |= (u16) minpwr;
18728                                 write_phy_reg(pi, 0x280, regval);
18729
18730                                 regval = read_phy_reg(pi, 0x283);
18731                                 pi->nphy_crsminpwr[2] = regval & 0xff;
18732                                 regval &= 0xff00;
18733                                 regval |= (u16) minpwr;
18734                                 write_phy_reg(pi, 0x283, regval);
18735
18736                                 pi->nphy_crsminpwr_adjusted = true;
18737                         }
18738                 } else {
18739                         if (pi->nphy_crsminpwr_adjusted) {
18740                                 regval = read_phy_reg(pi, 0x27d);
18741                                 regval &= 0xff00;
18742                                 regval |= pi->nphy_crsminpwr[0];
18743                                 write_phy_reg(pi, 0x27d, regval);
18744
18745                                 regval = read_phy_reg(pi, 0x280);
18746                                 regval &= 0xff00;
18747                                 regval |= pi->nphy_crsminpwr[1];
18748                                 write_phy_reg(pi, 0x280, regval);
18749
18750                                 regval = read_phy_reg(pi, 0x283);
18751                                 regval &= 0xff00;
18752                                 regval |= pi->nphy_crsminpwr[2];
18753                                 write_phy_reg(pi, 0x283, regval);
18754
18755                                 pi->nphy_crsminpwr_adjusted = false;
18756                         }
18757                 }
18758         }
18759 }
18760
18761 static void wlc_phy_txlpfbw_nphy(phy_info_t *pi)
18762 {
18763         u8 tx_lpf_bw = 0;
18764
18765         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18766                 if (CHSPEC_IS40(pi->radio_chanspec)) {
18767                         tx_lpf_bw = 3;
18768                 } else {
18769                         tx_lpf_bw = 1;
18770                 }
18771
18772                 if (PHY_IPA(pi)) {
18773                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18774                                 tx_lpf_bw = 5;
18775                         } else {
18776                                 tx_lpf_bw = 4;
18777                         }
18778                 }
18779                 write_phy_reg(pi, 0xe8,
18780                               (tx_lpf_bw << 0) |
18781                               (tx_lpf_bw << 3) |
18782                               (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18783
18784                 if (PHY_IPA(pi)) {
18785
18786                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18787                                 tx_lpf_bw = 4;
18788                         } else {
18789                                 tx_lpf_bw = 1;
18790                         }
18791
18792                         write_phy_reg(pi, 0xe9,
18793                                       (tx_lpf_bw << 0) |
18794                                       (tx_lpf_bw << 3) |
18795                                       (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18796                 }
18797         }
18798 }
18799
18800 static void wlc_phy_spurwar_nphy(phy_info_t *pi)
18801 {
18802         u16 cur_channel = 0;
18803         int nphy_adj_tone_id_buf[] = { 57, 58 };
18804         u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
18805         bool isAdjustNoiseVar = false;
18806         uint numTonesAdjust = 0;
18807         u32 tempval = 0;
18808
18809         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18810                 if (pi->phyhang_avoid)
18811                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
18812
18813                 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
18814
18815                 if (pi->nphy_gband_spurwar_en) {
18816
18817                         wlc_phy_adjust_rx_analpfbw_nphy(pi,
18818                                                         NPHY_ANARXLPFBW_REDUCTIONFACT);
18819
18820                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18821                                 if ((cur_channel == 11)
18822                                     && CHSPEC_IS40(pi->radio_chanspec)) {
18823
18824                                         wlc_phy_adjust_min_noisevar_nphy(pi, 2,
18825                                                                          nphy_adj_tone_id_buf,
18826                                                                          nphy_adj_noise_var_buf);
18827                                 } else {
18828
18829                                         wlc_phy_adjust_min_noisevar_nphy(pi, 0,
18830                                                                          NULL,
18831                                                                          NULL);
18832                                 }
18833                         }
18834                         wlc_phy_adjust_crsminpwr_nphy(pi,
18835                                                       NPHY_ADJUSTED_MINCRSPOWER);
18836                 }
18837
18838                 if ((pi->nphy_gband_spurwar2_en)
18839                     && CHSPEC_IS2G(pi->radio_chanspec)) {
18840
18841                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18842                                 switch (cur_channel) {
18843                                 case 3:
18844                                         nphy_adj_tone_id_buf[0] = 57;
18845                                         nphy_adj_tone_id_buf[1] = 58;
18846                                         nphy_adj_noise_var_buf[0] = 0x22f;
18847                                         nphy_adj_noise_var_buf[1] = 0x25f;
18848                                         isAdjustNoiseVar = true;
18849                                         break;
18850                                 case 4:
18851                                         nphy_adj_tone_id_buf[0] = 41;
18852                                         nphy_adj_tone_id_buf[1] = 42;
18853                                         nphy_adj_noise_var_buf[0] = 0x22f;
18854                                         nphy_adj_noise_var_buf[1] = 0x25f;
18855                                         isAdjustNoiseVar = true;
18856                                         break;
18857                                 case 5:
18858                                         nphy_adj_tone_id_buf[0] = 25;
18859                                         nphy_adj_tone_id_buf[1] = 26;
18860                                         nphy_adj_noise_var_buf[0] = 0x24f;
18861                                         nphy_adj_noise_var_buf[1] = 0x25f;
18862                                         isAdjustNoiseVar = true;
18863                                         break;
18864                                 case 6:
18865                                         nphy_adj_tone_id_buf[0] = 9;
18866                                         nphy_adj_tone_id_buf[1] = 10;
18867                                         nphy_adj_noise_var_buf[0] = 0x22f;
18868                                         nphy_adj_noise_var_buf[1] = 0x24f;
18869                                         isAdjustNoiseVar = true;
18870                                         break;
18871                                 case 7:
18872                                         nphy_adj_tone_id_buf[0] = 121;
18873                                         nphy_adj_tone_id_buf[1] = 122;
18874                                         nphy_adj_noise_var_buf[0] = 0x18f;
18875                                         nphy_adj_noise_var_buf[1] = 0x24f;
18876                                         isAdjustNoiseVar = true;
18877                                         break;
18878                                 case 8:
18879                                         nphy_adj_tone_id_buf[0] = 105;
18880                                         nphy_adj_tone_id_buf[1] = 106;
18881                                         nphy_adj_noise_var_buf[0] = 0x22f;
18882                                         nphy_adj_noise_var_buf[1] = 0x25f;
18883                                         isAdjustNoiseVar = true;
18884                                         break;
18885                                 case 9:
18886                                         nphy_adj_tone_id_buf[0] = 89;
18887                                         nphy_adj_tone_id_buf[1] = 90;
18888                                         nphy_adj_noise_var_buf[0] = 0x22f;
18889                                         nphy_adj_noise_var_buf[1] = 0x24f;
18890                                         isAdjustNoiseVar = true;
18891                                         break;
18892                                 case 10:
18893                                         nphy_adj_tone_id_buf[0] = 73;
18894                                         nphy_adj_tone_id_buf[1] = 74;
18895                                         nphy_adj_noise_var_buf[0] = 0x22f;
18896                                         nphy_adj_noise_var_buf[1] = 0x24f;
18897                                         isAdjustNoiseVar = true;
18898                                         break;
18899                                 default:
18900                                         isAdjustNoiseVar = false;
18901                                         break;
18902                                 }
18903                         }
18904
18905                         if (isAdjustNoiseVar) {
18906                                 numTonesAdjust = sizeof(nphy_adj_tone_id_buf) /
18907                                     sizeof(nphy_adj_tone_id_buf[0]);
18908
18909                                 wlc_phy_adjust_min_noisevar_nphy(pi,
18910                                                                  numTonesAdjust,
18911                                                                  nphy_adj_tone_id_buf,
18912                                                                  nphy_adj_noise_var_buf);
18913
18914                                 tempval = 0;
18915
18916                         } else {
18917
18918                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
18919                                                                  NULL);
18920                         }
18921                 }
18922
18923                 if ((pi->nphy_aband_spurwar_en) &&
18924                     (CHSPEC_IS5G(pi->radio_chanspec))) {
18925                         switch (cur_channel) {
18926                         case 54:
18927                                 nphy_adj_tone_id_buf[0] = 32;
18928                                 nphy_adj_noise_var_buf[0] = 0x25f;
18929                                 break;
18930                         case 38:
18931                         case 102:
18932                         case 118:
18933                                 if ((pi->sh->chip == BCM4716_CHIP_ID) &&
18934                                     (pi->sh->chippkg == BCM4717_PKG_ID)) {
18935                                         nphy_adj_tone_id_buf[0] = 32;
18936                                         nphy_adj_noise_var_buf[0] = 0x21f;
18937                                 } else {
18938                                         nphy_adj_tone_id_buf[0] = 0;
18939                                         nphy_adj_noise_var_buf[0] = 0x0;
18940                                 }
18941                                 break;
18942                         case 134:
18943                                 nphy_adj_tone_id_buf[0] = 32;
18944                                 nphy_adj_noise_var_buf[0] = 0x21f;
18945                                 break;
18946                         case 151:
18947                                 nphy_adj_tone_id_buf[0] = 16;
18948                                 nphy_adj_noise_var_buf[0] = 0x23f;
18949                                 break;
18950                         case 153:
18951                         case 161:
18952                                 nphy_adj_tone_id_buf[0] = 48;
18953                                 nphy_adj_noise_var_buf[0] = 0x23f;
18954                                 break;
18955                         default:
18956                                 nphy_adj_tone_id_buf[0] = 0;
18957                                 nphy_adj_noise_var_buf[0] = 0x0;
18958                                 break;
18959                         }
18960
18961                         if (nphy_adj_tone_id_buf[0]
18962                             && nphy_adj_noise_var_buf[0]) {
18963                                 wlc_phy_adjust_min_noisevar_nphy(pi, 1,
18964                                                                  nphy_adj_tone_id_buf,
18965                                                                  nphy_adj_noise_var_buf);
18966                         } else {
18967                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
18968                                                                  NULL);
18969                         }
18970                 }
18971
18972                 if (pi->phyhang_avoid)
18973                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
18974         }
18975 }
18976
18977 static void
18978 wlc_phy_chanspec_nphy_setup(phy_info_t *pi, chanspec_t chanspec,
18979                             const nphy_sfo_cfg_t *ci)
18980 {
18981         u16 val;
18982
18983         val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
18984         if (CHSPEC_IS5G(chanspec) && !val) {
18985
18986                 val = R_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param);
18987                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param,
18988                       (val | MAC_PHY_FORCE_CLK));
18989
18990                 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
18991                            (BBCFG_RESETCCA | BBCFG_RESETRX));
18992
18993                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param, val);
18994
18995                 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
18996         } else if (!CHSPEC_IS5G(chanspec) && val) {
18997
18998                 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
18999
19000                 val = R_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param);
19001                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param,
19002                       (val | MAC_PHY_FORCE_CLK));
19003
19004                 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
19005                             (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
19006
19007                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param, val);
19008         }
19009
19010         write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
19011         write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
19012         write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
19013
19014         write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
19015         write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
19016         write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
19017
19018         if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
19019                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
19020
19021                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
19022         } else {
19023                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
19024                                         NPHY_ClassifierCtrl_ofdm_en);
19025
19026                 if (CHSPEC_IS2G(chanspec))
19027                         and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
19028         }
19029
19030         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
19031                 wlc_phy_txpwr_fixpower_nphy(pi);
19032         }
19033
19034         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
19035
19036                 wlc_phy_adjust_lnagaintbl_nphy(pi);
19037         }
19038
19039         wlc_phy_txlpfbw_nphy(pi);
19040
19041         if (NREV_GE(pi->pubpi.phy_rev, 3)
19042             && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
19043                 u8 spuravoid = 0;
19044
19045                 val = CHSPEC_CHANNEL(chanspec);
19046                 if (!CHSPEC_IS40(pi->radio_chanspec)) {
19047                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19048                                 if ((val == 13) || (val == 14) || (val == 153)) {
19049                                         spuravoid = 1;
19050                                 }
19051                         } else {
19052
19053                                 if (((val >= 5) && (val <= 8)) || (val == 13)
19054                                     || (val == 14)) {
19055                                         spuravoid = 1;
19056                                 }
19057                         }
19058                 } else {
19059                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19060                                 if (val == 54) {
19061                                         spuravoid = 1;
19062                                 }
19063                         } else {
19064
19065                                 if (pi->nphy_aband_spurwar_en &&
19066                                     ((val == 38) || (val == 102)
19067                                      || (val == 118))) {
19068                                         if ((pi->sh->chip ==
19069                                              BCM4716_CHIP_ID)
19070                                             && (pi->sh->chippkg ==
19071                                                 BCM4717_PKG_ID)) {
19072                                                 spuravoid = 0;
19073                                         } else {
19074                                                 spuravoid = 1;
19075                                         }
19076                                 }
19077                         }
19078                 }
19079
19080                 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
19081                         spuravoid = 1;
19082
19083                 if ((pi->sh->chip == BCM4716_CHIP_ID) ||
19084                     (pi->sh->chip == BCM47162_CHIP_ID)) {
19085                         si_pmu_spuravoid(pi->sh->sih, pi->sh->osh, spuravoid);
19086                 } else {
19087                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
19088                         si_pmu_spuravoid(pi->sh->sih, pi->sh->osh, spuravoid);
19089                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
19090                 }
19091
19092                 if ((pi->sh->chip == BCM43224_CHIP_ID) ||
19093                     (pi->sh->chip == BCM43225_CHIP_ID) ||
19094                     (pi->sh->chip == BCM43421_CHIP_ID)) {
19095
19096                         if (spuravoid == 1) {
19097
19098                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_l,
19099                                       0x5341);
19100                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_h,
19101                                       0x8);
19102                         } else {
19103
19104                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_l,
19105                                       0x8889);
19106                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_h,
19107                                       0x8);
19108                         }
19109                 }
19110
19111                 if (!((pi->sh->chip == BCM4716_CHIP_ID) ||
19112                       (pi->sh->chip == BCM47162_CHIP_ID))) {
19113                         wlapi_bmac_core_phypll_reset(pi->sh->physhim);
19114                 }
19115
19116                 mod_phy_reg(pi, 0x01, (0x1 << 15),
19117                             ((spuravoid > 0) ? (0x1 << 15) : 0));
19118
19119                 wlc_phy_resetcca_nphy(pi);
19120
19121                 pi->phy_isspuravoid = (spuravoid > 0);
19122         }
19123
19124         if (NREV_LT(pi->pubpi.phy_rev, 7))
19125                 write_phy_reg(pi, 0x17e, 0x3830);
19126
19127         wlc_phy_spurwar_nphy(pi);
19128 }
19129
19130 void wlc_phy_chanspec_set_nphy(phy_info_t *pi, chanspec_t chanspec)
19131 {
19132         int freq;
19133         chan_info_nphy_radio2057_t *t0 = NULL;
19134         chan_info_nphy_radio205x_t *t1 = NULL;
19135         chan_info_nphy_radio2057_rev5_t *t2 = NULL;
19136         chan_info_nphy_2055_t *t3 = NULL;
19137
19138         if (NORADIO_ENAB(pi->pubpi)) {
19139                 return;
19140         }
19141
19142         if (!wlc_phy_chan2freq_nphy
19143             (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
19144                 return;
19145
19146         wlc_phy_chanspec_radio_set((wlc_phy_t *) pi, chanspec);
19147
19148         if (CHSPEC_BW(chanspec) != pi->bw)
19149                 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
19150
19151         if (CHSPEC_IS40(chanspec)) {
19152                 if (CHSPEC_SB_UPPER(chanspec)) {
19153                         or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
19154                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19155                                 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
19156                         }
19157                 } else {
19158                         and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
19159                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19160                                 and_phy_reg(pi, 0x310,
19161                                             (~PRIM_SEL_UP20 & 0xffff));
19162                         }
19163                 }
19164         }
19165
19166         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19167                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19168
19169                         if ((pi->pubpi.radiorev <= 4)
19170                             || (pi->pubpi.radiorev == 6)) {
19171                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
19172                                               0x2,
19173                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
19174                                                : 0));
19175                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
19176                                               0x2,
19177                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
19178                                                : 0));
19179                         }
19180
19181                         wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
19182                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
19183                                                     (pi->pubpi.radiorev ==
19184                                                      5) ? (const nphy_sfo_cfg_t
19185                                                            *)&(t2->
19186                                                                PHY_BW1a)
19187                                                     : (const nphy_sfo_cfg_t *)
19188                                                     &(t0->PHY_BW1a));
19189
19190                 } else {
19191
19192                         mod_radio_reg(pi,
19193                                       RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
19194                                       0x4,
19195                                       (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
19196                         wlc_phy_chanspec_radio2056_setup(pi, t1);
19197
19198                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
19199                                                     (const nphy_sfo_cfg_t *)
19200                                                     &(t1->PHY_BW1a));
19201                 }
19202
19203         } else {
19204
19205                 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
19206                               (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
19207                                : (0x05 << 4)));
19208
19209                 wlc_phy_chanspec_radio2055_setup(pi, t3);
19210                 wlc_phy_chanspec_nphy_setup(pi, chanspec,
19211                                             (const nphy_sfo_cfg_t *)&(t3->
19212                                                                       PHY_BW1a));
19213         }
19214
19215 }
19216
19217 static void wlc_phy_savecal_nphy(phy_info_t *pi)
19218 {
19219         void *tbl_ptr;
19220         int coreNum;
19221         u16 *txcal_radio_regs = NULL;
19222
19223         if (pi->phyhang_avoid)
19224                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19225
19226         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19227
19228                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
19229                                           &pi->calibration_cache.
19230                                           rxcal_coeffs_2G);
19231
19232                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19233                         txcal_radio_regs =
19234                             pi->calibration_cache.txcal_radio_regs_2G;
19235                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19236
19237                         pi->calibration_cache.txcal_radio_regs_2G[0] =
19238                             read_radio_reg(pi,
19239                                            RADIO_2056_TX_LOFT_FINE_I |
19240                                            RADIO_2056_TX0);
19241                         pi->calibration_cache.txcal_radio_regs_2G[1] =
19242                             read_radio_reg(pi,
19243                                            RADIO_2056_TX_LOFT_FINE_Q |
19244                                            RADIO_2056_TX0);
19245                         pi->calibration_cache.txcal_radio_regs_2G[2] =
19246                             read_radio_reg(pi,
19247                                            RADIO_2056_TX_LOFT_FINE_I |
19248                                            RADIO_2056_TX1);
19249                         pi->calibration_cache.txcal_radio_regs_2G[3] =
19250                             read_radio_reg(pi,
19251                                            RADIO_2056_TX_LOFT_FINE_Q |
19252                                            RADIO_2056_TX1);
19253
19254                         pi->calibration_cache.txcal_radio_regs_2G[4] =
19255                             read_radio_reg(pi,
19256                                            RADIO_2056_TX_LOFT_COARSE_I |
19257                                            RADIO_2056_TX0);
19258                         pi->calibration_cache.txcal_radio_regs_2G[5] =
19259                             read_radio_reg(pi,
19260                                            RADIO_2056_TX_LOFT_COARSE_Q |
19261                                            RADIO_2056_TX0);
19262                         pi->calibration_cache.txcal_radio_regs_2G[6] =
19263                             read_radio_reg(pi,
19264                                            RADIO_2056_TX_LOFT_COARSE_I |
19265                                            RADIO_2056_TX1);
19266                         pi->calibration_cache.txcal_radio_regs_2G[7] =
19267                             read_radio_reg(pi,
19268                                            RADIO_2056_TX_LOFT_COARSE_Q |
19269                                            RADIO_2056_TX1);
19270                 } else {
19271                         pi->calibration_cache.txcal_radio_regs_2G[0] =
19272                             read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
19273                         pi->calibration_cache.txcal_radio_regs_2G[1] =
19274                             read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
19275                         pi->calibration_cache.txcal_radio_regs_2G[2] =
19276                             read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
19277                         pi->calibration_cache.txcal_radio_regs_2G[3] =
19278                             read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
19279                 }
19280
19281                 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
19282                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
19283         } else {
19284
19285                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
19286                                           &pi->calibration_cache.
19287                                           rxcal_coeffs_5G);
19288
19289                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19290                         txcal_radio_regs =
19291                             pi->calibration_cache.txcal_radio_regs_5G;
19292                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19293
19294                         pi->calibration_cache.txcal_radio_regs_5G[0] =
19295                             read_radio_reg(pi,
19296                                            RADIO_2056_TX_LOFT_FINE_I |
19297                                            RADIO_2056_TX0);
19298                         pi->calibration_cache.txcal_radio_regs_5G[1] =
19299                             read_radio_reg(pi,
19300                                            RADIO_2056_TX_LOFT_FINE_Q |
19301                                            RADIO_2056_TX0);
19302                         pi->calibration_cache.txcal_radio_regs_5G[2] =
19303                             read_radio_reg(pi,
19304                                            RADIO_2056_TX_LOFT_FINE_I |
19305                                            RADIO_2056_TX1);
19306                         pi->calibration_cache.txcal_radio_regs_5G[3] =
19307                             read_radio_reg(pi,
19308                                            RADIO_2056_TX_LOFT_FINE_Q |
19309                                            RADIO_2056_TX1);
19310
19311                         pi->calibration_cache.txcal_radio_regs_5G[4] =
19312                             read_radio_reg(pi,
19313                                            RADIO_2056_TX_LOFT_COARSE_I |
19314                                            RADIO_2056_TX0);
19315                         pi->calibration_cache.txcal_radio_regs_5G[5] =
19316                             read_radio_reg(pi,
19317                                            RADIO_2056_TX_LOFT_COARSE_Q |
19318                                            RADIO_2056_TX0);
19319                         pi->calibration_cache.txcal_radio_regs_5G[6] =
19320                             read_radio_reg(pi,
19321                                            RADIO_2056_TX_LOFT_COARSE_I |
19322                                            RADIO_2056_TX1);
19323                         pi->calibration_cache.txcal_radio_regs_5G[7] =
19324                             read_radio_reg(pi,
19325                                            RADIO_2056_TX_LOFT_COARSE_Q |
19326                                            RADIO_2056_TX1);
19327                 } else {
19328                         pi->calibration_cache.txcal_radio_regs_5G[0] =
19329                             read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
19330                         pi->calibration_cache.txcal_radio_regs_5G[1] =
19331                             read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
19332                         pi->calibration_cache.txcal_radio_regs_5G[2] =
19333                             read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
19334                         pi->calibration_cache.txcal_radio_regs_5G[3] =
19335                             read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
19336                 }
19337
19338                 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
19339                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
19340         }
19341         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19342                 for (coreNum = 0; coreNum <= 1; coreNum++) {
19343
19344                         txcal_radio_regs[2 * coreNum] =
19345                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19346                                             LOFT_FINE_I);
19347                         txcal_radio_regs[2 * coreNum + 1] =
19348                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19349                                             LOFT_FINE_Q);
19350
19351                         txcal_radio_regs[2 * coreNum + 4] =
19352                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19353                                             LOFT_COARSE_I);
19354                         txcal_radio_regs[2 * coreNum + 5] =
19355                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19356                                             LOFT_COARSE_Q);
19357                 }
19358         }
19359
19360         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
19361
19362         if (pi->phyhang_avoid)
19363                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19364 }
19365
19366 static void wlc_phy_restorecal_nphy(phy_info_t *pi)
19367 {
19368         u16 *loft_comp;
19369         u16 txcal_coeffs_bphy[4];
19370         u16 *tbl_ptr;
19371         int coreNum;
19372         u16 *txcal_radio_regs = NULL;
19373
19374         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19375                 if (pi->nphy_iqcal_chanspec_2G == 0)
19376                         return;
19377
19378                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
19379                 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
19380         } else {
19381                 if (pi->nphy_iqcal_chanspec_5G == 0)
19382                         return;
19383
19384                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
19385                 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
19386         }
19387
19388         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16,
19389                                  (void *)tbl_ptr);
19390
19391         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19392                 txcal_coeffs_bphy[0] = tbl_ptr[0];
19393                 txcal_coeffs_bphy[1] = tbl_ptr[1];
19394                 txcal_coeffs_bphy[2] = tbl_ptr[2];
19395                 txcal_coeffs_bphy[3] = tbl_ptr[3];
19396         } else {
19397                 txcal_coeffs_bphy[0] = 0;
19398                 txcal_coeffs_bphy[1] = 0;
19399                 txcal_coeffs_bphy[2] = 0;
19400                 txcal_coeffs_bphy[3] = 0;
19401         }
19402
19403         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
19404                                  txcal_coeffs_bphy);
19405
19406         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
19407
19408         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
19409
19410         if (NREV_LT(pi->pubpi.phy_rev, 2))
19411                 wlc_phy_tx_iq_war_nphy(pi);
19412
19413         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19414                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19415                         txcal_radio_regs =
19416                             pi->calibration_cache.txcal_radio_regs_2G;
19417                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19418
19419                         write_radio_reg(pi,
19420                                         RADIO_2056_TX_LOFT_FINE_I |
19421                                         RADIO_2056_TX0,
19422                                         pi->calibration_cache.
19423                                         txcal_radio_regs_2G[0]);
19424                         write_radio_reg(pi,
19425                                         RADIO_2056_TX_LOFT_FINE_Q |
19426                                         RADIO_2056_TX0,
19427                                         pi->calibration_cache.
19428                                         txcal_radio_regs_2G[1]);
19429                         write_radio_reg(pi,
19430                                         RADIO_2056_TX_LOFT_FINE_I |
19431                                         RADIO_2056_TX1,
19432                                         pi->calibration_cache.
19433                                         txcal_radio_regs_2G[2]);
19434                         write_radio_reg(pi,
19435                                         RADIO_2056_TX_LOFT_FINE_Q |
19436                                         RADIO_2056_TX1,
19437                                         pi->calibration_cache.
19438                                         txcal_radio_regs_2G[3]);
19439
19440                         write_radio_reg(pi,
19441                                         RADIO_2056_TX_LOFT_COARSE_I |
19442                                         RADIO_2056_TX0,
19443                                         pi->calibration_cache.
19444                                         txcal_radio_regs_2G[4]);
19445                         write_radio_reg(pi,
19446                                         RADIO_2056_TX_LOFT_COARSE_Q |
19447                                         RADIO_2056_TX0,
19448                                         pi->calibration_cache.
19449                                         txcal_radio_regs_2G[5]);
19450                         write_radio_reg(pi,
19451                                         RADIO_2056_TX_LOFT_COARSE_I |
19452                                         RADIO_2056_TX1,
19453                                         pi->calibration_cache.
19454                                         txcal_radio_regs_2G[6]);
19455                         write_radio_reg(pi,
19456                                         RADIO_2056_TX_LOFT_COARSE_Q |
19457                                         RADIO_2056_TX1,
19458                                         pi->calibration_cache.
19459                                         txcal_radio_regs_2G[7]);
19460                 } else {
19461                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
19462                                         pi->calibration_cache.
19463                                         txcal_radio_regs_2G[0]);
19464                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19465                                         pi->calibration_cache.
19466                                         txcal_radio_regs_2G[1]);
19467                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19468                                         pi->calibration_cache.
19469                                         txcal_radio_regs_2G[2]);
19470                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19471                                         pi->calibration_cache.
19472                                         txcal_radio_regs_2G[3]);
19473                 }
19474
19475                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19476                                           &pi->calibration_cache.
19477                                           rxcal_coeffs_2G);
19478         } else {
19479                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19480                         txcal_radio_regs =
19481                             pi->calibration_cache.txcal_radio_regs_5G;
19482                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19483
19484                         write_radio_reg(pi,
19485                                         RADIO_2056_TX_LOFT_FINE_I |
19486                                         RADIO_2056_TX0,
19487                                         pi->calibration_cache.
19488                                         txcal_radio_regs_5G[0]);
19489                         write_radio_reg(pi,
19490                                         RADIO_2056_TX_LOFT_FINE_Q |
19491                                         RADIO_2056_TX0,
19492                                         pi->calibration_cache.
19493                                         txcal_radio_regs_5G[1]);
19494                         write_radio_reg(pi,
19495                                         RADIO_2056_TX_LOFT_FINE_I |
19496                                         RADIO_2056_TX1,
19497                                         pi->calibration_cache.
19498                                         txcal_radio_regs_5G[2]);
19499                         write_radio_reg(pi,
19500                                         RADIO_2056_TX_LOFT_FINE_Q |
19501                                         RADIO_2056_TX1,
19502                                         pi->calibration_cache.
19503                                         txcal_radio_regs_5G[3]);
19504
19505                         write_radio_reg(pi,
19506                                         RADIO_2056_TX_LOFT_COARSE_I |
19507                                         RADIO_2056_TX0,
19508                                         pi->calibration_cache.
19509                                         txcal_radio_regs_5G[4]);
19510                         write_radio_reg(pi,
19511                                         RADIO_2056_TX_LOFT_COARSE_Q |
19512                                         RADIO_2056_TX0,
19513                                         pi->calibration_cache.
19514                                         txcal_radio_regs_5G[5]);
19515                         write_radio_reg(pi,
19516                                         RADIO_2056_TX_LOFT_COARSE_I |
19517                                         RADIO_2056_TX1,
19518                                         pi->calibration_cache.
19519                                         txcal_radio_regs_5G[6]);
19520                         write_radio_reg(pi,
19521                                         RADIO_2056_TX_LOFT_COARSE_Q |
19522                                         RADIO_2056_TX1,
19523                                         pi->calibration_cache.
19524                                         txcal_radio_regs_5G[7]);
19525                 } else {
19526                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
19527                                         pi->calibration_cache.
19528                                         txcal_radio_regs_5G[0]);
19529                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19530                                         pi->calibration_cache.
19531                                         txcal_radio_regs_5G[1]);
19532                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19533                                         pi->calibration_cache.
19534                                         txcal_radio_regs_5G[2]);
19535                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19536                                         pi->calibration_cache.
19537                                         txcal_radio_regs_5G[3]);
19538                 }
19539
19540                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19541                                           &pi->calibration_cache.
19542                                           rxcal_coeffs_5G);
19543         }
19544
19545         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19546                 for (coreNum = 0; coreNum <= 1; coreNum++) {
19547
19548                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19549                                          LOFT_FINE_I,
19550                                          txcal_radio_regs[2 * coreNum]);
19551                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19552                                          LOFT_FINE_Q,
19553                                          txcal_radio_regs[2 * coreNum + 1]);
19554
19555                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19556                                          LOFT_COARSE_I,
19557                                          txcal_radio_regs[2 * coreNum + 4]);
19558                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19559                                          LOFT_COARSE_Q,
19560                                          txcal_radio_regs[2 * coreNum + 5]);
19561                 }
19562         }
19563 }
19564
19565 void wlc_phy_antsel_init(wlc_phy_t *ppi, bool lut_init)
19566 {
19567         phy_info_t *pi = (phy_info_t *) ppi;
19568         u16 mask = 0xfc00;
19569         u32 mc = 0;
19570
19571         if (NREV_GE(pi->pubpi.phy_rev, 7))
19572                 return;
19573
19574         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19575                 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
19576
19577                 if (lut_init == false)
19578                         return;
19579
19580                 if (pi->srom_fem2g.antswctrllut == 0) {
19581                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19582                                                  1, 0x02, 16, &v0);
19583                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19584                                                  1, 0x03, 16, &v1);
19585                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19586                                                  1, 0x08, 16, &v2);
19587                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19588                                                  1, 0x0C, 16, &v3);
19589                 } else {
19590                         ASSERT(0);
19591                 }
19592
19593                 if (pi->srom_fem5g.antswctrllut == 0) {
19594                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19595                                                  1, 0x12, 16, &v0);
19596                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19597                                                  1, 0x13, 16, &v1);
19598                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19599                                                  1, 0x18, 16, &v2);
19600                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19601                                                  1, 0x1C, 16, &v3);
19602                 } else {
19603                         ASSERT(0);
19604                 }
19605         } else {
19606
19607                 write_phy_reg(pi, 0xc8, 0x0);
19608                 write_phy_reg(pi, 0xc9, 0x0);
19609
19610                 si_gpiocontrol(pi->sh->sih, mask, mask, GPIO_DRV_PRIORITY);
19611
19612                 mc = R_REG(pi->sh->osh, &pi->regs->maccontrol);
19613                 mc &= ~MCTL_GPOUT_SEL_MASK;
19614                 W_REG(pi->sh->osh, &pi->regs->maccontrol, mc);
19615
19616                 OR_REG(pi->sh->osh, &pi->regs->psm_gpio_oe, mask);
19617
19618                 AND_REG(pi->sh->osh, &pi->regs->psm_gpio_out, ~mask);
19619
19620                 if (lut_init) {
19621                         write_phy_reg(pi, 0xf8, 0x02d8);
19622                         write_phy_reg(pi, 0xf9, 0x0301);
19623                         write_phy_reg(pi, 0xfa, 0x02d8);
19624                         write_phy_reg(pi, 0xfb, 0x0301);
19625                 }
19626         }
19627 }
19628
19629 u16 wlc_phy_classifier_nphy(phy_info_t *pi, u16 mask, u16 val)
19630 {
19631         u16 curr_ctl, new_ctl;
19632         bool suspended = false;
19633
19634         if (D11REV_IS(pi->sh->corerev, 16)) {
19635                 suspended =
19636                     (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC) ?
19637                     false : true;
19638                 if (!suspended)
19639                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
19640         }
19641
19642         curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
19643
19644         new_ctl = (curr_ctl & (~mask)) | (val & mask);
19645
19646         mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
19647
19648         if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
19649                 wlapi_enable_mac(pi->sh->physhim);
19650
19651         return new_ctl;
19652 }
19653
19654 static void wlc_phy_clip_det_nphy(phy_info_t *pi, u8 write, u16 *vals)
19655 {
19656
19657         if (write == 0) {
19658                 vals[0] = read_phy_reg(pi, 0x2c);
19659                 vals[1] = read_phy_reg(pi, 0x42);
19660         } else {
19661                 write_phy_reg(pi, 0x2c, vals[0]);
19662                 write_phy_reg(pi, 0x42, vals[1]);
19663         }
19664 }
19665
19666 void wlc_phy_force_rfseq_nphy(phy_info_t *pi, u8 cmd)
19667 {
19668         u16 trigger_mask, status_mask;
19669         u16 orig_RfseqCoreActv;
19670
19671         switch (cmd) {
19672         case NPHY_RFSEQ_RX2TX:
19673                 trigger_mask = NPHY_RfseqTrigger_rx2tx;
19674                 status_mask = NPHY_RfseqStatus_rx2tx;
19675                 break;
19676         case NPHY_RFSEQ_TX2RX:
19677                 trigger_mask = NPHY_RfseqTrigger_tx2rx;
19678                 status_mask = NPHY_RfseqStatus_tx2rx;
19679                 break;
19680         case NPHY_RFSEQ_RESET2RX:
19681                 trigger_mask = NPHY_RfseqTrigger_reset2rx;
19682                 status_mask = NPHY_RfseqStatus_reset2rx;
19683                 break;
19684         case NPHY_RFSEQ_UPDATEGAINH:
19685                 trigger_mask = NPHY_RfseqTrigger_updategainh;
19686                 status_mask = NPHY_RfseqStatus_updategainh;
19687                 break;
19688         case NPHY_RFSEQ_UPDATEGAINL:
19689                 trigger_mask = NPHY_RfseqTrigger_updategainl;
19690                 status_mask = NPHY_RfseqStatus_updategainl;
19691                 break;
19692         case NPHY_RFSEQ_UPDATEGAINU:
19693                 trigger_mask = NPHY_RfseqTrigger_updategainu;
19694                 status_mask = NPHY_RfseqStatus_updategainu;
19695                 break;
19696         default:
19697                 return;
19698         }
19699
19700         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
19701         or_phy_reg(pi, 0xa1,
19702                    (NPHY_RfseqMode_CoreActv_override |
19703                     NPHY_RfseqMode_Trigger_override));
19704         or_phy_reg(pi, 0xa3, trigger_mask);
19705         SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
19706         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
19707
19708         ASSERT((read_phy_reg(pi, 0xa4) & status_mask) == 0);
19709 }
19710
19711 static void
19712 wlc_phy_set_rfseq_nphy(phy_info_t *pi, u8 cmd, u8 *events, u8 *dlys,
19713                        u8 len)
19714 {
19715         u32 t1_offset, t2_offset;
19716         u8 ctr;
19717         u8 end_event =
19718             NREV_GE(pi->pubpi.phy_rev,
19719                     3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
19720         u8 end_dly = 1;
19721
19722         ASSERT(len <= 16);
19723
19724         if (pi->phyhang_avoid)
19725                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19726
19727         t1_offset = cmd << 4;
19728         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
19729                                  events);
19730         t2_offset = t1_offset + 0x080;
19731         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
19732                                  dlys);
19733
19734         for (ctr = len; ctr < 16; ctr++) {
19735                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19736                                          t1_offset + ctr, 8, &end_event);
19737                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19738                                          t2_offset + ctr, 8, &end_dly);
19739         }
19740
19741         if (pi->phyhang_avoid)
19742                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19743 }
19744
19745 static u16 wlc_phy_read_lpf_bw_ctl_nphy(phy_info_t *pi, u16 offset)
19746 {
19747         u16 lpf_bw_ctl_val = 0;
19748         u16 rx2tx_lpf_rc_lut_offset = 0;
19749
19750         if (offset == 0) {
19751                 if (CHSPEC_IS40(pi->radio_chanspec)) {
19752                         rx2tx_lpf_rc_lut_offset = 0x159;
19753                 } else {
19754                         rx2tx_lpf_rc_lut_offset = 0x154;
19755                 }
19756         } else {
19757                 rx2tx_lpf_rc_lut_offset = offset;
19758         }
19759         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19760                                 (u32) rx2tx_lpf_rc_lut_offset, 16,
19761                                 &lpf_bw_ctl_val);
19762
19763         lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
19764
19765         return lpf_bw_ctl_val;
19766 }
19767
19768 static void
19769 wlc_phy_rfctrl_override_nphy_rev7(phy_info_t *pi, u16 field, u16 value,
19770                                   u8 core_mask, u8 off, u8 override_id)
19771 {
19772         u8 core_num;
19773         u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
19774         u8 val_shift = 0;
19775
19776         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19777                 en_mask = field;
19778                 for (core_num = 0; core_num < 2; core_num++) {
19779                         if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
19780
19781                                 switch (field) {
19782                                 case (0x1 << 2):
19783                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19784                                         val_addr = (core_num == 0) ? 0x7a :
19785                                             0x7d;
19786                                         val_mask = (0x1 << 1);
19787                                         val_shift = 1;
19788                                         break;
19789                                 case (0x1 << 3):
19790                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19791                                         val_addr = (core_num == 0) ? 0x7a :
19792                                             0x7d;
19793                                         val_mask = (0x1 << 2);
19794                                         val_shift = 2;
19795                                         break;
19796                                 case (0x1 << 4):
19797                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19798                                         val_addr = (core_num == 0) ? 0x7a :
19799                                             0x7d;
19800                                         val_mask = (0x1 << 4);
19801                                         val_shift = 4;
19802                                         break;
19803                                 case (0x1 << 5):
19804                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19805                                         val_addr = (core_num == 0) ? 0x7a :
19806                                             0x7d;
19807                                         val_mask = (0x1 << 5);
19808                                         val_shift = 5;
19809                                         break;
19810                                 case (0x1 << 6):
19811                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19812                                         val_addr = (core_num == 0) ? 0x7a :
19813                                             0x7d;
19814                                         val_mask = (0x1 << 6);
19815                                         val_shift = 6;
19816                                         break;
19817                                 case (0x1 << 7):
19818                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19819                                         val_addr = (core_num == 0) ? 0x7a :
19820                                             0x7d;
19821                                         val_mask = (0x1 << 7);
19822                                         val_shift = 7;
19823                                         break;
19824                                 case (0x1 << 10):
19825                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19826                                         val_addr = (core_num == 0) ? 0xf8 :
19827                                             0xfa;
19828                                         val_mask = (0x7 << 4);
19829                                         val_shift = 4;
19830                                         break;
19831                                 case (0x1 << 11):
19832                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19833                                         val_addr = (core_num == 0) ? 0x7b :
19834                                             0x7e;
19835                                         val_mask = (0xffff << 0);
19836                                         val_shift = 0;
19837                                         break;
19838                                 case (0x1 << 12):
19839                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19840                                         val_addr = (core_num == 0) ? 0x7c :
19841                                             0x7f;
19842                                         val_mask = (0xffff << 0);
19843                                         val_shift = 0;
19844                                         break;
19845                                 case (0x3 << 13):
19846                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19847                                         val_addr = (core_num == 0) ? 0x348 :
19848                                             0x349;
19849                                         val_mask = (0xff << 0);
19850                                         val_shift = 0;
19851                                         break;
19852                                 case (0x1 << 13):
19853                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19854                                         val_addr = (core_num == 0) ? 0x348 :
19855                                             0x349;
19856                                         val_mask = (0xf << 0);
19857                                         val_shift = 0;
19858                                         break;
19859                                 default:
19860                                         addr = 0xffff;
19861                                         break;
19862                                 }
19863                         } else if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID1) {
19864
19865                                 switch (field) {
19866                                 case (0x1 << 1):
19867                                         en_addr = (core_num == 0) ? 0x342 :
19868                                             0x343;
19869                                         val_addr = (core_num == 0) ? 0x340 :
19870                                             0x341;
19871                                         val_mask = (0x1 << 1);
19872                                         val_shift = 1;
19873                                         break;
19874                                 case (0x1 << 3):
19875                                         en_addr = (core_num == 0) ? 0x342 :
19876                                             0x343;
19877                                         val_addr = (core_num == 0) ? 0x340 :
19878                                             0x341;
19879                                         val_mask = (0x1 << 3);
19880                                         val_shift = 3;
19881                                         break;
19882                                 case (0x1 << 5):
19883                                         en_addr = (core_num == 0) ? 0x342 :
19884                                             0x343;
19885                                         val_addr = (core_num == 0) ? 0x340 :
19886                                             0x341;
19887                                         val_mask = (0x1 << 5);
19888                                         val_shift = 5;
19889                                         break;
19890                                 case (0x1 << 4):
19891                                         en_addr = (core_num == 0) ? 0x342 :
19892                                             0x343;
19893                                         val_addr = (core_num == 0) ? 0x340 :
19894                                             0x341;
19895                                         val_mask = (0x1 << 4);
19896                                         val_shift = 4;
19897                                         break;
19898                                 case (0x1 << 2):
19899
19900                                         en_addr = (core_num == 0) ? 0x342 :
19901                                             0x343;
19902                                         val_addr = (core_num == 0) ? 0x340 :
19903                                             0x341;
19904                                         val_mask = (0x1 << 2);
19905                                         val_shift = 2;
19906                                         break;
19907                                 case (0x1 << 7):
19908
19909                                         en_addr = (core_num == 0) ? 0x342 :
19910                                             0x343;
19911                                         val_addr = (core_num == 0) ? 0x340 :
19912                                             0x341;
19913                                         val_mask = (0x7 << 8);
19914                                         val_shift = 8;
19915                                         break;
19916                                 case (0x1 << 11):
19917                                         en_addr = (core_num == 0) ? 0x342 :
19918                                             0x343;
19919                                         val_addr = (core_num == 0) ? 0x340 :
19920                                             0x341;
19921                                         val_mask = (0x1 << 14);
19922                                         val_shift = 14;
19923                                         break;
19924                                 case (0x1 << 10):
19925                                         en_addr = (core_num == 0) ? 0x342 :
19926                                             0x343;
19927                                         val_addr = (core_num == 0) ? 0x340 :
19928                                             0x341;
19929                                         val_mask = (0x1 << 13);
19930                                         val_shift = 13;
19931                                         break;
19932                                 case (0x1 << 9):
19933                                         en_addr = (core_num == 0) ? 0x342 :
19934                                             0x343;
19935                                         val_addr = (core_num == 0) ? 0x340 :
19936                                             0x341;
19937                                         val_mask = (0x1 << 12);
19938                                         val_shift = 12;
19939                                         break;
19940                                 case (0x1 << 8):
19941                                         en_addr = (core_num == 0) ? 0x342 :
19942                                             0x343;
19943                                         val_addr = (core_num == 0) ? 0x340 :
19944                                             0x341;
19945                                         val_mask = (0x1 << 11);
19946                                         val_shift = 11;
19947                                         break;
19948                                 case (0x1 << 6):
19949                                         en_addr = (core_num == 0) ? 0x342 :
19950                                             0x343;
19951                                         val_addr = (core_num == 0) ? 0x340 :
19952                                             0x341;
19953                                         val_mask = (0x1 << 6);
19954                                         val_shift = 6;
19955                                         break;
19956                                 case (0x1 << 0):
19957                                         en_addr = (core_num == 0) ? 0x342 :
19958                                             0x343;
19959                                         val_addr = (core_num == 0) ? 0x340 :
19960                                             0x341;
19961                                         val_mask = (0x1 << 0);
19962                                         val_shift = 0;
19963                                         break;
19964                                 default:
19965                                         addr = 0xffff;
19966                                         break;
19967                                 }
19968                         } else if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID2) {
19969
19970                                 switch (field) {
19971                                 case (0x1 << 3):
19972                                         en_addr = (core_num == 0) ? 0x346 :
19973                                             0x347;
19974                                         val_addr = (core_num == 0) ? 0x344 :
19975                                             0x345;
19976                                         val_mask = (0x1 << 3);
19977                                         val_shift = 3;
19978                                         break;
19979                                 case (0x1 << 1):
19980                                         en_addr = (core_num == 0) ? 0x346 :
19981                                             0x347;
19982                                         val_addr = (core_num == 0) ? 0x344 :
19983                                             0x345;
19984                                         val_mask = (0x1 << 1);
19985                                         val_shift = 1;
19986                                         break;
19987                                 case (0x1 << 0):
19988                                         en_addr = (core_num == 0) ? 0x346 :
19989                                             0x347;
19990                                         val_addr = (core_num == 0) ? 0x344 :
19991                                             0x345;
19992                                         val_mask = (0x1 << 0);
19993                                         val_shift = 0;
19994                                         break;
19995                                 case (0x1 << 2):
19996                                         en_addr = (core_num == 0) ? 0x346 :
19997                                             0x347;
19998                                         val_addr = (core_num == 0) ? 0x344 :
19999                                             0x345;
20000                                         val_mask = (0x1 << 2);
20001                                         val_shift = 2;
20002                                         break;
20003                                 case (0x1 << 4):
20004                                         en_addr = (core_num == 0) ? 0x346 :
20005                                             0x347;
20006                                         val_addr = (core_num == 0) ? 0x344 :
20007                                             0x345;
20008                                         val_mask = (0x1 << 4);
20009                                         val_shift = 4;
20010                                         break;
20011                                 default:
20012                                         addr = 0xffff;
20013                                         break;
20014                                 }
20015                         }
20016
20017                         if (off) {
20018                                 and_phy_reg(pi, en_addr, ~en_mask);
20019                                 and_phy_reg(pi, val_addr, ~val_mask);
20020                         } else {
20021
20022                                 if ((core_mask == 0)
20023                                     || (core_mask & (1 << core_num))) {
20024                                         or_phy_reg(pi, en_addr, en_mask);
20025
20026                                         if (addr != 0xffff) {
20027                                                 mod_phy_reg(pi, val_addr,
20028                                                             val_mask,
20029                                                             (value <<
20030                                                              val_shift));
20031                                         }
20032                                 }
20033                         }
20034                 }
20035         }
20036 }
20037
20038 static void
20039 wlc_phy_rfctrl_override_nphy(phy_info_t *pi, u16 field, u16 value,
20040                              u8 core_mask, u8 off)
20041 {
20042         u8 core_num;
20043         u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
20044             0, val_mask = 0;
20045         u8 shift = 0, val_shift = 0;
20046
20047         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
20048
20049                 en_mask = field;
20050                 for (core_num = 0; core_num < 2; core_num++) {
20051
20052                         switch (field) {
20053                         case (0x1 << 1):
20054                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20055                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20056                                 val_mask = (0x1 << 0);
20057                                 val_shift = 0;
20058                                 break;
20059                         case (0x1 << 2):
20060                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20061                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20062                                 val_mask = (0x1 << 1);
20063                                 val_shift = 1;
20064                                 break;
20065                         case (0x1 << 3):
20066                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20067                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20068                                 val_mask = (0x1 << 2);
20069                                 val_shift = 2;
20070                                 break;
20071                         case (0x1 << 4):
20072                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20073                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20074                                 val_mask = (0x1 << 4);
20075                                 val_shift = 4;
20076                                 break;
20077                         case (0x1 << 5):
20078                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20079                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20080                                 val_mask = (0x1 << 5);
20081                                 val_shift = 5;
20082                                 break;
20083                         case (0x1 << 6):
20084                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20085                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20086                                 val_mask = (0x1 << 6);
20087                                 val_shift = 6;
20088                                 break;
20089                         case (0x1 << 7):
20090                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20091                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20092                                 val_mask = (0x1 << 7);
20093                                 val_shift = 7;
20094                                 break;
20095                         case (0x1 << 8):
20096                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20097                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20098                                 val_mask = (0x7 << 8);
20099                                 val_shift = 8;
20100                                 break;
20101                         case (0x1 << 11):
20102                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20103                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20104                                 val_mask = (0x7 << 13);
20105                                 val_shift = 13;
20106                                 break;
20107
20108                         case (0x1 << 9):
20109                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20110                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
20111                                 val_mask = (0x7 << 0);
20112                                 val_shift = 0;
20113                                 break;
20114
20115                         case (0x1 << 10):
20116                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20117                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
20118                                 val_mask = (0x7 << 4);
20119                                 val_shift = 4;
20120                                 break;
20121
20122                         case (0x1 << 12):
20123                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20124                                 val_addr = (core_num == 0) ? 0x7b : 0x7e;
20125                                 val_mask = (0xffff << 0);
20126                                 val_shift = 0;
20127                                 break;
20128                         case (0x1 << 13):
20129                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20130                                 val_addr = (core_num == 0) ? 0x7c : 0x7f;
20131                                 val_mask = (0xffff << 0);
20132                                 val_shift = 0;
20133                                 break;
20134                         case (0x1 << 14):
20135                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20136                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
20137                                 val_mask = (0x3 << 6);
20138                                 val_shift = 6;
20139                                 break;
20140                         case (0x1 << 0):
20141                                 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
20142                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
20143                                 val_mask = (0x1 << 15);
20144                                 val_shift = 15;
20145                                 break;
20146                         default:
20147                                 addr = 0xffff;
20148                                 break;
20149                         }
20150
20151                         if (off) {
20152                                 and_phy_reg(pi, en_addr, ~en_mask);
20153                                 and_phy_reg(pi, val_addr, ~val_mask);
20154                         } else {
20155
20156                                 if ((core_mask == 0)
20157                                     || (core_mask & (1 << core_num))) {
20158                                         or_phy_reg(pi, en_addr, en_mask);
20159
20160                                         if (addr != 0xffff) {
20161                                                 mod_phy_reg(pi, val_addr,
20162                                                             val_mask,
20163                                                             (value <<
20164                                                              val_shift));
20165                                         }
20166                                 }
20167                         }
20168                 }
20169         } else {
20170
20171                 if (off) {
20172                         and_phy_reg(pi, 0xec, ~field);
20173                         value = 0x0;
20174                 } else {
20175                         or_phy_reg(pi, 0xec, field);
20176                 }
20177
20178                 for (core_num = 0; core_num < 2; core_num++) {
20179
20180                         switch (field) {
20181                         case (0x1 << 1):
20182                         case (0x1 << 9):
20183                         case (0x1 << 12):
20184                         case (0x1 << 13):
20185                         case (0x1 << 14):
20186                                 addr = 0x78;
20187
20188                                 core_mask = 0x1;
20189                                 break;
20190                         case (0x1 << 2):
20191                         case (0x1 << 3):
20192                         case (0x1 << 4):
20193                         case (0x1 << 5):
20194                         case (0x1 << 6):
20195                         case (0x1 << 7):
20196                         case (0x1 << 8):
20197                                 addr = (core_num == 0) ? 0x7a : 0x7d;
20198                                 break;
20199                         case (0x1 << 10):
20200                                 addr = (core_num == 0) ? 0x7b : 0x7e;
20201                                 break;
20202                         case (0x1 << 11):
20203                                 addr = (core_num == 0) ? 0x7c : 0x7f;
20204                                 break;
20205                         default:
20206                                 addr = 0xffff;
20207                         }
20208
20209                         switch (field) {
20210                         case (0x1 << 1):
20211                                 mask = (0x7 << 3);
20212                                 shift = 3;
20213                                 break;
20214                         case (0x1 << 9):
20215                                 mask = (0x1 << 2);
20216                                 shift = 2;
20217                                 break;
20218                         case (0x1 << 12):
20219                                 mask = (0x1 << 8);
20220                                 shift = 8;
20221                                 break;
20222                         case (0x1 << 13):
20223                                 mask = (0x1 << 9);
20224                                 shift = 9;
20225                                 break;
20226                         case (0x1 << 14):
20227                                 mask = (0xf << 12);
20228                                 shift = 12;
20229                                 break;
20230                         case (0x1 << 2):
20231                                 mask = (0x1 << 0);
20232                                 shift = 0;
20233                                 break;
20234                         case (0x1 << 3):
20235                                 mask = (0x1 << 1);
20236                                 shift = 1;
20237                                 break;
20238                         case (0x1 << 4):
20239                                 mask = (0x1 << 2);
20240                                 shift = 2;
20241                                 break;
20242                         case (0x1 << 5):
20243                                 mask = (0x3 << 4);
20244                                 shift = 4;
20245                                 break;
20246                         case (0x1 << 6):
20247                                 mask = (0x3 << 6);
20248                                 shift = 6;
20249                                 break;
20250                         case (0x1 << 7):
20251                                 mask = (0x1 << 8);
20252                                 shift = 8;
20253                                 break;
20254                         case (0x1 << 8):
20255                                 mask = (0x1 << 9);
20256                                 shift = 9;
20257                                 break;
20258                         case (0x1 << 10):
20259                                 mask = 0x1fff;
20260                                 shift = 0x0;
20261                                 break;
20262                         case (0x1 << 11):
20263                                 mask = 0x1fff;
20264                                 shift = 0x0;
20265                                 break;
20266                         default:
20267                                 mask = 0x0;
20268                                 shift = 0x0;
20269                                 break;
20270                         }
20271
20272                         if ((addr != 0xffff) && (core_mask & (1 << core_num))) {
20273                                 mod_phy_reg(pi, addr, mask, (value << shift));
20274                         }
20275                 }
20276
20277                 or_phy_reg(pi, 0xec, (0x1 << 0));
20278                 or_phy_reg(pi, 0x78, (0x1 << 0));
20279                 udelay(1);
20280                 and_phy_reg(pi, 0xec, ~(0x1 << 0));
20281         }
20282 }
20283
20284 static void
20285 wlc_phy_rfctrl_override_1tomany_nphy(phy_info_t *pi, u16 cmd, u16 value,
20286                                      u8 core_mask, u8 off)
20287 {
20288         u16 rfmxgain = 0, lpfgain = 0;
20289         u16 tgain = 0;
20290
20291         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20292
20293                 switch (cmd) {
20294                 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
20295                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
20296                                                           value, core_mask, off,
20297                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20298                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), value,
20299                                                           core_mask, off,
20300                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20301                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), value,
20302                                                           core_mask, off,
20303                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20304                         break;
20305                 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
20306                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
20307                                                           value, core_mask, off,
20308                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20309                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20310                                                           core_mask, off,
20311                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20312                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), value,
20313                                                           core_mask, off,
20314                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20315                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20316                                                           core_mask, off,
20317                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20318                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0,
20319                                                           core_mask, off,
20320                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20321                         break;
20322                 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
20323                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
20324                                                           value, core_mask, off,
20325                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20326                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20327                                                           core_mask, off,
20328                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20329                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), value,
20330                                                           core_mask, off,
20331                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20332                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), value,
20333                                                           core_mask, off,
20334                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20335                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1,
20336                                                           core_mask, off,
20337                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20338                         break;
20339                 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
20340                         rfmxgain = value & 0x000ff;
20341                         lpfgain = value & 0x0ff00;
20342                         lpfgain = lpfgain >> 8;
20343
20344                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
20345                                                           rfmxgain, core_mask,
20346                                                           off,
20347                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20348                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x3 << 13),
20349                                                           lpfgain, core_mask,
20350                                                           off,
20351                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20352                         break;
20353                 case NPHY_REV7_RfctrlOverride_cmd_txgain:
20354                         tgain = value & 0x7fff;
20355                         lpfgain = value & 0x8000;
20356                         lpfgain = lpfgain >> 14;
20357
20358                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
20359                                                           tgain, core_mask, off,
20360                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20361                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 13),
20362                                                           lpfgain, core_mask,
20363                                                           off,
20364                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20365                         break;
20366                 }
20367         }
20368 }
20369
20370 static void
20371 wlc_phy_scale_offset_rssi_nphy(phy_info_t *pi, u16 scale, s8 offset,
20372                                u8 coresel, u8 rail, u8 rssi_type)
20373 {
20374         u16 valuetostuff;
20375
20376         offset = (offset > NPHY_RSSICAL_MAXREAD) ?
20377             NPHY_RSSICAL_MAXREAD : offset;
20378         offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
20379             -NPHY_RSSICAL_MAXREAD - 1 : offset;
20380
20381         valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
20382
20383         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20384              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20385             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20386                 write_phy_reg(pi, 0x1a6, valuetostuff);
20387         }
20388         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20389              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20390             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20391                 write_phy_reg(pi, 0x1ac, valuetostuff);
20392         }
20393         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20394              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20395             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20396                 write_phy_reg(pi, 0x1b2, valuetostuff);
20397         }
20398         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20399              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20400             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20401                 write_phy_reg(pi, 0x1b8, valuetostuff);
20402         }
20403
20404         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20405              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20406             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20407                 write_phy_reg(pi, 0x1a4, valuetostuff);
20408         }
20409         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20410              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20411             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20412                 write_phy_reg(pi, 0x1aa, valuetostuff);
20413         }
20414         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20415              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20416             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20417                 write_phy_reg(pi, 0x1b0, valuetostuff);
20418         }
20419         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20420              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20421             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20422                 write_phy_reg(pi, 0x1b6, valuetostuff);
20423         }
20424
20425         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20426              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20427             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20428                 write_phy_reg(pi, 0x1a5, valuetostuff);
20429         }
20430         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20431              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20432             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20433                 write_phy_reg(pi, 0x1ab, valuetostuff);
20434         }
20435         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20436              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20437             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20438                 write_phy_reg(pi, 0x1b1, valuetostuff);
20439         }
20440         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20441              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20442             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20443                 write_phy_reg(pi, 0x1b7, valuetostuff);
20444         }
20445
20446         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20447              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20448             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20449                 write_phy_reg(pi, 0x1a7, valuetostuff);
20450         }
20451         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20452              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20453             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20454                 write_phy_reg(pi, 0x1ad, valuetostuff);
20455         }
20456         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20457              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20458             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20459                 write_phy_reg(pi, 0x1b3, valuetostuff);
20460         }
20461         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20462              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20463             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20464                 write_phy_reg(pi, 0x1b9, valuetostuff);
20465         }
20466
20467         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20468              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20469             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20470                 write_phy_reg(pi, 0x1a8, valuetostuff);
20471         }
20472         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20473              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20474             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20475                 write_phy_reg(pi, 0x1ae, valuetostuff);
20476         }
20477         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20478              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20479             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20480                 write_phy_reg(pi, 0x1b4, valuetostuff);
20481         }
20482         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20483              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20484             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20485                 write_phy_reg(pi, 0x1ba, valuetostuff);
20486         }
20487
20488         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20489              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20490             (rssi_type == NPHY_RSSI_SEL_TSSI_2G)) {
20491                 write_phy_reg(pi, 0x1a9, valuetostuff);
20492         }
20493         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20494              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20495             (rssi_type == NPHY_RSSI_SEL_TSSI_2G)) {
20496                 write_phy_reg(pi, 0x1b5, valuetostuff);
20497         }
20498
20499         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20500              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20501             (rssi_type == NPHY_RSSI_SEL_TSSI_5G)) {
20502                 write_phy_reg(pi, 0x1af, valuetostuff);
20503         }
20504         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20505              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20506             (rssi_type == NPHY_RSSI_SEL_TSSI_5G)) {
20507                 write_phy_reg(pi, 0x1bb, valuetostuff);
20508         }
20509 }
20510
20511 void wlc_phy_rssisel_nphy(phy_info_t *pi, u8 core_code, u8 rssi_type)
20512 {
20513         u16 mask, val;
20514         u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
20515             startseq;
20516         u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
20517             rfctrlovr_trigger_val;
20518         u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
20519         u16 rfctrlcmd_val, rfctrlovr_val;
20520         u8 core;
20521
20522         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20523                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
20524                         mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
20525                         mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
20526
20527                         mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
20528                         mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
20529
20530                         mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
20531                         mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
20532
20533                         mask = (0x1 << 2) |
20534                             (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
20535                         mod_phy_reg(pi, 0xf9, mask, 0);
20536                         mod_phy_reg(pi, 0xfb, mask, 0);
20537
20538                 } else {
20539                         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20540                                 if (core_code == RADIO_MIMO_CORESEL_CORE1
20541                                     && core == PHY_CORE_1)
20542                                         continue;
20543                                 else if (core_code == RADIO_MIMO_CORESEL_CORE2
20544                                          && core == PHY_CORE_0)
20545                                         continue;
20546
20547                                 mod_phy_reg(pi, (core == PHY_CORE_0) ?
20548                                             0x8f : 0xa5, (0x1 << 9), 1 << 9);
20549
20550                                 if (rssi_type == NPHY_RSSI_SEL_W1 ||
20551                                     rssi_type == NPHY_RSSI_SEL_W2 ||
20552                                     rssi_type == NPHY_RSSI_SEL_NB) {
20553
20554                                         mod_phy_reg(pi,
20555                                                     (core ==
20556                                                      PHY_CORE_0) ? 0xa6 : 0xa7,
20557                                                     (0x3 << 8), 0);
20558
20559                                         mask = (0x1 << 2) |
20560                                             (0x1 << 3) |
20561                                             (0x1 << 4) | (0x1 << 5);
20562                                         mod_phy_reg(pi,
20563                                                     (core ==
20564                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
20565                                                     mask, 0);
20566
20567                                         if (rssi_type == NPHY_RSSI_SEL_W1) {
20568                                                 if (CHSPEC_IS5G
20569                                                     (pi->radio_chanspec)) {
20570                                                         mask = (0x1 << 2);
20571                                                         val = 1 << 2;
20572                                                 } else {
20573                                                         mask = (0x1 << 3);
20574                                                         val = 1 << 3;
20575                                                 }
20576                                         } else if (rssi_type ==
20577                                                    NPHY_RSSI_SEL_W2) {
20578                                                 mask = (0x1 << 4);
20579                                                 val = 1 << 4;
20580                                         } else {
20581                                                 mask = (0x1 << 5);
20582                                                 val = 1 << 5;
20583                                         }
20584                                         mod_phy_reg(pi,
20585                                                     (core ==
20586                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
20587                                                     mask, val);
20588
20589                                         mask = (0x1 << 5);
20590                                         val = 1 << 5;
20591                                         mod_phy_reg(pi, (core == PHY_CORE_0) ?
20592                                                     0xe5 : 0xe6, mask, val);
20593                                 } else {
20594                                         if (rssi_type == NPHY_RSSI_SEL_TBD) {
20595
20596                                                 mask = (0x3 << 8);
20597                                                 val = 1 << 8;
20598                                                 mod_phy_reg(pi,
20599                                                             (core ==
20600                                                              PHY_CORE_0) ? 0xa6
20601                                                             : 0xa7, mask, val);
20602                                                 mask = (0x3 << 10);
20603                                                 val = 1 << 10;
20604                                                 mod_phy_reg(pi,
20605                                                             (core ==
20606                                                              PHY_CORE_0) ? 0xa6
20607                                                             : 0xa7, mask, val);
20608                                         } else if (rssi_type ==
20609                                                    NPHY_RSSI_SEL_IQ) {
20610
20611                                                 mask = (0x3 << 8);
20612                                                 val = 2 << 8;
20613                                                 mod_phy_reg(pi,
20614                                                             (core ==
20615                                                              PHY_CORE_0) ? 0xa6
20616                                                             : 0xa7, mask, val);
20617                                                 mask = (0x3 << 10);
20618                                                 val = 2 << 10;
20619                                                 mod_phy_reg(pi,
20620                                                             (core ==
20621                                                              PHY_CORE_0) ? 0xa6
20622                                                             : 0xa7, mask, val);
20623                                         } else {
20624
20625                                                 mask = (0x3 << 8);
20626                                                 val = 3 << 8;
20627                                                 mod_phy_reg(pi,
20628                                                             (core ==
20629                                                              PHY_CORE_0) ? 0xa6
20630                                                             : 0xa7, mask, val);
20631                                                 mask = (0x3 << 10);
20632                                                 val = 3 << 10;
20633                                                 mod_phy_reg(pi,
20634                                                             (core ==
20635                                                              PHY_CORE_0) ? 0xa6
20636                                                             : 0xa7, mask, val);
20637
20638                                                 if (PHY_IPA(pi)) {
20639                                                         if (NREV_GE
20640                                                             (pi->pubpi.phy_rev,
20641                                                              7)) {
20642
20643                                                                 write_radio_reg
20644                                                                     (pi,
20645                                                                      ((core ==
20646                                                                        PHY_CORE_0)
20647                                                                       ?
20648                                                                       RADIO_2057_TX0_TX_SSI_MUX
20649                                                                       :
20650                                                                       RADIO_2057_TX1_TX_SSI_MUX),
20651                                                                      (CHSPEC_IS5G
20652                                                                       (pi->
20653                                                                        radio_chanspec)
20654                                                                       ? 0xc :
20655                                                                       0xe));
20656                                                         } else {
20657                                                                 write_radio_reg
20658                                                                     (pi,
20659                                                                      RADIO_2056_TX_TX_SSI_MUX
20660                                                                      |
20661                                                                      ((core ==
20662                                                                        PHY_CORE_0)
20663                                                                       ?
20664                                                                       RADIO_2056_TX0
20665                                                                       :
20666                                                                       RADIO_2056_TX1),
20667                                                                      (CHSPEC_IS5G
20668                                                                       (pi->
20669                                                                        radio_chanspec)
20670                                                                       ? 0xc :
20671                                                                       0xe));
20672                                                         }
20673                                                 } else {
20674
20675                                                         if (NREV_GE
20676                                                             (pi->pubpi.phy_rev,
20677                                                              7)) {
20678                                                                 write_radio_reg
20679                                                                     (pi,
20680                                                                      ((core ==
20681                                                                        PHY_CORE_0)
20682                                                                       ?
20683                                                                       RADIO_2057_TX0_TX_SSI_MUX
20684                                                                       :
20685                                                                       RADIO_2057_TX1_TX_SSI_MUX),
20686                                                                      0x11);
20687
20688                                                                 if (pi->pubpi.
20689                                                                     radioid ==
20690                                                                     BCM2057_ID)
20691                                                                         write_radio_reg
20692                                                                             (pi,
20693                                                                              RADIO_2057_IQTEST_SEL_PU,
20694                                                                              0x1);
20695
20696                                                         } else {
20697                                                                 write_radio_reg
20698                                                                     (pi,
20699                                                                      RADIO_2056_TX_TX_SSI_MUX
20700                                                                      |
20701                                                                      ((core ==
20702                                                                        PHY_CORE_0)
20703                                                                       ?
20704                                                                       RADIO_2056_TX0
20705                                                                       :
20706                                                                       RADIO_2056_TX1),
20707                                                                      0x11);
20708                                                         }
20709                                                 }
20710
20711                                                 afectrlovr_rssi_val = 1 << 9;
20712                                                 mod_phy_reg(pi,
20713                                                             (core ==
20714                                                              PHY_CORE_0) ? 0x8f
20715                                                             : 0xa5, (0x1 << 9),
20716                                                             afectrlovr_rssi_val);
20717                                         }
20718                                 }
20719                         }
20720                 }
20721         } else {
20722
20723                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20724                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20725                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20726
20727                         val = 0x0;
20728                 } else if (rssi_type == NPHY_RSSI_SEL_TBD) {
20729
20730                         val = 0x1;
20731                 } else if (rssi_type == NPHY_RSSI_SEL_IQ) {
20732
20733                         val = 0x2;
20734                 } else {
20735
20736                         val = 0x3;
20737                 }
20738                 mask = ((0x3 << 12) | (0x3 << 14));
20739                 val = (val << 12) | (val << 14);
20740                 mod_phy_reg(pi, 0xa6, mask, val);
20741                 mod_phy_reg(pi, 0xa7, mask, val);
20742
20743                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20744                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20745                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20746                         if (rssi_type == NPHY_RSSI_SEL_W1) {
20747                                 val = 0x1;
20748                         }
20749                         if (rssi_type == NPHY_RSSI_SEL_W2) {
20750                                 val = 0x2;
20751                         }
20752                         if (rssi_type == NPHY_RSSI_SEL_NB) {
20753                                 val = 0x3;
20754                         }
20755                         mask = (0x3 << 4);
20756                         val = (val << 4);
20757                         mod_phy_reg(pi, 0x7a, mask, val);
20758                         mod_phy_reg(pi, 0x7d, mask, val);
20759                 }
20760
20761                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
20762                         afectrlovr_rssi_val = 0;
20763                         rfctrlcmd_rxen_val = 0;
20764                         rfctrlcmd_coresel_val = 0;
20765                         rfctrlovr_rssi_val = 0;
20766                         rfctrlovr_rxen_val = 0;
20767                         rfctrlovr_coresel_val = 0;
20768                         rfctrlovr_trigger_val = 0;
20769                         startseq = 0;
20770                 } else {
20771                         afectrlovr_rssi_val = 1;
20772                         rfctrlcmd_rxen_val = 1;
20773                         rfctrlcmd_coresel_val = core_code;
20774                         rfctrlovr_rssi_val = 1;
20775                         rfctrlovr_rxen_val = 1;
20776                         rfctrlovr_coresel_val = 1;
20777                         rfctrlovr_trigger_val = 1;
20778                         startseq = 1;
20779                 }
20780
20781                 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
20782                 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
20783                                        12) | (afectrlovr_rssi_val << 13);
20784                 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
20785                             afectrlovr_rssi_val);
20786
20787                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20788                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20789                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20790                         rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
20791                         rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
20792                             (rfctrlcmd_coresel_val << 3);
20793
20794                         rfctrlovr_mask = ((0x1 << 5) |
20795                                           (0x1 << 12) |
20796                                           (0x1 << 1) | (0x1 << 0));
20797                         rfctrlovr_val = (rfctrlovr_rssi_val <<
20798                                          5) |
20799                             (rfctrlovr_rxen_val << 12) |
20800                             (rfctrlovr_coresel_val << 1) |
20801                             (rfctrlovr_trigger_val << 0);
20802
20803                         mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
20804                         mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
20805
20806                         mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
20807                         udelay(20);
20808
20809                         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
20810                 }
20811         }
20812 }
20813
20814 int
20815 wlc_phy_poll_rssi_nphy(phy_info_t *pi, u8 rssi_type, s32 *rssi_buf,
20816                        u8 nsamps)
20817 {
20818         s16 rssi0, rssi1;
20819         u16 afectrlCore1_save = 0;
20820         u16 afectrlCore2_save = 0;
20821         u16 afectrlOverride1_save = 0;
20822         u16 afectrlOverride2_save = 0;
20823         u16 rfctrlOverrideAux0_save = 0;
20824         u16 rfctrlOverrideAux1_save = 0;
20825         u16 rfctrlMiscReg1_save = 0;
20826         u16 rfctrlMiscReg2_save = 0;
20827         u16 rfctrlcmd_save = 0;
20828         u16 rfctrloverride_save = 0;
20829         u16 rfctrlrssiothers1_save = 0;
20830         u16 rfctrlrssiothers2_save = 0;
20831         s8 tmp_buf[4];
20832         u8 ctr = 0, samp = 0;
20833         s32 rssi_out_val;
20834         u16 gpiosel_orig;
20835
20836         afectrlCore1_save = read_phy_reg(pi, 0xa6);
20837         afectrlCore2_save = read_phy_reg(pi, 0xa7);
20838         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20839                 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
20840                 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
20841                 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
20842                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
20843                 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
20844                 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
20845         } else {
20846                 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
20847                 rfctrlcmd_save = read_phy_reg(pi, 0x78);
20848                 rfctrloverride_save = read_phy_reg(pi, 0xec);
20849                 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
20850                 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
20851         }
20852
20853         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
20854
20855         gpiosel_orig = read_phy_reg(pi, 0xca);
20856         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20857                 write_phy_reg(pi, 0xca, 5);
20858         }
20859
20860         for (ctr = 0; ctr < 4; ctr++) {
20861                 rssi_buf[ctr] = 0;
20862         }
20863
20864         for (samp = 0; samp < nsamps; samp++) {
20865                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20866                         rssi0 = read_phy_reg(pi, 0x1c9);
20867                         rssi1 = read_phy_reg(pi, 0x1ca);
20868                 } else {
20869                         rssi0 = read_phy_reg(pi, 0x219);
20870                         rssi1 = read_phy_reg(pi, 0x21a);
20871                 }
20872
20873                 ctr = 0;
20874                 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
20875                 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
20876                 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
20877                 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
20878
20879                 for (ctr = 0; ctr < 4; ctr++) {
20880                         rssi_buf[ctr] += tmp_buf[ctr];
20881                 }
20882
20883         }
20884
20885         rssi_out_val = rssi_buf[3] & 0xff;
20886         rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
20887         rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
20888         rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
20889
20890         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20891                 write_phy_reg(pi, 0xca, gpiosel_orig);
20892         }
20893
20894         write_phy_reg(pi, 0xa6, afectrlCore1_save);
20895         write_phy_reg(pi, 0xa7, afectrlCore2_save);
20896         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20897                 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
20898                 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
20899                 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
20900                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
20901                 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
20902                 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
20903         } else {
20904                 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
20905                 write_phy_reg(pi, 0x78, rfctrlcmd_save);
20906                 write_phy_reg(pi, 0xec, rfctrloverride_save);
20907                 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
20908                 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
20909         }
20910
20911         return rssi_out_val;
20912 }
20913
20914 s16 wlc_phy_tempsense_nphy(phy_info_t *pi)
20915 {
20916         u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
20917         u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
20918         u16 pwrdet_rxtx_core1_save;
20919         u16 pwrdet_rxtx_core2_save;
20920         u16 afectrlCore1_save;
20921         u16 afectrlCore2_save;
20922         u16 afectrlOverride_save;
20923         u16 afectrlOverride2_save;
20924         u16 pd_pll_ts_save;
20925         u16 gpioSel_save;
20926         s32 radio_temp[4];
20927         s32 radio_temp2[4];
20928         u16 syn_tempprocsense_save;
20929         s16 offset = 0;
20930
20931         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20932                 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
20933                 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
20934                 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
20935                 s32 auxADC_Vl;
20936                 u16 RfctrlOverride5_save, RfctrlOverride6_save;
20937                 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
20938                 u16 RSSIMultCoef0QPowerDet_save;
20939                 u16 tempsense_Rcal;
20940
20941                 syn_tempprocsense_save =
20942                     read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
20943
20944                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
20945                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
20946                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
20947                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
20948                 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
20949                 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
20950                 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
20951                 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
20952                 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
20953
20954                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
20955                                         &auxADC_Vmid_save);
20956                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
20957                                         &auxADC_Av_save);
20958                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
20959                                         &auxADC_rssi_ctrlL_save);
20960                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
20961                                         &auxADC_rssi_ctrlH_save);
20962
20963                 write_phy_reg(pi, 0x1ae, 0x0);
20964
20965                 auxADC_rssi_ctrlL = 0x0;
20966                 auxADC_rssi_ctrlH = 0x20;
20967                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
20968                                          &auxADC_rssi_ctrlL);
20969                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
20970                                          &auxADC_rssi_ctrlH);
20971
20972                 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
20973
20974                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
20975                                 tempsense_Rcal | 0x01);
20976
20977                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
20978                                                   1, 0, 0,
20979                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
20980                 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
20981                 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
20982                 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
20983                 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
20984
20985                 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
20986                 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
20987                 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
20988                 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
20989                 udelay(5);
20990                 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
20991                 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
20992                 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
20993                 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
20994                 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
20995                 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
20996                 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
20997                 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
20998                 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
20999                 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
21000
21001                 auxADC_Vmid = 0xA3;
21002                 auxADC_Av = 0x0;
21003                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21004                                          &auxADC_Vmid);
21005                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21006                                          &auxADC_Av);
21007
21008                 udelay(3);
21009
21010                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21011                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21012                                 tempsense_Rcal | 0x03);
21013
21014                 udelay(5);
21015                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21016
21017                 auxADC_Av = 0x7;
21018                 if (radio_temp[1] + radio_temp2[1] < -30) {
21019                         auxADC_Vmid = 0x45;
21020                         auxADC_Vl = 263;
21021                 } else if (radio_temp[1] + radio_temp2[1] < -9) {
21022                         auxADC_Vmid = 0x200;
21023                         auxADC_Vl = 467;
21024                 } else if (radio_temp[1] + radio_temp2[1] < 11) {
21025                         auxADC_Vmid = 0x266;
21026                         auxADC_Vl = 634;
21027                 } else {
21028                         auxADC_Vmid = 0x2D5;
21029                         auxADC_Vl = 816;
21030                 }
21031
21032                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21033                                          &auxADC_Vmid);
21034                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21035                                          &auxADC_Av);
21036
21037                 udelay(3);
21038
21039                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21040                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21041                                 tempsense_Rcal | 0x01);
21042
21043                 udelay(5);
21044                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21045
21046                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21047                                 syn_tempprocsense_save);
21048
21049                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21050                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21051                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
21052                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21053                 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
21054                 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
21055                 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
21056                 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
21057                 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
21058
21059                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21060                                          &auxADC_Vmid_save);
21061                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21062                                          &auxADC_Av_save);
21063                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
21064                                          &auxADC_rssi_ctrlL_save);
21065                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
21066                                          &auxADC_rssi_ctrlH_save);
21067
21068                 if (pi->sh->chip == BCM5357_CHIP_ID) {
21069                         radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
21070                                          + 88 * (auxADC_Vl) - 27111 +
21071                                          128) / 256;
21072                 } else if (pi->sh->chip == BCM43236_CHIP_ID) {
21073                         radio_temp[0] = (198 * (radio_temp[1] + radio_temp2[1])
21074                                          + 91 * (auxADC_Vl) - 27243 +
21075                                          128) / 256;
21076                 } else {
21077                         radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
21078                                          + 82 * (auxADC_Vl) - 28861 +
21079                                          128) / 256;
21080                 }
21081
21082                 offset = (s16) pi->phy_tempsense_offset;
21083
21084         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21085                 syn_tempprocsense_save =
21086                     read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
21087
21088                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21089                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21090                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
21091                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21092                 gpioSel_save = read_phy_reg(pi, 0xca);
21093
21094                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
21095
21096                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21097                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21098                 } else {
21099                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
21100                 }
21101
21102                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21103                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21104                         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
21105                 } else {
21106                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
21107                 }
21108
21109                 radio_temp[0] =
21110                     (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
21111
21112                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
21113                                 syn_tempprocsense_save);
21114
21115                 write_phy_reg(pi, 0xca, gpioSel_save);
21116                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21117                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21118                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
21119                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21120
21121                 offset = (s16) pi->phy_tempsense_offset;
21122         } else {
21123
21124                 pwrdet_rxtx_core1_save =
21125                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
21126                 pwrdet_rxtx_core2_save =
21127                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
21128                 core1_txrf_iqcal1_save =
21129                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
21130                 core1_txrf_iqcal2_save =
21131                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
21132                 core2_txrf_iqcal1_save =
21133                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
21134                 core2_txrf_iqcal2_save =
21135                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
21136                 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
21137
21138                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21139                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21140                 afectrlOverride_save = read_phy_reg(pi, 0xa5);
21141                 gpioSel_save = read_phy_reg(pi, 0xca);
21142
21143                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
21144                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
21145                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
21146                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
21147                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
21148                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
21149                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
21150
21151                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21152                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21153
21154                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21155                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21156
21157                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21158                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21159
21160                 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
21161                 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
21162                 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
21163                 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
21164
21165                 radio_temp[0] =
21166                     (radio_temp[0] + radio_temp[1] + radio_temp[2] +
21167                      radio_temp[3]);
21168
21169                 radio_temp[0] =
21170                     (radio_temp[0] + (8 * 32)) * (950 - 350) / 63 + (350 * 8);
21171
21172                 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
21173
21174                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
21175                                 pwrdet_rxtx_core1_save);
21176                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
21177                                 pwrdet_rxtx_core2_save);
21178                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
21179                                 core1_txrf_iqcal1_save);
21180                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
21181                                 core2_txrf_iqcal1_save);
21182                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
21183                                 core1_txrf_iqcal2_save);
21184                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
21185                                 core2_txrf_iqcal2_save);
21186                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
21187
21188                 write_phy_reg(pi, 0xca, gpioSel_save);
21189                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21190                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21191                 write_phy_reg(pi, 0xa5, afectrlOverride_save);
21192         }
21193
21194         return (s16) radio_temp[0] + offset;
21195 }
21196
21197 static void
21198 wlc_phy_set_rssi_2055_vcm(phy_info_t *pi, u8 rssi_type, u8 *vcm_buf)
21199 {
21200         u8 core;
21201
21202         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21203                 if (rssi_type == NPHY_RSSI_SEL_NB) {
21204                         if (core == PHY_CORE_0) {
21205                                 mod_radio_reg(pi,
21206                                               RADIO_2055_CORE1_B0_NBRSSI_VCM,
21207                                               RADIO_2055_NBRSSI_VCM_I_MASK,
21208                                               vcm_buf[2 *
21209                                                       core] <<
21210                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
21211                                 mod_radio_reg(pi,
21212                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
21213                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
21214                                               vcm_buf[2 * core +
21215                                                       1] <<
21216                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
21217                         } else {
21218                                 mod_radio_reg(pi,
21219                                               RADIO_2055_CORE2_B0_NBRSSI_VCM,
21220                                               RADIO_2055_NBRSSI_VCM_I_MASK,
21221                                               vcm_buf[2 *
21222                                                       core] <<
21223                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
21224                                 mod_radio_reg(pi,
21225                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
21226                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
21227                                               vcm_buf[2 * core +
21228                                                       1] <<
21229                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
21230                         }
21231                 } else {
21232
21233                         if (core == PHY_CORE_0) {
21234                                 mod_radio_reg(pi,
21235                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
21236                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
21237                                               vcm_buf[2 *
21238                                                       core] <<
21239                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
21240                         } else {
21241                                 mod_radio_reg(pi,
21242                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
21243                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
21244                                               vcm_buf[2 *
21245                                                       core] <<
21246                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
21247                         }
21248                 }
21249         }
21250 }
21251
21252 void wlc_phy_rssi_cal_nphy(phy_info_t *pi)
21253 {
21254         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21255
21256                 wlc_phy_rssi_cal_nphy_rev3(pi);
21257         } else {
21258                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
21259                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
21260                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
21261         }
21262 }
21263
21264 static void wlc_phy_rssi_cal_nphy_rev2(phy_info_t *pi, u8 rssi_type)
21265 {
21266         s32 target_code;
21267         u16 classif_state;
21268         u16 clip_state[2];
21269         u16 rssi_ctrl_state[2], pd_state[2];
21270         u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
21271         u16 rfctrlintc_override_val;
21272         u16 clip_off[] = { 0xffff, 0xffff };
21273         u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
21274         u8 vcm, min_vcm, vcm_tmp[4];
21275         u8 vcm_final[4] = { 0, 0, 0, 0 };
21276         u8 result_idx, ctr;
21277         s32 poll_results[4][4] = {
21278                 {0, 0, 0, 0},
21279                 {0, 0, 0, 0},
21280                 {0, 0, 0, 0},
21281                 {0, 0, 0, 0}
21282         };
21283         s32 poll_miniq[4][2] = {
21284                 {0, 0},
21285                 {0, 0},
21286                 {0, 0},
21287                 {0, 0}
21288         };
21289         s32 min_d, curr_d;
21290         s32 fine_digital_offset[4];
21291         s32 poll_results_min[4] = { 0, 0, 0, 0 };
21292         s32 min_poll;
21293
21294         switch (rssi_type) {
21295         case NPHY_RSSI_SEL_NB:
21296                 target_code = NPHY_RSSICAL_NB_TARGET;
21297                 break;
21298         case NPHY_RSSI_SEL_W1:
21299                 target_code = NPHY_RSSICAL_W1_TARGET;
21300                 break;
21301         case NPHY_RSSI_SEL_W2:
21302                 target_code = NPHY_RSSICAL_W2_TARGET;
21303                 break;
21304         default:
21305                 return;
21306                 break;
21307         }
21308
21309         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
21310         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
21311         wlc_phy_clip_det_nphy(pi, 0, clip_state);
21312         wlc_phy_clip_det_nphy(pi, 1, clip_off);
21313
21314         rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
21315         rfctrlintc_override_val =
21316             CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
21317
21318         rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
21319         rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
21320         write_phy_reg(pi, 0x91, rfctrlintc_override_val);
21321         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
21322
21323         rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
21324         rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
21325         write_phy_reg(pi, 0x92, rfctrlintc_override_val);
21326         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
21327
21328         pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
21329             RADIO_2055_WBRSSI_G2_PD;
21330         pd_state[0] =
21331             read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
21332         pd_state[1] =
21333             read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
21334         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
21335         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
21336         rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
21337             RADIO_2055_WBRSSI_G2_SEL;
21338         rssi_ctrl_state[0] =
21339             read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
21340         rssi_ctrl_state[1] =
21341             read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
21342         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
21343
21344         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
21345                                        NPHY_RAIL_I, rssi_type);
21346         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
21347                                        NPHY_RAIL_Q, rssi_type);
21348
21349         for (vcm = 0; vcm < 4; vcm++) {
21350
21351                 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
21352                 if (rssi_type != NPHY_RSSI_SEL_W2) {
21353                         wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
21354                 }
21355
21356                 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
21357                                        NPHY_RSSICAL_NPOLL);
21358
21359                 if ((rssi_type == NPHY_RSSI_SEL_W1)
21360                     || (rssi_type == NPHY_RSSI_SEL_W2)) {
21361                         for (ctr = 0; ctr < 2; ctr++) {
21362                                 poll_miniq[vcm][ctr] =
21363                                     min(poll_results[vcm][ctr * 2 + 0],
21364                                         poll_results[vcm][ctr * 2 + 1]);
21365                         }
21366                 }
21367         }
21368
21369         for (result_idx = 0; result_idx < 4; result_idx++) {
21370                 min_d = NPHY_RSSICAL_MAXD;
21371                 min_vcm = 0;
21372                 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
21373                 for (vcm = 0; vcm < 4; vcm++) {
21374                         curr_d = ABS(((rssi_type == NPHY_RSSI_SEL_NB) ?
21375                                       poll_results[vcm][result_idx] :
21376                                       poll_miniq[vcm][result_idx / 2]) -
21377                                      (target_code * NPHY_RSSICAL_NPOLL));
21378                         if (curr_d < min_d) {
21379                                 min_d = curr_d;
21380                                 min_vcm = vcm;
21381                         }
21382                         if (poll_results[vcm][result_idx] < min_poll) {
21383                                 min_poll = poll_results[vcm][result_idx];
21384                         }
21385                 }
21386                 vcm_final[result_idx] = min_vcm;
21387                 poll_results_min[result_idx] = min_poll;
21388         }
21389
21390         if (rssi_type != NPHY_RSSI_SEL_W2) {
21391                 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
21392         }
21393
21394         for (result_idx = 0; result_idx < 4; result_idx++) {
21395                 fine_digital_offset[result_idx] =
21396                     (target_code * NPHY_RSSICAL_NPOLL) -
21397                     poll_results[vcm_final[result_idx]][result_idx];
21398                 if (fine_digital_offset[result_idx] < 0) {
21399                         fine_digital_offset[result_idx] =
21400                             ABS(fine_digital_offset[result_idx]);
21401                         fine_digital_offset[result_idx] +=
21402                             (NPHY_RSSICAL_NPOLL / 2);
21403                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
21404                         fine_digital_offset[result_idx] =
21405                             -fine_digital_offset[result_idx];
21406                 } else {
21407                         fine_digital_offset[result_idx] +=
21408                             (NPHY_RSSICAL_NPOLL / 2);
21409                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
21410                 }
21411
21412                 if (poll_results_min[result_idx] ==
21413                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL) {
21414                         fine_digital_offset[result_idx] =
21415                             (target_code - NPHY_RSSICAL_MAXREAD - 1);
21416                 }
21417
21418                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
21419                                                (s8)
21420                                                fine_digital_offset[result_idx],
21421                                                (result_idx / 2 ==
21422                                                 0) ? RADIO_MIMO_CORESEL_CORE1 :
21423                                                RADIO_MIMO_CORESEL_CORE2,
21424                                                (result_idx % 2 ==
21425                                                 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
21426                                                rssi_type);
21427         }
21428
21429         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
21430         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
21431         if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL) {
21432                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21433                                      NPHY_RSSI_SEL_NB);
21434         } else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL) {
21435                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21436                                      NPHY_RSSI_SEL_W1);
21437         } else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G2_SEL) {
21438                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21439                                      NPHY_RSSI_SEL_W2);
21440         } else {
21441                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21442                                      NPHY_RSSI_SEL_W2);
21443         }
21444         if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL) {
21445                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21446                                      NPHY_RSSI_SEL_NB);
21447         } else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL) {
21448                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21449                                      NPHY_RSSI_SEL_W1);
21450         } else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G2_SEL) {
21451                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21452                                      NPHY_RSSI_SEL_W2);
21453         } else {
21454                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21455                                      NPHY_RSSI_SEL_W2);
21456         }
21457
21458         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
21459
21460         write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
21461         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
21462         write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
21463         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
21464
21465         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
21466         wlc_phy_clip_det_nphy(pi, 1, clip_state);
21467
21468         wlc_phy_resetcca_nphy(pi);
21469 }
21470
21471 int BCMFASTPATH
21472 wlc_phy_rssi_compute_nphy(phy_info_t *pi, wlc_d11rxhdr_t *wlc_rxh)
21473 {
21474         d11rxhdr_t *rxh = &wlc_rxh->rxhdr;
21475         s16 rxpwr, rxpwr0, rxpwr1;
21476         s16 phyRx0_l, phyRx2_l;
21477
21478         rxpwr = 0;
21479         rxpwr0 = le16_to_cpu(rxh->PhyRxStatus_1) & PRXS1_nphy_PWR0_MASK;
21480         rxpwr1 = (le16_to_cpu(rxh->PhyRxStatus_1) & PRXS1_nphy_PWR1_MASK) >> 8;
21481
21482         if (rxpwr0 > 127)
21483                 rxpwr0 -= 256;
21484         if (rxpwr1 > 127)
21485                 rxpwr1 -= 256;
21486
21487         phyRx0_l = le16_to_cpu(rxh->PhyRxStatus_0) & 0x00ff;
21488         phyRx2_l = le16_to_cpu(rxh->PhyRxStatus_2) & 0x00ff;
21489         if (phyRx2_l > 127)
21490                 phyRx2_l -= 256;
21491
21492         if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
21493                 rxpwr0 = rxpwr1;
21494                 rxpwr1 = phyRx2_l;
21495         }
21496
21497         wlc_rxh->rxpwr[0] = (s8) rxpwr0;
21498         wlc_rxh->rxpwr[1] = (s8) rxpwr1;
21499         wlc_rxh->do_rssi_ma = 0;
21500
21501         if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
21502                 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
21503         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
21504                 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
21505         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
21506                 rxpwr = (rxpwr0 + rxpwr1) >> 1;
21507         else
21508                 ASSERT(0);
21509
21510         return rxpwr;
21511 }
21512
21513 static void
21514 wlc_phy_rfctrlintc_override_nphy(phy_info_t *pi, u8 field, u16 value,
21515                                  u8 core_code)
21516 {
21517         u16 mask;
21518         u16 val;
21519         u8 core;
21520
21521         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21522                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21523                         if (core_code == RADIO_MIMO_CORESEL_CORE1
21524                             && core == PHY_CORE_1)
21525                                 continue;
21526                         else if (core_code == RADIO_MIMO_CORESEL_CORE2
21527                                  && core == PHY_CORE_0)
21528                                 continue;
21529
21530                         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
21531
21532                                 mask = (0x1 << 10);
21533                                 val = 1 << 10;
21534                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
21535                                             0x92, mask, val);
21536                         }
21537
21538                         if (field == NPHY_RfctrlIntc_override_OFF) {
21539
21540                                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
21541                                               0x92, 0);
21542
21543                                 wlc_phy_force_rfseq_nphy(pi,
21544                                                          NPHY_RFSEQ_RESET2RX);
21545                         } else if (field == NPHY_RfctrlIntc_override_TRSW) {
21546
21547                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21548
21549                                         mask = (0x1 << 6) | (0x1 << 7);
21550
21551                                         val = value << 6;
21552                                         mod_phy_reg(pi,
21553                                                     (core ==
21554                                                      PHY_CORE_0) ? 0x91 : 0x92,
21555                                                     mask, val);
21556
21557                                         or_phy_reg(pi,
21558                                                    (core ==
21559                                                     PHY_CORE_0) ? 0x91 : 0x92,
21560                                                    (0x1 << 10));
21561
21562                                         and_phy_reg(pi, 0x2ff, (u16)
21563                                                     ~(0x3 << 14));
21564                                         or_phy_reg(pi, 0x2ff, (0x1 << 13));
21565                                         or_phy_reg(pi, 0x2ff, (0x1 << 0));
21566                                 } else {
21567
21568                                         mask = (0x1 << 6) |
21569                                             (0x1 << 7) |
21570                                             (0x1 << 8) | (0x1 << 9);
21571                                         val = value << 6;
21572                                         mod_phy_reg(pi,
21573                                                     (core ==
21574                                                      PHY_CORE_0) ? 0x91 : 0x92,
21575                                                     mask, val);
21576
21577                                         mask = (0x1 << 0);
21578                                         val = 1 << 0;
21579                                         mod_phy_reg(pi,
21580                                                     (core ==
21581                                                      PHY_CORE_0) ? 0xe7 : 0xec,
21582                                                     mask, val);
21583
21584                                         mask = (core == PHY_CORE_0) ? (0x1 << 0)
21585                                             : (0x1 << 1);
21586                                         val = 1 << ((core == PHY_CORE_0) ?
21587                                                     0 : 1);
21588                                         mod_phy_reg(pi, 0x78, mask, val);
21589
21590                                         SPINWAIT(((read_phy_reg(pi, 0x78) & val)
21591                                                   != 0), 10000);
21592                                         ASSERT((read_phy_reg(pi, 0x78) & val) ==
21593                                                0);
21594
21595                                         mask = (0x1 << 0);
21596                                         val = 0 << 0;
21597                                         mod_phy_reg(pi,
21598                                                     (core ==
21599                                                      PHY_CORE_0) ? 0xe7 : 0xec,
21600                                                     mask, val);
21601                                 }
21602                         } else if (field == NPHY_RfctrlIntc_override_PA) {
21603                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21604
21605                                         mask = (0x1 << 4) | (0x1 << 5);
21606
21607                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21608                                                 val = value << 5;
21609                                         } else {
21610                                                 val = value << 4;
21611                                         }
21612
21613                                         mod_phy_reg(pi,
21614                                                     (core ==
21615                                                      PHY_CORE_0) ? 0x91 : 0x92,
21616                                                     mask, val);
21617
21618                                         or_phy_reg(pi,
21619                                                    (core ==
21620                                                     PHY_CORE_0) ? 0x91 : 0x92,
21621                                                    (0x1 << 12));
21622                                 } else {
21623
21624                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21625                                                 mask = (0x1 << 5);
21626                                                 val = value << 5;
21627                                         } else {
21628                                                 mask = (0x1 << 4);
21629                                                 val = value << 4;
21630                                         }
21631                                         mod_phy_reg(pi,
21632                                                     (core ==
21633                                                      PHY_CORE_0) ? 0x91 : 0x92,
21634                                                     mask, val);
21635                                 }
21636                         } else if (field == NPHY_RfctrlIntc_override_EXT_LNA_PU) {
21637                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21638                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21639
21640                                                 mask = (0x1 << 0);
21641                                                 val = value << 0;
21642                                                 mod_phy_reg(pi,
21643                                                             (core ==
21644                                                              PHY_CORE_0) ? 0x91
21645                                                             : 0x92, mask, val);
21646
21647                                                 mask = (0x1 << 2);
21648                                                 mod_phy_reg(pi,
21649                                                             (core ==
21650                                                              PHY_CORE_0) ? 0x91
21651                                                             : 0x92, mask, 0);
21652                                         } else {
21653
21654                                                 mask = (0x1 << 2);
21655                                                 val = value << 2;
21656                                                 mod_phy_reg(pi,
21657                                                             (core ==
21658                                                              PHY_CORE_0) ? 0x91
21659                                                             : 0x92, mask, val);
21660
21661                                                 mask = (0x1 << 0);
21662                                                 mod_phy_reg(pi,
21663                                                             (core ==
21664                                                              PHY_CORE_0) ? 0x91
21665                                                             : 0x92, mask, 0);
21666                                         }
21667
21668                                         mask = (0x1 << 11);
21669                                         val = 1 << 11;
21670                                         mod_phy_reg(pi,
21671                                                     (core ==
21672                                                      PHY_CORE_0) ? 0x91 : 0x92,
21673                                                     mask, val);
21674                                 } else {
21675
21676                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21677                                                 mask = (0x1 << 0);
21678                                                 val = value << 0;
21679                                         } else {
21680                                                 mask = (0x1 << 2);
21681                                                 val = value << 2;
21682                                         }
21683                                         mod_phy_reg(pi,
21684                                                     (core ==
21685                                                      PHY_CORE_0) ? 0x91 : 0x92,
21686                                                     mask, val);
21687                                 }
21688                         } else if (field ==
21689                                    NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
21690                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21691                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21692
21693                                                 mask = (0x1 << 1);
21694                                                 val = value << 1;
21695                                                 mod_phy_reg(pi,
21696                                                             (core ==
21697                                                              PHY_CORE_0) ? 0x91
21698                                                             : 0x92, mask, val);
21699
21700                                                 mask = (0x1 << 3);
21701                                                 mod_phy_reg(pi,
21702                                                             (core ==
21703                                                              PHY_CORE_0) ? 0x91
21704                                                             : 0x92, mask, 0);
21705                                         } else {
21706
21707                                                 mask = (0x1 << 3);
21708                                                 val = value << 3;
21709                                                 mod_phy_reg(pi,
21710                                                             (core ==
21711                                                              PHY_CORE_0) ? 0x91
21712                                                             : 0x92, mask, val);
21713
21714                                                 mask = (0x1 << 1);
21715                                                 mod_phy_reg(pi,
21716                                                             (core ==
21717                                                              PHY_CORE_0) ? 0x91
21718                                                             : 0x92, mask, 0);
21719                                         }
21720
21721                                         mask = (0x1 << 11);
21722                                         val = 1 << 11;
21723                                         mod_phy_reg(pi,
21724                                                     (core ==
21725                                                      PHY_CORE_0) ? 0x91 : 0x92,
21726                                                     mask, val);
21727                                 } else {
21728
21729                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21730                                                 mask = (0x1 << 1);
21731                                                 val = value << 1;
21732                                         } else {
21733                                                 mask = (0x1 << 3);
21734                                                 val = value << 3;
21735                                         }
21736                                         mod_phy_reg(pi,
21737                                                     (core ==
21738                                                      PHY_CORE_0) ? 0x91 : 0x92,
21739                                                     mask, val);
21740                                 }
21741                         }
21742                 }
21743         } else {
21744                 return;
21745         }
21746 }
21747
21748 static void wlc_phy_rssi_cal_nphy_rev3(phy_info_t *pi)
21749 {
21750         u16 classif_state;
21751         u16 clip_state[2];
21752         u16 clip_off[] = { 0xffff, 0xffff };
21753         s32 target_code;
21754         u8 vcm, min_vcm;
21755         u8 vcm_final = 0;
21756         u8 result_idx;
21757         s32 poll_results[8][4] = {
21758                 {0, 0, 0, 0},
21759                 {0, 0, 0, 0},
21760                 {0, 0, 0, 0},
21761                 {0, 0, 0, 0},
21762                 {0, 0, 0, 0},
21763                 {0, 0, 0, 0},
21764                 {0, 0, 0, 0},
21765                 {0, 0, 0, 0}
21766         };
21767         s32 poll_result_core[4] = { 0, 0, 0, 0 };
21768         s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
21769         s32 fine_digital_offset[4];
21770         s32 poll_results_min[4] = { 0, 0, 0, 0 };
21771         s32 min_poll;
21772         u8 vcm_level_max;
21773         u8 core;
21774         u8 wb_cnt;
21775         u8 rssi_type;
21776         u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
21777         u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
21778         u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
21779         u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
21780         u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
21781         u16 NPHY_RfctrlCmd_save;
21782         u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
21783         u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
21784         u8 rxcore_state;
21785         u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
21786         u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
21787         u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
21788         u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
21789
21790         NPHY_REV7_RfctrlOverride3_save = NPHY_REV7_RfctrlOverride4_save =
21791             NPHY_REV7_RfctrlOverride5_save = NPHY_REV7_RfctrlOverride6_save =
21792             NPHY_REV7_RfctrlMiscReg3_save = NPHY_REV7_RfctrlMiscReg4_save =
21793             NPHY_REV7_RfctrlMiscReg5_save = NPHY_REV7_RfctrlMiscReg6_save = 0;
21794
21795         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
21796         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
21797         wlc_phy_clip_det_nphy(pi, 0, clip_state);
21798         wlc_phy_clip_det_nphy(pi, 1, clip_off);
21799
21800         NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
21801         NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
21802         NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
21803         NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
21804         NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
21805         NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
21806         NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
21807         NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
21808         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21809                 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
21810                 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
21811                 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
21812                 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
21813         }
21814         NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21815         NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21816         NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
21817         NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21818         NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21819         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21820                 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
21821                 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
21822                 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
21823                 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
21824         }
21825         NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
21826         NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
21827
21828         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
21829                                          RADIO_MIMO_CORESEL_ALLRXTX);
21830         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
21831                                          RADIO_MIMO_CORESEL_ALLRXTX);
21832
21833         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21834                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
21835                                                      NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
21836                                                      0, 0, 0);
21837         } else {
21838                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
21839         }
21840
21841         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21842                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
21843                                                      NPHY_REV7_RfctrlOverride_cmd_rx_pu,
21844                                                      1, 0, 0);
21845         } else {
21846                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
21847         }
21848
21849         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21850                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
21851                                                   1, 0, 0,
21852                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
21853                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
21854                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
21855         } else {
21856                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
21857                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
21858         }
21859
21860         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21861                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21862                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
21863                                                           0, 0, 0,
21864                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21865                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 1, 0,
21866                                                           0,
21867                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21868                 } else {
21869                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
21870                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
21871                 }
21872
21873         } else {
21874                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21875                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4),
21876                                                           0, 0, 0,
21877                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21878                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 1, 0,
21879                                                           0,
21880                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21881                 } else {
21882                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
21883                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
21884                 }
21885         }
21886
21887         rxcore_state = wlc_phy_rxcore_getstate_nphy((wlc_phy_t *) pi);
21888
21889         vcm_level_max = 8;
21890
21891         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21892
21893                 if ((rxcore_state & (1 << core)) == 0)
21894                         continue;
21895
21896                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
21897                                                core ==
21898                                                PHY_CORE_0 ?
21899                                                RADIO_MIMO_CORESEL_CORE1 :
21900                                                RADIO_MIMO_CORESEL_CORE2,
21901                                                NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
21902                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
21903                                                core ==
21904                                                PHY_CORE_0 ?
21905                                                RADIO_MIMO_CORESEL_CORE1 :
21906                                                RADIO_MIMO_CORESEL_CORE2,
21907                                                NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
21908
21909                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
21910                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21911
21912                                 mod_radio_reg(pi, (core == PHY_CORE_0) ?
21913                                               RADIO_2057_NB_MASTER_CORE0 :
21914                                               RADIO_2057_NB_MASTER_CORE1,
21915                                               RADIO_2057_VCM_MASK, vcm);
21916                         } else {
21917
21918                                 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
21919                                               ((core ==
21920                                                 PHY_CORE_0) ? RADIO_2056_RX0 :
21921                                                RADIO_2056_RX1),
21922                                               RADIO_2056_VCM_MASK,
21923                                               vcm << RADIO_2056_RSSI_VCM_SHIFT);
21924                         }
21925
21926                         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
21927                                                &poll_results[vcm][0],
21928                                                NPHY_RSSICAL_NPOLL);
21929                 }
21930
21931                 for (result_idx = 0; result_idx < 4; result_idx++) {
21932                         if ((core == result_idx / 2) && (result_idx % 2 == 0)) {
21933
21934                                 min_d = NPHY_RSSICAL_MAXD;
21935                                 min_vcm = 0;
21936                                 min_poll =
21937                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL +
21938                                     1;
21939                                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
21940                                         curr_d = poll_results[vcm][result_idx] *
21941                                             poll_results[vcm][result_idx] +
21942                                             poll_results[vcm][result_idx + 1] *
21943                                             poll_results[vcm][result_idx + 1];
21944                                         if (curr_d < min_d) {
21945                                                 min_d = curr_d;
21946                                                 min_vcm = vcm;
21947                                         }
21948                                         if (poll_results[vcm][result_idx] <
21949                                             min_poll) {
21950                                                 min_poll =
21951                                                     poll_results[vcm]
21952                                                     [result_idx];
21953                                         }
21954                                 }
21955                                 vcm_final = min_vcm;
21956                                 poll_results_min[result_idx] = min_poll;
21957                         }
21958                 }
21959
21960                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21961                         mod_radio_reg(pi, (core == PHY_CORE_0) ?
21962                                       RADIO_2057_NB_MASTER_CORE0 :
21963                                       RADIO_2057_NB_MASTER_CORE1,
21964                                       RADIO_2057_VCM_MASK, vcm_final);
21965                 } else {
21966                         mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
21967                                       ((core ==
21968                                         PHY_CORE_0) ? RADIO_2056_RX0 :
21969                                        RADIO_2056_RX1), RADIO_2056_VCM_MASK,
21970                                       vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
21971                 }
21972
21973                 for (result_idx = 0; result_idx < 4; result_idx++) {
21974                         if (core == result_idx / 2) {
21975                                 fine_digital_offset[result_idx] =
21976                                     (NPHY_RSSICAL_NB_TARGET *
21977                                      NPHY_RSSICAL_NPOLL) -
21978                                     poll_results[vcm_final][result_idx];
21979                                 if (fine_digital_offset[result_idx] < 0) {
21980                                         fine_digital_offset[result_idx] =
21981                                             ABS(fine_digital_offset
21982                                                 [result_idx]);
21983                                         fine_digital_offset[result_idx] +=
21984                                             (NPHY_RSSICAL_NPOLL / 2);
21985                                         fine_digital_offset[result_idx] /=
21986                                             NPHY_RSSICAL_NPOLL;
21987                                         fine_digital_offset[result_idx] =
21988                                             -fine_digital_offset[result_idx];
21989                                 } else {
21990                                         fine_digital_offset[result_idx] +=
21991                                             (NPHY_RSSICAL_NPOLL / 2);
21992                                         fine_digital_offset[result_idx] /=
21993                                             NPHY_RSSICAL_NPOLL;
21994                                 }
21995
21996                                 if (poll_results_min[result_idx] ==
21997                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL) {
21998                                         fine_digital_offset[result_idx] =
21999                                             (NPHY_RSSICAL_NB_TARGET -
22000                                              NPHY_RSSICAL_MAXREAD - 1);
22001                                 }
22002
22003                                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22004                                                                (s8)
22005                                                                fine_digital_offset
22006                                                                [result_idx],
22007                                                                (result_idx /
22008                                                                 2 ==
22009                                                                 0) ?
22010                                                                RADIO_MIMO_CORESEL_CORE1
22011                                                                :
22012                                                                RADIO_MIMO_CORESEL_CORE2,
22013                                                                (result_idx %
22014                                                                 2 ==
22015                                                                 0) ? NPHY_RAIL_I
22016                                                                : NPHY_RAIL_Q,
22017                                                                NPHY_RSSI_SEL_NB);
22018                         }
22019                 }
22020
22021         }
22022
22023         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22024
22025                 if ((rxcore_state & (1 << core)) == 0)
22026                         continue;
22027
22028                 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22029                         if (wb_cnt == 0) {
22030                                 rssi_type = NPHY_RSSI_SEL_W1;
22031                                 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22032                         } else {
22033                                 rssi_type = NPHY_RSSI_SEL_W2;
22034                                 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22035                         }
22036
22037                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22038                                                        core ==
22039                                                        PHY_CORE_0 ?
22040                                                        RADIO_MIMO_CORESEL_CORE1
22041                                                        :
22042                                                        RADIO_MIMO_CORESEL_CORE2,
22043                                                        NPHY_RAIL_I, rssi_type);
22044                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22045                                                        core ==
22046                                                        PHY_CORE_0 ?
22047                                                        RADIO_MIMO_CORESEL_CORE1
22048                                                        :
22049                                                        RADIO_MIMO_CORESEL_CORE2,
22050                                                        NPHY_RAIL_Q, rssi_type);
22051
22052                         wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22053                                                NPHY_RSSICAL_NPOLL);
22054
22055                         for (result_idx = 0; result_idx < 4; result_idx++) {
22056                                 if (core == result_idx / 2) {
22057                                         fine_digital_offset[result_idx] =
22058                                             (target_code * NPHY_RSSICAL_NPOLL) -
22059                                             poll_result_core[result_idx];
22060                                         if (fine_digital_offset[result_idx] < 0) {
22061                                                 fine_digital_offset[result_idx]
22062                                                     =
22063                                                     ABS(fine_digital_offset
22064                                                         [result_idx]);
22065                                                 fine_digital_offset[result_idx]
22066                                                     += (NPHY_RSSICAL_NPOLL / 2);
22067                                                 fine_digital_offset[result_idx]
22068                                                     /= NPHY_RSSICAL_NPOLL;
22069                                                 fine_digital_offset[result_idx]
22070                                                     =
22071                                                     -fine_digital_offset
22072                                                     [result_idx];
22073                                         } else {
22074                                                 fine_digital_offset[result_idx]
22075                                                     += (NPHY_RSSICAL_NPOLL / 2);
22076                                                 fine_digital_offset[result_idx]
22077                                                     /= NPHY_RSSICAL_NPOLL;
22078                                         }
22079
22080                                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22081                                                                        (s8)
22082                                                                        fine_digital_offset
22083                                                                        [core *
22084                                                                         2],
22085                                                                        (core ==
22086                                                                         PHY_CORE_0)
22087                                                                        ?
22088                                                                        RADIO_MIMO_CORESEL_CORE1
22089                                                                        :
22090                                                                        RADIO_MIMO_CORESEL_CORE2,
22091                                                                        (result_idx
22092                                                                         % 2 ==
22093                                                                         0) ?
22094                                                                        NPHY_RAIL_I
22095                                                                        :
22096                                                                        NPHY_RAIL_Q,
22097                                                                        rssi_type);
22098                                 }
22099                         }
22100
22101                 }
22102         }
22103
22104         write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22105         write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22106
22107         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22108
22109         mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22110         mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22111         mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22112
22113         mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22114         mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22115         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22116
22117         write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22118         write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22119         write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22120         write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22121         write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22122         write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22123         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22124                 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22125                 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22126                 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22127                 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22128         }
22129         write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22130         write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22131         write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22132         write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22133         write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22134         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22135                 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22136                 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22137                 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22138                 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22139         }
22140         write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22141         write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22142
22143         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22144                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22145                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22146                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22147                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22148                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22149                 } else {
22150                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22151                             read_radio_reg(pi,
22152                                            RADIO_2056_RX_RSSI_MISC |
22153                                            RADIO_2056_RX0);
22154                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22155                             read_radio_reg(pi,
22156                                            RADIO_2056_RX_RSSI_MISC |
22157                                            RADIO_2056_RX1);
22158                 }
22159
22160                 pi->rssical_cache.rssical_phyregs_2G[0] =
22161                     read_phy_reg(pi, 0x1a6);
22162                 pi->rssical_cache.rssical_phyregs_2G[1] =
22163                     read_phy_reg(pi, 0x1ac);
22164                 pi->rssical_cache.rssical_phyregs_2G[2] =
22165                     read_phy_reg(pi, 0x1b2);
22166                 pi->rssical_cache.rssical_phyregs_2G[3] =
22167                     read_phy_reg(pi, 0x1b8);
22168                 pi->rssical_cache.rssical_phyregs_2G[4] =
22169                     read_phy_reg(pi, 0x1a4);
22170                 pi->rssical_cache.rssical_phyregs_2G[5] =
22171                     read_phy_reg(pi, 0x1aa);
22172                 pi->rssical_cache.rssical_phyregs_2G[6] =
22173                     read_phy_reg(pi, 0x1b0);
22174                 pi->rssical_cache.rssical_phyregs_2G[7] =
22175                     read_phy_reg(pi, 0x1b6);
22176                 pi->rssical_cache.rssical_phyregs_2G[8] =
22177                     read_phy_reg(pi, 0x1a5);
22178                 pi->rssical_cache.rssical_phyregs_2G[9] =
22179                     read_phy_reg(pi, 0x1ab);
22180                 pi->rssical_cache.rssical_phyregs_2G[10] =
22181                     read_phy_reg(pi, 0x1b1);
22182                 pi->rssical_cache.rssical_phyregs_2G[11] =
22183                     read_phy_reg(pi, 0x1b7);
22184
22185                 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22186         } else {
22187                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22188                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22189                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22190                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22191                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22192                 } else {
22193                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22194                             read_radio_reg(pi,
22195                                            RADIO_2056_RX_RSSI_MISC |
22196                                            RADIO_2056_RX0);
22197                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22198                             read_radio_reg(pi,
22199                                            RADIO_2056_RX_RSSI_MISC |
22200                                            RADIO_2056_RX1);
22201                 }
22202
22203                 pi->rssical_cache.rssical_phyregs_5G[0] =
22204                     read_phy_reg(pi, 0x1a6);
22205                 pi->rssical_cache.rssical_phyregs_5G[1] =
22206                     read_phy_reg(pi, 0x1ac);
22207                 pi->rssical_cache.rssical_phyregs_5G[2] =
22208                     read_phy_reg(pi, 0x1b2);
22209                 pi->rssical_cache.rssical_phyregs_5G[3] =
22210                     read_phy_reg(pi, 0x1b8);
22211                 pi->rssical_cache.rssical_phyregs_5G[4] =
22212                     read_phy_reg(pi, 0x1a4);
22213                 pi->rssical_cache.rssical_phyregs_5G[5] =
22214                     read_phy_reg(pi, 0x1aa);
22215                 pi->rssical_cache.rssical_phyregs_5G[6] =
22216                     read_phy_reg(pi, 0x1b0);
22217                 pi->rssical_cache.rssical_phyregs_5G[7] =
22218                     read_phy_reg(pi, 0x1b6);
22219                 pi->rssical_cache.rssical_phyregs_5G[8] =
22220                     read_phy_reg(pi, 0x1a5);
22221                 pi->rssical_cache.rssical_phyregs_5G[9] =
22222                     read_phy_reg(pi, 0x1ab);
22223                 pi->rssical_cache.rssical_phyregs_5G[10] =
22224                     read_phy_reg(pi, 0x1b1);
22225                 pi->rssical_cache.rssical_phyregs_5G[11] =
22226                     read_phy_reg(pi, 0x1b7);
22227
22228                 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22229         }
22230
22231         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22232         wlc_phy_clip_det_nphy(pi, 1, clip_state);
22233 }
22234
22235 static void wlc_phy_restore_rssical_nphy(phy_info_t *pi)
22236 {
22237         ASSERT(NREV_GE(pi->pubpi.phy_rev, 3));
22238
22239         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22240                 if (pi->nphy_rssical_chanspec_2G == 0)
22241                         return;
22242
22243                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22244                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
22245                                       RADIO_2057_VCM_MASK,
22246                                       pi->rssical_cache.
22247                                       rssical_radio_regs_2G[0]);
22248                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
22249                                       RADIO_2057_VCM_MASK,
22250                                       pi->rssical_cache.
22251                                       rssical_radio_regs_2G[1]);
22252                 } else {
22253                         mod_radio_reg(pi,
22254                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
22255                                       RADIO_2056_VCM_MASK,
22256                                       pi->rssical_cache.
22257                                       rssical_radio_regs_2G[0]);
22258                         mod_radio_reg(pi,
22259                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
22260                                       RADIO_2056_VCM_MASK,
22261                                       pi->rssical_cache.
22262                                       rssical_radio_regs_2G[1]);
22263                 }
22264
22265                 write_phy_reg(pi, 0x1a6,
22266                               pi->rssical_cache.rssical_phyregs_2G[0]);
22267                 write_phy_reg(pi, 0x1ac,
22268                               pi->rssical_cache.rssical_phyregs_2G[1]);
22269                 write_phy_reg(pi, 0x1b2,
22270                               pi->rssical_cache.rssical_phyregs_2G[2]);
22271                 write_phy_reg(pi, 0x1b8,
22272                               pi->rssical_cache.rssical_phyregs_2G[3]);
22273                 write_phy_reg(pi, 0x1a4,
22274                               pi->rssical_cache.rssical_phyregs_2G[4]);
22275                 write_phy_reg(pi, 0x1aa,
22276                               pi->rssical_cache.rssical_phyregs_2G[5]);
22277                 write_phy_reg(pi, 0x1b0,
22278                               pi->rssical_cache.rssical_phyregs_2G[6]);
22279                 write_phy_reg(pi, 0x1b6,
22280                               pi->rssical_cache.rssical_phyregs_2G[7]);
22281                 write_phy_reg(pi, 0x1a5,
22282                               pi->rssical_cache.rssical_phyregs_2G[8]);
22283                 write_phy_reg(pi, 0x1ab,
22284                               pi->rssical_cache.rssical_phyregs_2G[9]);
22285                 write_phy_reg(pi, 0x1b1,
22286                               pi->rssical_cache.rssical_phyregs_2G[10]);
22287                 write_phy_reg(pi, 0x1b7,
22288                               pi->rssical_cache.rssical_phyregs_2G[11]);
22289
22290         } else {
22291                 if (pi->nphy_rssical_chanspec_5G == 0)
22292                         return;
22293
22294                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22295                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
22296                                       RADIO_2057_VCM_MASK,
22297                                       pi->rssical_cache.
22298                                       rssical_radio_regs_5G[0]);
22299                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
22300                                       RADIO_2057_VCM_MASK,
22301                                       pi->rssical_cache.
22302                                       rssical_radio_regs_5G[1]);
22303                 } else {
22304                         mod_radio_reg(pi,
22305                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
22306                                       RADIO_2056_VCM_MASK,
22307                                       pi->rssical_cache.
22308                                       rssical_radio_regs_5G[0]);
22309                         mod_radio_reg(pi,
22310                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
22311                                       RADIO_2056_VCM_MASK,
22312                                       pi->rssical_cache.
22313                                       rssical_radio_regs_5G[1]);
22314                 }
22315
22316                 write_phy_reg(pi, 0x1a6,
22317                               pi->rssical_cache.rssical_phyregs_5G[0]);
22318                 write_phy_reg(pi, 0x1ac,
22319                               pi->rssical_cache.rssical_phyregs_5G[1]);
22320                 write_phy_reg(pi, 0x1b2,
22321                               pi->rssical_cache.rssical_phyregs_5G[2]);
22322                 write_phy_reg(pi, 0x1b8,
22323                               pi->rssical_cache.rssical_phyregs_5G[3]);
22324                 write_phy_reg(pi, 0x1a4,
22325                               pi->rssical_cache.rssical_phyregs_5G[4]);
22326                 write_phy_reg(pi, 0x1aa,
22327                               pi->rssical_cache.rssical_phyregs_5G[5]);
22328                 write_phy_reg(pi, 0x1b0,
22329                               pi->rssical_cache.rssical_phyregs_5G[6]);
22330                 write_phy_reg(pi, 0x1b6,
22331                               pi->rssical_cache.rssical_phyregs_5G[7]);
22332                 write_phy_reg(pi, 0x1a5,
22333                               pi->rssical_cache.rssical_phyregs_5G[8]);
22334                 write_phy_reg(pi, 0x1ab,
22335                               pi->rssical_cache.rssical_phyregs_5G[9]);
22336                 write_phy_reg(pi, 0x1b1,
22337                               pi->rssical_cache.rssical_phyregs_5G[10]);
22338                 write_phy_reg(pi, 0x1b7,
22339                               pi->rssical_cache.rssical_phyregs_5G[11]);
22340         }
22341 }
22342
22343 static u16
22344 wlc_phy_gen_load_samples_nphy(phy_info_t *pi, u32 f_kHz, u16 max_val,
22345                               u8 dac_test_mode)
22346 {
22347         u8 phy_bw, is_phybw40;
22348         u16 num_samps, t, spur;
22349         fixed theta = 0, rot = 0;
22350         u32 tbl_len;
22351         cs32 *tone_buf = NULL;
22352
22353         is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
22354         phy_bw = (is_phybw40 == 1) ? 40 : 20;
22355         tbl_len = (phy_bw << 3);
22356
22357         if (dac_test_mode == 1) {
22358                 spur = read_phy_reg(pi, 0x01);
22359                 spur = (spur >> 15) & 1;
22360                 phy_bw = (spur == 1) ? 82 : 80;
22361                 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
22362
22363                 tbl_len = (phy_bw << 1);
22364         }
22365
22366         tone_buf = kmalloc(sizeof(cs32) * tbl_len, GFP_ATOMIC);
22367         if (tone_buf == NULL) {
22368                 return 0;
22369         }
22370
22371         num_samps = (u16) tbl_len;
22372         rot = FIXED((f_kHz * 36) / phy_bw) / 100;
22373         theta = 0;
22374
22375         for (t = 0; t < num_samps; t++) {
22376
22377                 wlc_phy_cordic(theta, &tone_buf[t]);
22378
22379                 theta += rot;
22380
22381                 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
22382                 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
22383         }
22384
22385         wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
22386
22387         if (tone_buf != NULL)
22388                 kfree(tone_buf);
22389
22390         return num_samps;
22391 }
22392
22393 int
22394 wlc_phy_tx_tone_nphy(phy_info_t *pi, u32 f_kHz, u16 max_val,
22395                      u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
22396 {
22397         u16 num_samps;
22398         u16 loops = 0xffff;
22399         u16 wait = 0;
22400
22401         num_samps =
22402                 wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val, dac_test_mode);
22403         if (num_samps == 0) {
22404                 return BCME_ERROR;
22405         }
22406
22407         wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
22408                                 dac_test_mode, modify_bbmult);
22409
22410         return BCME_OK;
22411 }
22412
22413 static void
22414 wlc_phy_loadsampletable_nphy(phy_info_t *pi, cs32 *tone_buf,
22415                              u16 num_samps)
22416 {
22417         u16 t;
22418         u32 *data_buf = NULL;
22419
22420         data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
22421         if (data_buf == NULL) {
22422                 return;
22423         }
22424
22425         if (pi->phyhang_avoid)
22426                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22427
22428         for (t = 0; t < num_samps; t++) {
22429                 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
22430                     (((unsigned int)tone_buf[t].q) & 0x3ff);
22431         }
22432         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
22433                                  data_buf);
22434
22435         if (data_buf != NULL)
22436                 kfree(data_buf);
22437
22438         if (pi->phyhang_avoid)
22439                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22440 }
22441
22442 static void
22443 wlc_phy_runsamples_nphy(phy_info_t *pi, u16 num_samps, u16 loops,
22444                         u16 wait, u8 iqmode, u8 dac_test_mode,
22445                         bool modify_bbmult)
22446 {
22447         u16 bb_mult;
22448         u8 phy_bw, sample_cmd;
22449         u16 orig_RfseqCoreActv;
22450         u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
22451             lpf_bw_ctl_miscreg4;
22452
22453         if (pi->phyhang_avoid)
22454                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22455
22456         phy_bw = 20;
22457         if (CHSPEC_IS40(pi->radio_chanspec))
22458                 phy_bw = 40;
22459
22460         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22461
22462                 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
22463                 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
22464                 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
22465                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
22466                             (0x7 << 8);
22467                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
22468                             (0x7 << 8);
22469                 } else {
22470                         wlc_phy_rfctrl_override_nphy_rev7(pi,
22471                                                           (0x1 << 7),
22472                                                           wlc_phy_read_lpf_bw_ctl_nphy
22473                                                           (pi, 0), 0, 0,
22474                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
22475
22476                         pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
22477
22478                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
22479                             (0x7 << 8);
22480                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
22481                             (0x7 << 8);
22482                 }
22483         }
22484
22485         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
22486
22487                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22488                                         &bb_mult);
22489                 pi->nphy_bb_mult_save =
22490                     BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
22491         }
22492
22493         if (modify_bbmult) {
22494                 bb_mult = (phy_bw == 20) ? 100 : 71;
22495                 bb_mult = (bb_mult << 8) + bb_mult;
22496                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22497                                          &bb_mult);
22498         }
22499
22500         if (pi->phyhang_avoid)
22501                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22502
22503         write_phy_reg(pi, 0xc6, num_samps - 1);
22504
22505         if (loops != 0xffff) {
22506                 write_phy_reg(pi, 0xc4, loops - 1);
22507         } else {
22508                 write_phy_reg(pi, 0xc4, loops);
22509         }
22510         write_phy_reg(pi, 0xc5, wait);
22511
22512         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
22513         or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
22514         if (iqmode) {
22515
22516                 and_phy_reg(pi, 0xc2, 0x7FFF);
22517
22518                 or_phy_reg(pi, 0xc2, 0x8000);
22519         } else {
22520
22521                 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
22522                 write_phy_reg(pi, 0xc3, sample_cmd);
22523         }
22524
22525         SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
22526
22527         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
22528 }
22529
22530 void wlc_phy_stopplayback_nphy(phy_info_t *pi)
22531 {
22532         u16 playback_status;
22533         u16 bb_mult;
22534
22535         if (pi->phyhang_avoid)
22536                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22537
22538         playback_status = read_phy_reg(pi, 0xc7);
22539         if (playback_status & 0x1) {
22540                 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
22541         } else if (playback_status & 0x2) {
22542
22543                 and_phy_reg(pi, 0xc2,
22544                             (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
22545         }
22546
22547         and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
22548
22549         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
22550
22551                 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
22552                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22553                                          &bb_mult);
22554
22555                 pi->nphy_bb_mult_save = 0;
22556         }
22557
22558         if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
22559                 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
22560                         wlc_phy_rfctrl_override_nphy_rev7(pi,
22561                                                           (0x1 << 7),
22562                                                           0, 0, 1,
22563                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
22564                         pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
22565                 }
22566         }
22567
22568         if (pi->phyhang_avoid)
22569                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22570 }
22571
22572 nphy_txgains_t wlc_phy_get_tx_gain_nphy(phy_info_t *pi)
22573 {
22574         u16 base_idx[2], curr_gain[2];
22575         u8 core_no;
22576         nphy_txgains_t target_gain;
22577         u32 *tx_pwrctrl_tbl = NULL;
22578
22579         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
22580                 if (pi->phyhang_avoid)
22581                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
22582
22583                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
22584                                         curr_gain);
22585
22586                 if (pi->phyhang_avoid)
22587                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
22588
22589                 for (core_no = 0; core_no < 2; core_no++) {
22590                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22591                                 target_gain.ipa[core_no] =
22592                                     curr_gain[core_no] & 0x0007;
22593                                 target_gain.pad[core_no] =
22594                                     ((curr_gain[core_no] & 0x00F8) >> 3);
22595                                 target_gain.pga[core_no] =
22596                                     ((curr_gain[core_no] & 0x0F00) >> 8);
22597                                 target_gain.txgm[core_no] =
22598                                     ((curr_gain[core_no] & 0x7000) >> 12);
22599                                 target_gain.txlpf[core_no] =
22600                                     ((curr_gain[core_no] & 0x8000) >> 15);
22601                         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22602                                 target_gain.ipa[core_no] =
22603                                     curr_gain[core_no] & 0x000F;
22604                                 target_gain.pad[core_no] =
22605                                     ((curr_gain[core_no] & 0x00F0) >> 4);
22606                                 target_gain.pga[core_no] =
22607                                     ((curr_gain[core_no] & 0x0F00) >> 8);
22608                                 target_gain.txgm[core_no] =
22609                                     ((curr_gain[core_no] & 0x7000) >> 12);
22610                         } else {
22611                                 target_gain.ipa[core_no] =
22612                                     curr_gain[core_no] & 0x0003;
22613                                 target_gain.pad[core_no] =
22614                                     ((curr_gain[core_no] & 0x000C) >> 2);
22615                                 target_gain.pga[core_no] =
22616                                     ((curr_gain[core_no] & 0x0070) >> 4);
22617                                 target_gain.txgm[core_no] =
22618                                     ((curr_gain[core_no] & 0x0380) >> 7);
22619                         }
22620                 }
22621         } else {
22622                 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
22623                 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
22624                 for (core_no = 0; core_no < 2; core_no++) {
22625                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22626                                 if (PHY_IPA(pi)) {
22627                                         tx_pwrctrl_tbl =
22628                                             wlc_phy_get_ipa_gaintbl_nphy(pi);
22629                                 } else {
22630                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22631                                                 if NREV_IS
22632                                                         (pi->pubpi.phy_rev, 3) {
22633                                                         tx_pwrctrl_tbl =
22634                                                             nphy_tpc_5GHz_txgain_rev3;
22635                                                 } else if NREV_IS
22636                                                         (pi->pubpi.phy_rev, 4) {
22637                                                         tx_pwrctrl_tbl =
22638                                                             (pi->srom_fem5g.
22639                                                              extpagain ==
22640                                                              3) ?
22641                                                             nphy_tpc_5GHz_txgain_HiPwrEPA
22642                                                             :
22643                                                             nphy_tpc_5GHz_txgain_rev4;
22644                                                 } else {
22645                                                         tx_pwrctrl_tbl =
22646                                                             nphy_tpc_5GHz_txgain_rev5;
22647                                                 }
22648                                         } else {
22649                                                 if (NREV_GE
22650                                                     (pi->pubpi.phy_rev, 7)) {
22651                                                         if (pi->pubpi.
22652                                                             radiorev == 3) {
22653                                                                 tx_pwrctrl_tbl =
22654                                                                     nphy_tpc_txgain_epa_2057rev3;
22655                                                         } else if (pi->pubpi.
22656                                                                    radiorev ==
22657                                                                    5) {
22658                                                                 tx_pwrctrl_tbl =
22659                                                                     nphy_tpc_txgain_epa_2057rev5;
22660                                                         }
22661
22662                                                 } else {
22663                                                         if (NREV_GE
22664                                                             (pi->pubpi.phy_rev,
22665                                                              5)
22666                                                             && (pi->srom_fem2g.
22667                                                                 extpagain ==
22668                                                                 3)) {
22669                                                                 tx_pwrctrl_tbl =
22670                                                                     nphy_tpc_txgain_HiPwrEPA;
22671                                                         } else {
22672                                                                 tx_pwrctrl_tbl =
22673                                                                     nphy_tpc_txgain_rev3;
22674                                                         }
22675                                                 }
22676                                         }
22677                                 }
22678                                 if NREV_GE
22679                                         (pi->pubpi.phy_rev, 7) {
22680                                         target_gain.ipa[core_no] =
22681                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22682                                              >> 16) & 0x7;
22683                                         target_gain.pad[core_no] =
22684                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22685                                              >> 19) & 0x1f;
22686                                         target_gain.pga[core_no] =
22687                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22688                                              >> 24) & 0xf;
22689                                         target_gain.txgm[core_no] =
22690                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22691                                              >> 28) & 0x7;
22692                                         target_gain.txlpf[core_no] =
22693                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22694                                              >> 31) & 0x1;
22695                                 } else {
22696                                         target_gain.ipa[core_no] =
22697                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22698                                              >> 16) & 0xf;
22699                                         target_gain.pad[core_no] =
22700                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22701                                              >> 20) & 0xf;
22702                                         target_gain.pga[core_no] =
22703                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22704                                              >> 24) & 0xf;
22705                                         target_gain.txgm[core_no] =
22706                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22707                                              >> 28) & 0x7;
22708                                 }
22709                         } else {
22710                                 target_gain.ipa[core_no] =
22711                                     (nphy_tpc_txgain[base_idx[core_no]] >> 16) &
22712                                     0x3;
22713                                 target_gain.pad[core_no] =
22714                                     (nphy_tpc_txgain[base_idx[core_no]] >> 18) &
22715                                     0x3;
22716                                 target_gain.pga[core_no] =
22717                                     (nphy_tpc_txgain[base_idx[core_no]] >> 20) &
22718                                     0x7;
22719                                 target_gain.txgm[core_no] =
22720                                     (nphy_tpc_txgain[base_idx[core_no]] >> 23) &
22721                                     0x7;
22722                         }
22723                 }
22724         }
22725
22726         return target_gain;
22727 }
22728
22729 static void
22730 wlc_phy_iqcal_gainparams_nphy(phy_info_t *pi, u16 core_no,
22731                               nphy_txgains_t target_gain,
22732                               nphy_iqcal_params_t *params)
22733 {
22734         u8 k;
22735         int idx;
22736         u16 gain_index;
22737         u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
22738
22739         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22740                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22741                         params->txlpf = target_gain.txlpf[core_no];
22742                 }
22743                 params->txgm = target_gain.txgm[core_no];
22744                 params->pga = target_gain.pga[core_no];
22745                 params->pad = target_gain.pad[core_no];
22746                 params->ipa = target_gain.ipa[core_no];
22747                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22748                         params->cal_gain =
22749                             ((params->txlpf << 15) | (params->
22750                                                       txgm << 12) | (params->
22751                                                                      pga << 8) |
22752                              (params->pad << 3) | (params->ipa));
22753                 } else {
22754                         params->cal_gain =
22755                             ((params->txgm << 12) | (params->
22756                                                      pga << 8) | (params->
22757                                                                   pad << 4) |
22758                              (params->ipa));
22759                 }
22760                 params->ncorr[0] = 0x79;
22761                 params->ncorr[1] = 0x79;
22762                 params->ncorr[2] = 0x79;
22763                 params->ncorr[3] = 0x79;
22764                 params->ncorr[4] = 0x79;
22765         } else {
22766
22767                 gain_index = ((target_gain.pad[core_no] << 0) |
22768                               (target_gain.pga[core_no] << 4) | (target_gain.
22769                                                                  txgm[core_no]
22770                                                                  << 8));
22771
22772                 idx = -1;
22773                 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
22774                         if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
22775                             gain_index) {
22776                                 idx = k;
22777                                 break;
22778                         }
22779                 }
22780
22781                 ASSERT(idx != -1);
22782
22783                 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
22784                 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
22785                 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
22786                 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
22787                                     (params->pad << 2));
22788                 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
22789                 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
22790                 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
22791                 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
22792         }
22793 }
22794
22795 static void wlc_phy_txcal_radio_setup_nphy(phy_info_t *pi)
22796 {
22797         u16 jtag_core, core;
22798
22799         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22800
22801                 for (core = 0; core <= 1; core++) {
22802
22803                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
22804                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22805                                             TX_SSI_MASTER);
22806
22807                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
22808                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22809                                             IQCAL_VCM_HG);
22810
22811                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
22812                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22813                                             IQCAL_IDAC);
22814
22815                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
22816                             READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM);
22817
22818                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
22819
22820                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
22821                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22822                                             TX_SSI_MUX);
22823
22824                         if (pi->pubpi.radiorev != 5)
22825                                 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
22826                                     READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22827                                                     TSSIA);
22828
22829                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
22830                             READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
22831
22832                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
22833                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22834                                             TSSI_MISC1);
22835
22836                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22837                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22838                                                  TX_SSI_MASTER, 0x0a);
22839                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22840                                                  IQCAL_VCM_HG, 0x43);
22841                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22842                                                  IQCAL_IDAC, 0x55);
22843                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22844                                                  TSSI_VCM, 0x00);
22845                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22846                                                  TSSIG, 0x00);
22847                                 if (pi->use_int_tx_iqlo_cal_nphy) {
22848                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22849                                                          core, TX_SSI_MUX, 0x4);
22850                                         if (!
22851                                             (pi->
22852                                              internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
22853
22854                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22855                                                                  TX, core,
22856                                                                  TSSIA, 0x31);
22857                                         } else {
22858
22859                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22860                                                                  TX, core,
22861                                                                  TSSIA, 0x21);
22862                                         }
22863                                 }
22864                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22865                                                  TSSI_MISC1, 0x00);
22866                         } else {
22867                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22868                                                  TX_SSI_MASTER, 0x06);
22869                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22870                                                  IQCAL_VCM_HG, 0x43);
22871                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22872                                                  IQCAL_IDAC, 0x55);
22873                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22874                                                  TSSI_VCM, 0x00);
22875
22876                                 if (pi->pubpi.radiorev != 5)
22877                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22878                                                          core, TSSIA, 0x00);
22879                                 if (pi->use_int_tx_iqlo_cal_nphy) {
22880                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22881                                                          core, TX_SSI_MUX,
22882                                                          0x06);
22883                                         if (!
22884                                             (pi->
22885                                              internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
22886
22887                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22888                                                                  TX, core,
22889                                                                  TSSIG, 0x31);
22890                                         } else {
22891
22892                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22893                                                                  TX, core,
22894                                                                  TSSIG, 0x21);
22895                                         }
22896                                 }
22897                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22898                                                  TSSI_MISC1, 0x00);
22899                         }
22900                 }
22901         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22902
22903                 for (core = 0; core <= 1; core++) {
22904                         jtag_core =
22905                             (core ==
22906                              PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
22907
22908                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
22909                             read_radio_reg(pi,
22910                                            RADIO_2056_TX_TX_SSI_MASTER |
22911                                            jtag_core);
22912
22913                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
22914                             read_radio_reg(pi,
22915                                            RADIO_2056_TX_IQCAL_VCM_HG |
22916                                            jtag_core);
22917
22918                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
22919                             read_radio_reg(pi,
22920                                            RADIO_2056_TX_IQCAL_IDAC |
22921                                            jtag_core);
22922
22923                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
22924                             read_radio_reg(pi,
22925                                            RADIO_2056_TX_TSSI_VCM | jtag_core);
22926
22927                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
22928                             read_radio_reg(pi,
22929                                            RADIO_2056_TX_TX_AMP_DET |
22930                                            jtag_core);
22931
22932                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
22933                             read_radio_reg(pi,
22934                                            RADIO_2056_TX_TX_SSI_MUX |
22935                                            jtag_core);
22936
22937                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
22938                             read_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core);
22939
22940                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
22941                             read_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core);
22942
22943                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
22944                             read_radio_reg(pi,
22945                                            RADIO_2056_TX_TSSI_MISC1 |
22946                                            jtag_core);
22947
22948                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
22949                             read_radio_reg(pi,
22950                                            RADIO_2056_TX_TSSI_MISC2 |
22951                                            jtag_core);
22952
22953                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
22954                             read_radio_reg(pi,
22955                                            RADIO_2056_TX_TSSI_MISC3 |
22956                                            jtag_core);
22957
22958                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22959                                 write_radio_reg(pi,
22960                                                 RADIO_2056_TX_TX_SSI_MASTER |
22961                                                 jtag_core, 0x0a);
22962                                 write_radio_reg(pi,
22963                                                 RADIO_2056_TX_IQCAL_VCM_HG |
22964                                                 jtag_core, 0x40);
22965                                 write_radio_reg(pi,
22966                                                 RADIO_2056_TX_IQCAL_IDAC |
22967                                                 jtag_core, 0x55);
22968                                 write_radio_reg(pi,
22969                                                 RADIO_2056_TX_TSSI_VCM |
22970                                                 jtag_core, 0x00);
22971                                 write_radio_reg(pi,
22972                                                 RADIO_2056_TX_TX_AMP_DET |
22973                                                 jtag_core, 0x00);
22974
22975                                 if (PHY_IPA(pi)) {
22976                                         write_radio_reg(pi,
22977                                                         RADIO_2056_TX_TX_SSI_MUX
22978                                                         | jtag_core, 0x4);
22979                                         write_radio_reg(pi,
22980                                                         RADIO_2056_TX_TSSIA |
22981                                                         jtag_core, 0x1);
22982                                 } else {
22983                                         write_radio_reg(pi,
22984                                                         RADIO_2056_TX_TX_SSI_MUX
22985                                                         | jtag_core, 0x00);
22986                                         write_radio_reg(pi,
22987                                                         RADIO_2056_TX_TSSIA |
22988                                                         jtag_core, 0x2f);
22989                                 }
22990                                 write_radio_reg(pi,
22991                                                 RADIO_2056_TX_TSSIG | jtag_core,
22992                                                 0x00);
22993                                 write_radio_reg(pi,
22994                                                 RADIO_2056_TX_TSSI_MISC1 |
22995                                                 jtag_core, 0x00);
22996
22997                                 write_radio_reg(pi,
22998                                                 RADIO_2056_TX_TSSI_MISC2 |
22999                                                 jtag_core, 0x00);
23000                                 write_radio_reg(pi,
23001                                                 RADIO_2056_TX_TSSI_MISC3 |
23002                                                 jtag_core, 0x00);
23003                         } else {
23004                                 write_radio_reg(pi,
23005                                                 RADIO_2056_TX_TX_SSI_MASTER |
23006                                                 jtag_core, 0x06);
23007                                 write_radio_reg(pi,
23008                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23009                                                 jtag_core, 0x40);
23010                                 write_radio_reg(pi,
23011                                                 RADIO_2056_TX_IQCAL_IDAC |
23012                                                 jtag_core, 0x55);
23013                                 write_radio_reg(pi,
23014                                                 RADIO_2056_TX_TSSI_VCM |
23015                                                 jtag_core, 0x00);
23016                                 write_radio_reg(pi,
23017                                                 RADIO_2056_TX_TX_AMP_DET |
23018                                                 jtag_core, 0x00);
23019                                 write_radio_reg(pi,
23020                                                 RADIO_2056_TX_TSSIA | jtag_core,
23021                                                 0x00);
23022
23023                                 if (PHY_IPA(pi)) {
23024
23025                                         write_radio_reg(pi,
23026                                                         RADIO_2056_TX_TX_SSI_MUX
23027                                                         | jtag_core, 0x06);
23028                                         if (NREV_LT(pi->pubpi.phy_rev, 5)) {
23029
23030                                                 write_radio_reg(pi,
23031                                                                 RADIO_2056_TX_TSSIG
23032                                                                 | jtag_core,
23033                                                                 0x11);
23034                                         } else {
23035
23036                                                 write_radio_reg(pi,
23037                                                                 RADIO_2056_TX_TSSIG
23038                                                                 | jtag_core,
23039                                                                 0x1);
23040                                         }
23041                                 } else {
23042                                         write_radio_reg(pi,
23043                                                         RADIO_2056_TX_TX_SSI_MUX
23044                                                         | jtag_core, 0x00);
23045                                         write_radio_reg(pi,
23046                                                         RADIO_2056_TX_TSSIG |
23047                                                         jtag_core, 0x20);
23048                                 }
23049
23050                                 write_radio_reg(pi,
23051                                                 RADIO_2056_TX_TSSI_MISC1 |
23052                                                 jtag_core, 0x00);
23053                                 write_radio_reg(pi,
23054                                                 RADIO_2056_TX_TSSI_MISC2 |
23055                                                 jtag_core, 0x00);
23056                                 write_radio_reg(pi,
23057                                                 RADIO_2056_TX_TSSI_MISC3 |
23058                                                 jtag_core, 0x00);
23059                         }
23060                 }
23061         } else {
23062
23063                 pi->tx_rx_cal_radio_saveregs[0] =
23064                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23065                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23066                 pi->tx_rx_cal_radio_saveregs[1] =
23067                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23068                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23069
23070                 pi->tx_rx_cal_radio_saveregs[2] =
23071                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23072                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23073                 pi->tx_rx_cal_radio_saveregs[3] =
23074                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23075                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23076
23077                 pi->tx_rx_cal_radio_saveregs[4] =
23078                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23079                 pi->tx_rx_cal_radio_saveregs[5] =
23080                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23081
23082                 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23083                     0) {
23084
23085                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23086                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23087                 } else {
23088
23089                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23090                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23091                 }
23092
23093                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23094
23095                         or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23096                         or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23097                 } else {
23098
23099                         and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23100                         and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23101                 }
23102         }
23103 }
23104
23105 static void wlc_phy_txcal_radio_cleanup_nphy(phy_info_t *pi)
23106 {
23107         u16 jtag_core, core;
23108
23109         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23110                 for (core = 0; core <= 1; core++) {
23111
23112                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23113                                          TX_SSI_MASTER,
23114                                          pi->
23115                                          tx_rx_cal_radio_saveregs[(core * 11) +
23116                                                                   0]);
23117
23118                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23119                                          pi->
23120                                          tx_rx_cal_radio_saveregs[(core * 11) +
23121                                                                   1]);
23122
23123                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23124                                          pi->
23125                                          tx_rx_cal_radio_saveregs[(core * 11) +
23126                                                                   2]);
23127
23128                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23129                                          pi->
23130                                          tx_rx_cal_radio_saveregs[(core * 11) +
23131                                                                   3]);
23132
23133                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23134                                          pi->
23135                                          tx_rx_cal_radio_saveregs[(core * 11) +
23136                                                                   5]);
23137
23138                         if (pi->pubpi.radiorev != 5)
23139                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23140                                                  TSSIA,
23141                                                  pi->
23142                                                  tx_rx_cal_radio_saveregs[(core
23143                                                                            *
23144                                                                            11) +
23145                                                                           6]);
23146
23147                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23148                                          pi->
23149                                          tx_rx_cal_radio_saveregs[(core * 11) +
23150                                                                   7]);
23151
23152                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23153                                          pi->
23154                                          tx_rx_cal_radio_saveregs[(core * 11) +
23155                                                                   8]);
23156                 }
23157         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23158                 for (core = 0; core <= 1; core++) {
23159                         jtag_core =
23160                             (core ==
23161                              PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23162
23163                         write_radio_reg(pi,
23164                                         RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23165                                         pi->
23166                                         tx_rx_cal_radio_saveregs[(core * 11) +
23167                                                                  0]);
23168
23169                         write_radio_reg(pi,
23170                                         RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23171                                         pi->
23172                                         tx_rx_cal_radio_saveregs[(core * 11) +
23173                                                                  1]);
23174
23175                         write_radio_reg(pi,
23176                                         RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23177                                         pi->
23178                                         tx_rx_cal_radio_saveregs[(core * 11) +
23179                                                                  2]);
23180
23181                         write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23182                                         pi->
23183                                         tx_rx_cal_radio_saveregs[(core * 11) +
23184                                                                  3]);
23185
23186                         write_radio_reg(pi,
23187                                         RADIO_2056_TX_TX_AMP_DET | jtag_core,
23188                                         pi->
23189                                         tx_rx_cal_radio_saveregs[(core * 11) +
23190                                                                  4]);
23191
23192                         write_radio_reg(pi,
23193                                         RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23194                                         pi->
23195                                         tx_rx_cal_radio_saveregs[(core * 11) +
23196                                                                  5]);
23197
23198                         write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23199                                         pi->
23200                                         tx_rx_cal_radio_saveregs[(core * 11) +
23201                                                                  6]);
23202
23203                         write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23204                                         pi->
23205                                         tx_rx_cal_radio_saveregs[(core * 11) +
23206                                                                  7]);
23207
23208                         write_radio_reg(pi,
23209                                         RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23210                                         pi->
23211                                         tx_rx_cal_radio_saveregs[(core * 11) +
23212                                                                  8]);
23213
23214                         write_radio_reg(pi,
23215                                         RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23216                                         pi->
23217                                         tx_rx_cal_radio_saveregs[(core * 11) +
23218                                                                  9]);
23219
23220                         write_radio_reg(pi,
23221                                         RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23222                                         pi->
23223                                         tx_rx_cal_radio_saveregs[(core * 11) +
23224                                                                  10]);
23225                 }
23226         } else {
23227
23228                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23229                                 pi->tx_rx_cal_radio_saveregs[0]);
23230                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23231                                 pi->tx_rx_cal_radio_saveregs[1]);
23232                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23233                                 pi->tx_rx_cal_radio_saveregs[2]);
23234                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23235                                 pi->tx_rx_cal_radio_saveregs[3]);
23236                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23237                                 pi->tx_rx_cal_radio_saveregs[4]);
23238                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23239                                 pi->tx_rx_cal_radio_saveregs[5]);
23240         }
23241 }
23242
23243 static void wlc_phy_txcal_physetup_nphy(phy_info_t *pi)
23244 {
23245         u16 val, mask;
23246
23247         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23248                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23249                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23250
23251                 mask = ((0x3 << 8) | (0x3 << 10));
23252                 val = (0x2 << 8);
23253                 val |= (0x2 << 10);
23254                 mod_phy_reg(pi, 0xa6, mask, val);
23255                 mod_phy_reg(pi, 0xa7, mask, val);
23256
23257                 val = read_phy_reg(pi, 0x8f);
23258                 pi->tx_rx_cal_phy_saveregs[2] = val;
23259                 val |= ((0x1 << 9) | (0x1 << 10));
23260                 write_phy_reg(pi, 0x8f, val);
23261
23262                 val = read_phy_reg(pi, 0xa5);
23263                 pi->tx_rx_cal_phy_saveregs[3] = val;
23264                 val |= ((0x1 << 9) | (0x1 << 10));
23265                 write_phy_reg(pi, 0xa5, val);
23266
23267                 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
23268                 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23269
23270                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23271                                         &val);
23272                 pi->tx_rx_cal_phy_saveregs[5] = val;
23273                 val = 0;
23274                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23275                                          &val);
23276
23277                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23278                                         &val);
23279                 pi->tx_rx_cal_phy_saveregs[6] = val;
23280                 val = 0;
23281                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23282                                          &val);
23283
23284                 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
23285                 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
23286
23287                 if (!(pi->use_int_tx_iqlo_cal_nphy)) {
23288
23289                         wlc_phy_rfctrlintc_override_nphy(pi,
23290                                                          NPHY_RfctrlIntc_override_PA,
23291                                                          1,
23292                                                          RADIO_MIMO_CORESEL_CORE1
23293                                                          |
23294                                                          RADIO_MIMO_CORESEL_CORE2);
23295                 } else {
23296
23297                         wlc_phy_rfctrlintc_override_nphy(pi,
23298                                                          NPHY_RfctrlIntc_override_PA,
23299                                                          0,
23300                                                          RADIO_MIMO_CORESEL_CORE1
23301                                                          |
23302                                                          RADIO_MIMO_CORESEL_CORE2);
23303                 }
23304
23305                 wlc_phy_rfctrlintc_override_nphy(pi,
23306                                                  NPHY_RfctrlIntc_override_TRSW,
23307                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
23308                 wlc_phy_rfctrlintc_override_nphy(pi,
23309                                                  NPHY_RfctrlIntc_override_TRSW,
23310                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
23311
23312                 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
23313                 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
23314                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
23315                             0x29b, (0x1 << 0), (0) << 0);
23316
23317                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
23318                             0x29b, (0x1 << 0), (0) << 0);
23319
23320                 if (NREV_IS(pi->pubpi.phy_rev, 7)
23321                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
23322                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
23323                                                           wlc_phy_read_lpf_bw_ctl_nphy
23324                                                           (pi, 0), 0, 0,
23325                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
23326                 }
23327
23328                 if (pi->use_int_tx_iqlo_cal_nphy
23329                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23330
23331                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23332
23333                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23334                                               1 << 4);
23335
23336                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23337                                         mod_radio_reg(pi,
23338                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23339                                                       1, 0);
23340                                         mod_radio_reg(pi,
23341                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23342                                                       1, 0);
23343                                 } else {
23344                                         mod_radio_reg(pi,
23345                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23346                                                       1, 0);
23347                                         mod_radio_reg(pi,
23348                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23349                                                       1, 0);
23350                                 }
23351                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
23352                                 wlc_phy_rfctrl_override_nphy_rev7(pi,
23353                                                                   (0x1 << 3), 0,
23354                                                                   0x3, 0,
23355                                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
23356                         }
23357                 }
23358         } else {
23359                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23360                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23361
23362                 mask = ((0x3 << 12) | (0x3 << 14));
23363                 val = (0x2 << 12);
23364                 val |= (0x2 << 14);
23365                 mod_phy_reg(pi, 0xa6, mask, val);
23366                 mod_phy_reg(pi, 0xa7, mask, val);
23367
23368                 val = read_phy_reg(pi, 0xa5);
23369                 pi->tx_rx_cal_phy_saveregs[2] = val;
23370                 val |= ((0x1 << 12) | (0x1 << 13));
23371                 write_phy_reg(pi, 0xa5, val);
23372
23373                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23374                                         &val);
23375                 pi->tx_rx_cal_phy_saveregs[3] = val;
23376                 val |= 0x2000;
23377                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23378                                          &val);
23379
23380                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23381                                         &val);
23382                 pi->tx_rx_cal_phy_saveregs[4] = val;
23383                 val |= 0x2000;
23384                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23385                                          &val);
23386
23387                 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
23388                 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
23389                 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
23390                 write_phy_reg(pi, 0x91, val);
23391                 write_phy_reg(pi, 0x92, val);
23392         }
23393 }
23394
23395 static void wlc_phy_txcal_phycleanup_nphy(phy_info_t *pi)
23396 {
23397         u16 mask;
23398
23399         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23400                 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
23401                 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
23402                 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
23403                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
23404                 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
23405
23406                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23407                                          &pi->tx_rx_cal_phy_saveregs[5]);
23408                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23409                                          &pi->tx_rx_cal_phy_saveregs[6]);
23410
23411                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
23412                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
23413
23414                 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
23415                 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
23416
23417                 if (NREV_IS(pi->pubpi.phy_rev, 7)
23418                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
23419                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7), 0, 0,
23420                                                           1,
23421                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
23422                 }
23423
23424                 wlc_phy_resetcca_nphy(pi);
23425
23426                 if (pi->use_int_tx_iqlo_cal_nphy
23427                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23428
23429                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23430                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23431                                         mod_radio_reg(pi,
23432                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23433                                                       1, 1);
23434                                         mod_radio_reg(pi,
23435                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23436                                                       1, 1);
23437                                 } else {
23438                                         mod_radio_reg(pi,
23439                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23440                                                       1, 1);
23441                                         mod_radio_reg(pi,
23442                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23443                                                       1, 1);
23444                                 }
23445
23446                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23447                                               0);
23448                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
23449                                 wlc_phy_rfctrl_override_nphy_rev7(pi,
23450                                                                   (0x1 << 3), 0,
23451                                                                   0x3, 1,
23452                                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
23453                         }
23454                 }
23455         } else {
23456                 mask = ((0x3 << 12) | (0x3 << 14));
23457                 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
23458                 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
23459                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
23460
23461                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23462                                          &pi->tx_rx_cal_phy_saveregs[3]);
23463
23464                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23465                                          &pi->tx_rx_cal_phy_saveregs[4]);
23466
23467                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
23468                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
23469         }
23470 }
23471
23472 #define NPHY_CAL_TSSISAMPS      64
23473 #define NPHY_TEST_TONE_FREQ_40MHz 4000
23474 #define NPHY_TEST_TONE_FREQ_20MHz 2500
23475
23476 void
23477 wlc_phy_est_tonepwr_nphy(phy_info_t *pi, s32 *qdBm_pwrbuf, u8 num_samps)
23478 {
23479         u16 tssi_reg;
23480         s32 temp, pwrindex[2];
23481         s32 idle_tssi[2];
23482         s32 rssi_buf[4];
23483         s32 tssival[2];
23484         u8 tssi_type;
23485
23486         tssi_reg = read_phy_reg(pi, 0x1e9);
23487
23488         temp = (s32) (tssi_reg & 0x3f);
23489         idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
23490
23491         temp = (s32) ((tssi_reg >> 8) & 0x3f);
23492         idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
23493
23494         tssi_type =
23495             CHSPEC_IS5G(pi->radio_chanspec) ?
23496             (u8)NPHY_RSSI_SEL_TSSI_5G:(u8)NPHY_RSSI_SEL_TSSI_2G;
23497
23498         wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
23499
23500         tssival[0] = rssi_buf[0] / ((s32) num_samps);
23501         tssival[1] = rssi_buf[2] / ((s32) num_samps);
23502
23503         pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
23504         pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
23505
23506         if (pwrindex[0] < 0) {
23507                 pwrindex[0] = 0;
23508         } else if (pwrindex[0] > 63) {
23509                 pwrindex[0] = 63;
23510         }
23511
23512         if (pwrindex[1] < 0) {
23513                 pwrindex[1] = 0;
23514         } else if (pwrindex[1] > 63) {
23515                 pwrindex[1] = 63;
23516         }
23517
23518         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
23519                                 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
23520         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
23521                                 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
23522 }
23523
23524 static void wlc_phy_internal_cal_txgain_nphy(phy_info_t *pi)
23525 {
23526         u16 txcal_gain[2];
23527
23528         pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
23529         pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
23530         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
23531         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
23532
23533         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23534                                 txcal_gain);
23535
23536         if (CHSPEC_IS2G(pi->radio_chanspec)) {
23537                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
23538                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
23539         } else {
23540                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
23541                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
23542         }
23543
23544         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23545                                  txcal_gain);
23546 }
23547
23548 static void wlc_phy_precal_txgain_nphy(phy_info_t *pi)
23549 {
23550         bool save_bbmult = false;
23551         u8 txcal_index_2057_rev5n7 = 0;
23552         u8 txcal_index_2057_rev3n4n6 = 10;
23553
23554         if (pi->use_int_tx_iqlo_cal_nphy) {
23555                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23556                         if ((pi->pubpi.radiorev == 3) ||
23557                             (pi->pubpi.radiorev == 4) ||
23558                             (pi->pubpi.radiorev == 6)) {
23559
23560                                 pi->nphy_txcal_pwr_idx[0] =
23561                                     txcal_index_2057_rev3n4n6;
23562                                 pi->nphy_txcal_pwr_idx[1] =
23563                                     txcal_index_2057_rev3n4n6;
23564                                 wlc_phy_txpwr_index_nphy(pi, 3,
23565                                                          txcal_index_2057_rev3n4n6,
23566                                                          false);
23567                         } else {
23568
23569                                 pi->nphy_txcal_pwr_idx[0] =
23570                                     txcal_index_2057_rev5n7;
23571                                 pi->nphy_txcal_pwr_idx[1] =
23572                                     txcal_index_2057_rev5n7;
23573                                 wlc_phy_txpwr_index_nphy(pi, 3,
23574                                                          txcal_index_2057_rev5n7,
23575                                                          false);
23576                         }
23577                         save_bbmult = true;
23578
23579                 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
23580                         wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
23581                         if (pi->sh->hw_phytxchain != 3) {
23582                                 pi->nphy_txcal_pwr_idx[1] =
23583                                     pi->nphy_txcal_pwr_idx[0];
23584                                 wlc_phy_txpwr_index_nphy(pi, 3,
23585                                                          pi->
23586                                                          nphy_txcal_pwr_idx[0],
23587                                                          true);
23588                                 save_bbmult = true;
23589                         }
23590
23591                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
23592                         if (PHY_IPA(pi)) {
23593                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23594                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
23595                                                                     false);
23596                                 } else {
23597                                         pi->nphy_txcal_pwr_idx[0] = 80;
23598                                         pi->nphy_txcal_pwr_idx[1] = 80;
23599                                         wlc_phy_txpwr_index_nphy(pi, 3, 80,
23600                                                                  false);
23601                                         save_bbmult = true;
23602                                 }
23603                         } else {
23604
23605                                 wlc_phy_internal_cal_txgain_nphy(pi);
23606                                 save_bbmult = true;
23607                         }
23608
23609                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
23610                         if (PHY_IPA(pi)) {
23611                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23612                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
23613                                                                     false);
23614                                 } else {
23615                                         wlc_phy_cal_txgainctrl_nphy(pi, 14,
23616                                                                     false);
23617                                 }
23618                         } else {
23619
23620                                 wlc_phy_internal_cal_txgain_nphy(pi);
23621                                 save_bbmult = true;
23622                         }
23623                 }
23624
23625         } else {
23626                 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
23627         }
23628
23629         if (save_bbmult) {
23630                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
23631                                         &pi->nphy_txcal_bbmult);
23632         }
23633 }
23634
23635 void
23636 wlc_phy_cal_txgainctrl_nphy(phy_info_t *pi, s32 dBm_targetpower, bool debug)
23637 {
23638         int gainctrl_loopidx;
23639         uint core;
23640         u16 m0m1, curr_m0m1;
23641         s32 delta_power;
23642         s32 txpwrindex;
23643         s32 qdBm_power[2];
23644         u16 orig_BBConfig;
23645         u16 phy_saveregs[4];
23646         u32 freq_test;
23647         u16 ampl_test = 250;
23648         uint stepsize;
23649         bool phyhang_avoid_state = false;
23650
23651         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23652
23653                 stepsize = 2;
23654         } else {
23655
23656                 stepsize = 1;
23657         }
23658
23659         if (CHSPEC_IS40(pi->radio_chanspec)) {
23660                 freq_test = 5000;
23661         } else {
23662                 freq_test = 2500;
23663         }
23664
23665         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
23666         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
23667
23668         if (pi->phyhang_avoid)
23669                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23670
23671         phyhang_avoid_state = pi->phyhang_avoid;
23672         pi->phyhang_avoid = false;
23673
23674         phy_saveregs[0] = read_phy_reg(pi, 0x91);
23675         phy_saveregs[1] = read_phy_reg(pi, 0x92);
23676         phy_saveregs[2] = read_phy_reg(pi, 0xe7);
23677         phy_saveregs[3] = read_phy_reg(pi, 0xec);
23678         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
23679                                          RADIO_MIMO_CORESEL_CORE1 |
23680                                          RADIO_MIMO_CORESEL_CORE2);
23681
23682         if (!debug) {
23683                 wlc_phy_rfctrlintc_override_nphy(pi,
23684                                                  NPHY_RfctrlIntc_override_TRSW,
23685                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
23686                 wlc_phy_rfctrlintc_override_nphy(pi,
23687                                                  NPHY_RfctrlIntc_override_TRSW,
23688                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
23689         } else {
23690                 wlc_phy_rfctrlintc_override_nphy(pi,
23691                                                  NPHY_RfctrlIntc_override_TRSW,
23692                                                  0x1, RADIO_MIMO_CORESEL_CORE1);
23693                 wlc_phy_rfctrlintc_override_nphy(pi,
23694                                                  NPHY_RfctrlIntc_override_TRSW,
23695                                                  0x7, RADIO_MIMO_CORESEL_CORE2);
23696         }
23697
23698         orig_BBConfig = read_phy_reg(pi, 0x01);
23699         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23700
23701         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
23702
23703         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
23704                 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
23705
23706                 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
23707                      gainctrl_loopidx++) {
23708                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
23709                                              false);
23710
23711                         if (core == PHY_CORE_0) {
23712                                 curr_m0m1 = m0m1 & 0xff00;
23713                         } else {
23714                                 curr_m0m1 = m0m1 & 0x00ff;
23715                         }
23716
23717                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
23718                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
23719
23720                         udelay(50);
23721
23722                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
23723                                                  NPHY_CAL_TSSISAMPS);
23724
23725                         pi->nphy_bb_mult_save = 0;
23726                         wlc_phy_stopplayback_nphy(pi);
23727
23728                         delta_power = (dBm_targetpower * 4) - qdBm_power[core];
23729
23730                         txpwrindex -= stepsize * delta_power;
23731                         if (txpwrindex < 0) {
23732                                 txpwrindex = 0;
23733                         } else if (txpwrindex > 127) {
23734                                 txpwrindex = 127;
23735                         }
23736
23737                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23738                                 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
23739                                     (pi->srom_fem5g.extpagain == 3)) {
23740                                         if (txpwrindex < 30) {
23741                                                 txpwrindex = 30;
23742                                         }
23743                                 }
23744                         } else {
23745                                 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
23746                                     (pi->srom_fem2g.extpagain == 3)) {
23747                                         if (txpwrindex < 50) {
23748                                                 txpwrindex = 50;
23749                                         }
23750                                 }
23751                         }
23752
23753                         wlc_phy_txpwr_index_nphy(pi, (1 << core),
23754                                                  (u8) txpwrindex, true);
23755                 }
23756
23757                 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
23758
23759                 if (debug) {
23760                         u16 radio_gain;
23761                         u16 dbg_m0m1;
23762
23763                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
23764
23765                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
23766                                              false);
23767
23768                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
23769                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
23770
23771                         udelay(100);
23772
23773                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
23774                                                  NPHY_CAL_TSSISAMPS);
23775
23776                         wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
23777                                                 &radio_gain);
23778
23779                         mdelay(4000);
23780                         pi->nphy_bb_mult_save = 0;
23781                         wlc_phy_stopplayback_nphy(pi);
23782                 }
23783         }
23784
23785         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
23786         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
23787
23788         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
23789
23790         write_phy_reg(pi, 0x01, orig_BBConfig);
23791
23792         write_phy_reg(pi, 0x91, phy_saveregs[0]);
23793         write_phy_reg(pi, 0x92, phy_saveregs[1]);
23794         write_phy_reg(pi, 0xe7, phy_saveregs[2]);
23795         write_phy_reg(pi, 0xec, phy_saveregs[3]);
23796
23797         pi->phyhang_avoid = phyhang_avoid_state;
23798
23799         if (pi->phyhang_avoid)
23800                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23801 }
23802
23803 static void wlc_phy_update_txcal_ladder_nphy(phy_info_t *pi, u16 core)
23804 {
23805         int index;
23806         u32 bbmult_scale;
23807         u16 bbmult;
23808         u16 tblentry;
23809
23810         nphy_txiqcal_ladder_t ladder_lo[] = {
23811                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
23812                 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
23813                 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
23814         };
23815
23816         nphy_txiqcal_ladder_t ladder_iq[] = {
23817                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
23818                 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
23819                 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
23820         };
23821
23822         bbmult = (core == PHY_CORE_0) ?
23823             ((pi->nphy_txcal_bbmult >> 8) & 0xff) : (pi->
23824                                                      nphy_txcal_bbmult & 0xff);
23825
23826         for (index = 0; index < 18; index++) {
23827                 bbmult_scale = ladder_lo[index].percent * bbmult;
23828                 bbmult_scale /= 100;
23829
23830                 tblentry =
23831                     ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
23832                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
23833                                          &tblentry);
23834
23835                 bbmult_scale = ladder_iq[index].percent * bbmult;
23836                 bbmult_scale /= 100;
23837
23838                 tblentry =
23839                     ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
23840                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
23841                                          16, &tblentry);
23842         }
23843 }
23844
23845 void wlc_phy_cal_perical_nphy_run(phy_info_t *pi, u8 caltype)
23846 {
23847         nphy_txgains_t target_gain;
23848         u8 tx_pwr_ctrl_state;
23849         bool fullcal = true;
23850         bool restore_tx_gain = false;
23851         bool mphase;
23852
23853         if (NORADIO_ENAB(pi->pubpi)) {
23854                 wlc_phy_cal_perical_mphase_reset(pi);
23855                 return;
23856         }
23857
23858         if (PHY_MUTED(pi))
23859                 return;
23860
23861         ASSERT(pi->nphy_perical != PHY_PERICAL_DISABLE);
23862
23863         if (caltype == PHY_PERICAL_AUTO)
23864                 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
23865         else if (caltype == PHY_PERICAL_PARTIAL)
23866                 fullcal = false;
23867
23868         if (pi->cal_type_override != PHY_PERICAL_AUTO) {
23869                 fullcal =
23870                     (pi->cal_type_override == PHY_PERICAL_FULL) ? true : false;
23871         }
23872
23873         if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
23874                 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
23875                         wlc_phy_cal_perical_mphase_restart(pi);
23876         }
23877
23878         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL)) {
23879                 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
23880         }
23881
23882         wlapi_suspend_mac_and_wait(pi->sh->physhim);
23883
23884         wlc_phyreg_enter((wlc_phy_t *) pi);
23885
23886         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
23887             (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
23888                 pi->nphy_cal_orig_pwr_idx[0] =
23889                     (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
23890                 pi->nphy_cal_orig_pwr_idx[1] =
23891                     (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
23892
23893                 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
23894                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
23895                                                 0x110, 16,
23896                                                 pi->nphy_cal_orig_tx_gain);
23897                 } else {
23898                         pi->nphy_cal_orig_tx_gain[0] = 0;
23899                         pi->nphy_cal_orig_tx_gain[1] = 0;
23900                 }
23901         }
23902         target_gain = wlc_phy_get_tx_gain_nphy(pi);
23903         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
23904         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
23905
23906         if (pi->antsel_type == ANTSEL_2x3)
23907                 wlc_phy_antsel_init((wlc_phy_t *) pi, true);
23908
23909         mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
23910         if (!mphase) {
23911
23912                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23913                         wlc_phy_precal_txgain_nphy(pi);
23914                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
23915                         restore_tx_gain = true;
23916
23917                         target_gain = pi->nphy_cal_target_gain;
23918                 }
23919                 if (BCME_OK ==
23920                     wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal, mphase)) {
23921                         if (PHY_IPA(pi))
23922                                 wlc_phy_a4(pi, true);
23923
23924                         wlc_phyreg_exit((wlc_phy_t *) pi);
23925                         wlapi_enable_mac(pi->sh->physhim);
23926                         wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
23927                                              10000);
23928                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
23929                         wlc_phyreg_enter((wlc_phy_t *) pi);
23930
23931                         if (BCME_OK == wlc_phy_cal_rxiq_nphy(pi, target_gain,
23932                                                              (pi->
23933                                                               first_cal_after_assoc
23934                                                               || (pi->
23935                                                                   cal_type_override
23936                                                                   ==
23937                                                                   PHY_PERICAL_FULL))
23938                                                              ? 2 : 0, false)) {
23939                                 wlc_phy_savecal_nphy(pi);
23940
23941                                 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
23942
23943                                 pi->nphy_perical_last = pi->sh->now;
23944                         }
23945                 }
23946                 if (caltype != PHY_PERICAL_AUTO) {
23947                         wlc_phy_rssi_cal_nphy(pi);
23948                 }
23949
23950                 if (pi->first_cal_after_assoc
23951                     || (pi->cal_type_override == PHY_PERICAL_FULL)) {
23952                         pi->first_cal_after_assoc = false;
23953                         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
23954                         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
23955                 }
23956
23957                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23958                         wlc_phy_radio205x_vcocal_nphy(pi);
23959                 }
23960         } else {
23961                 ASSERT(pi->nphy_perical >= PHY_PERICAL_MPHASE);
23962
23963                 switch (pi->mphase_cal_phase_id) {
23964                 case MPHASE_CAL_STATE_INIT:
23965                         pi->nphy_perical_last = pi->sh->now;
23966                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
23967
23968                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23969                                 wlc_phy_precal_txgain_nphy(pi);
23970                         }
23971                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
23972                         pi->mphase_cal_phase_id++;
23973                         break;
23974
23975                 case MPHASE_CAL_STATE_TXPHASE0:
23976                 case MPHASE_CAL_STATE_TXPHASE1:
23977                 case MPHASE_CAL_STATE_TXPHASE2:
23978                 case MPHASE_CAL_STATE_TXPHASE3:
23979                 case MPHASE_CAL_STATE_TXPHASE4:
23980                 case MPHASE_CAL_STATE_TXPHASE5:
23981                         if ((pi->radar_percal_mask & 0x10) != 0)
23982                                 pi->nphy_rxcal_active = true;
23983
23984                         if (wlc_phy_cal_txiqlo_nphy
23985                             (pi, pi->nphy_cal_target_gain, fullcal,
23986                              true) != BCME_OK) {
23987
23988                                 wlc_phy_cal_perical_mphase_reset(pi);
23989                                 break;
23990                         }
23991
23992                         if (NREV_LE(pi->pubpi.phy_rev, 2) &&
23993                             (pi->mphase_cal_phase_id ==
23994                              MPHASE_CAL_STATE_TXPHASE4)) {
23995                                 pi->mphase_cal_phase_id += 2;
23996                         } else {
23997                                 pi->mphase_cal_phase_id++;
23998                         }
23999                         break;
24000
24001                 case MPHASE_CAL_STATE_PAPDCAL:
24002                         if ((pi->radar_percal_mask & 0x2) != 0)
24003                                 pi->nphy_rxcal_active = true;
24004
24005                         if (PHY_IPA(pi)) {
24006                                 wlc_phy_a4(pi, true);
24007                         }
24008                         pi->mphase_cal_phase_id++;
24009                         break;
24010
24011                 case MPHASE_CAL_STATE_RXCAL:
24012                         if ((pi->radar_percal_mask & 0x1) != 0)
24013                                 pi->nphy_rxcal_active = true;
24014                         if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
24015                                                   (pi->first_cal_after_assoc ||
24016                                                    (pi->cal_type_override ==
24017                                                     PHY_PERICAL_FULL)) ? 2 : 0,
24018                                                   false) == BCME_OK) {
24019                                 wlc_phy_savecal_nphy(pi);
24020                         }
24021
24022                         pi->mphase_cal_phase_id++;
24023                         break;
24024
24025                 case MPHASE_CAL_STATE_RSSICAL:
24026                         if ((pi->radar_percal_mask & 0x4) != 0)
24027                                 pi->nphy_rxcal_active = true;
24028                         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
24029                         wlc_phy_rssi_cal_nphy(pi);
24030
24031                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24032                                 wlc_phy_radio205x_vcocal_nphy(pi);
24033                         }
24034                         restore_tx_gain = true;
24035
24036                         if (pi->first_cal_after_assoc) {
24037                                 pi->mphase_cal_phase_id++;
24038                         } else {
24039                                 wlc_phy_cal_perical_mphase_reset(pi);
24040                         }
24041
24042                         break;
24043
24044                 case MPHASE_CAL_STATE_IDLETSSI:
24045                         if ((pi->radar_percal_mask & 0x8) != 0)
24046                                 pi->nphy_rxcal_active = true;
24047
24048                         if (pi->first_cal_after_assoc) {
24049                                 pi->first_cal_after_assoc = false;
24050                                 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
24051                                 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
24052                         }
24053
24054                         wlc_phy_cal_perical_mphase_reset(pi);
24055                         break;
24056
24057                 default:
24058                         ASSERT(0);
24059                         wlc_phy_cal_perical_mphase_reset(pi);
24060                         break;
24061                 }
24062         }
24063
24064         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24065                 if (restore_tx_gain) {
24066                         if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
24067
24068                                 wlc_phy_txpwr_index_nphy(pi, 1,
24069                                                          pi->
24070                                                          nphy_cal_orig_pwr_idx
24071                                                          [0], false);
24072                                 wlc_phy_txpwr_index_nphy(pi, 2,
24073                                                          pi->
24074                                                          nphy_cal_orig_pwr_idx
24075                                                          [1], false);
24076
24077                                 pi->nphy_txpwrindex[0].index = -1;
24078                                 pi->nphy_txpwrindex[1].index = -1;
24079                         } else {
24080                                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
24081                                                          (s8) (pi->
24082                                                                  nphy_txpwrindex
24083                                                                  [0].
24084                                                                  index_internal),
24085                                                          false);
24086                                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
24087                                                          (s8) (pi->
24088                                                                  nphy_txpwrindex
24089                                                                  [1].
24090                                                                  index_internal),
24091                                                          false);
24092                         }
24093                 }
24094         }
24095
24096         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
24097         wlc_phyreg_exit((wlc_phy_t *) pi);
24098         wlapi_enable_mac(pi->sh->physhim);
24099 }
24100
24101 int
24102 wlc_phy_cal_txiqlo_nphy(phy_info_t *pi, nphy_txgains_t target_gain,
24103                         bool fullcal, bool mphase)
24104 {
24105         u16 val;
24106         u16 tbl_buf[11];
24107         u8 cal_cnt;
24108         u16 cal_cmd;
24109         u8 num_cals, max_cal_cmds;
24110         u16 core_no, cal_type;
24111         u16 diq_start = 0;
24112         u8 phy_bw;
24113         u16 max_val;
24114         u16 tone_freq;
24115         u16 gain_save[2];
24116         u16 cal_gain[2];
24117         nphy_iqcal_params_t cal_params[2];
24118         u32 tbl_len;
24119         void *tbl_ptr;
24120         bool ladder_updated[2];
24121         u8 mphase_cal_lastphase = 0;
24122         int bcmerror = BCME_OK;
24123         bool phyhang_avoid_state = false;
24124
24125         u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
24126                 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
24127                     0x1902,
24128                 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
24129                     0x6407
24130         };
24131
24132         u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
24133                 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
24134                     0x3200,
24135                 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
24136                     0x6407
24137         };
24138
24139         u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
24140                 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
24141                     0x1202,
24142                 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
24143                     0x4707
24144         };
24145
24146         u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
24147                 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
24148                     0x2300,
24149                 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
24150                     0x4707
24151         };
24152
24153         u16 tbl_tx_iqlo_cal_startcoefs[] = {
24154                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24155                     0x0000
24156         };
24157
24158         u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
24159                 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
24160                 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
24161         };
24162
24163         u16 tbl_tx_iqlo_cal_cmds_recal[] = {
24164                 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
24165                 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
24166         };
24167
24168         u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
24169                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24170                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24171                 0x0000
24172         };
24173
24174         u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
24175                 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
24176                 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
24177         };
24178
24179         u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
24180                 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
24181                 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
24182         };
24183
24184         wlc_phy_stay_in_carriersearch_nphy(pi, true);
24185
24186         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
24187                 phyhang_avoid_state = pi->phyhang_avoid;
24188                 pi->phyhang_avoid = false;
24189         }
24190
24191         if (CHSPEC_IS40(pi->radio_chanspec)) {
24192                 phy_bw = 40;
24193         } else {
24194                 phy_bw = 20;
24195         }
24196
24197         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
24198
24199         for (core_no = 0; core_no <= 1; core_no++) {
24200                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
24201                                               &cal_params[core_no]);
24202                 cal_gain[core_no] = cal_params[core_no].cal_gain;
24203         }
24204
24205         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
24206
24207         wlc_phy_txcal_radio_setup_nphy(pi);
24208
24209         wlc_phy_txcal_physetup_nphy(pi);
24210
24211         ladder_updated[0] = ladder_updated[1] = false;
24212         if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
24213               (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
24214                && (CHSPEC_IS2G(pi->radio_chanspec))))) {
24215
24216                 if (phy_bw == 40) {
24217                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
24218                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
24219                 } else {
24220                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
24221                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
24222                 }
24223                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
24224                                          16, tbl_ptr);
24225
24226                 if (phy_bw == 40) {
24227                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
24228                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
24229                 } else {
24230                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
24231                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
24232                 }
24233                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
24234                                          16, tbl_ptr);
24235         }
24236
24237         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24238                 write_phy_reg(pi, 0xc2, 0x8ad9);
24239         } else {
24240                 write_phy_reg(pi, 0xc2, 0x8aa9);
24241         }
24242
24243         max_val = 250;
24244         tone_freq = (phy_bw == 20) ? 2500 : 5000;
24245
24246         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
24247                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
24248                 bcmerror = BCME_OK;
24249         } else {
24250                 bcmerror =
24251                     wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0, false);
24252         }
24253
24254         if (bcmerror == BCME_OK) {
24255
24256                 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
24257                         tbl_ptr = pi->mphase_txcal_bestcoeffs;
24258                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
24259                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24260
24261                                 tbl_len -= 2;
24262                         }
24263                 } else {
24264                         if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
24265
24266                                 tbl_ptr = pi->nphy_txiqlocal_bestc;
24267                                 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
24268                                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24269
24270                                         tbl_len -= 2;
24271                                 }
24272                         } else {
24273
24274                                 fullcal = true;
24275
24276                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24277                                         tbl_ptr =
24278                                             tbl_tx_iqlo_cal_startcoefs_nphyrev3;
24279                                         tbl_len =
24280                                             ARRAY_SIZE
24281                                             (tbl_tx_iqlo_cal_startcoefs_nphyrev3);
24282                                 } else {
24283                                         tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
24284                                         tbl_len =
24285                                             ARRAY_SIZE
24286                                             (tbl_tx_iqlo_cal_startcoefs);
24287                                 }
24288                         }
24289                 }
24290                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
24291                                          16, tbl_ptr);
24292
24293                 if (fullcal) {
24294                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24295                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
24296                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
24297                 } else {
24298                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24299                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
24300                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
24301                 }
24302
24303                 if (mphase) {
24304                         cal_cnt = pi->mphase_txcal_cmdidx;
24305                         if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds) {
24306                                 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
24307                         } else {
24308                                 num_cals = max_cal_cmds;
24309                         }
24310                 } else {
24311                         cal_cnt = 0;
24312                         num_cals = max_cal_cmds;
24313                 }
24314
24315                 for (; cal_cnt < num_cals; cal_cnt++) {
24316
24317                         if (fullcal) {
24318                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24319                                     tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
24320                                     [cal_cnt] :
24321                                     tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
24322                         } else {
24323                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24324                                     tbl_tx_iqlo_cal_cmds_recal_nphyrev3[cal_cnt]
24325                                     : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
24326                         }
24327
24328                         core_no = ((cal_cmd & 0x3000) >> 12);
24329                         cal_type = ((cal_cmd & 0x0F00) >> 8);
24330
24331                         if (NREV_GE(pi->pubpi.phy_rev, 6) ||
24332                             (NREV_IS(pi->pubpi.phy_rev, 5) &&
24333                              PHY_IPA(pi)
24334                              && (CHSPEC_IS2G(pi->radio_chanspec)))) {
24335                                 if (!ladder_updated[core_no]) {
24336                                         wlc_phy_update_txcal_ladder_nphy(pi,
24337                                                                          core_no);
24338                                         ladder_updated[core_no] = true;
24339                                 }
24340                         }
24341
24342                         val =
24343                             (cal_params[core_no].
24344                              ncorr[cal_type] << 8) | NPHY_N_GCTL;
24345                         write_phy_reg(pi, 0xc1, val);
24346
24347                         if ((cal_type == 1) || (cal_type == 3)
24348                             || (cal_type == 4)) {
24349
24350                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24351                                                         1, 69 + core_no, 16,
24352                                                         tbl_buf);
24353
24354                                 diq_start = tbl_buf[0];
24355
24356                                 tbl_buf[0] = 0;
24357                                 wlc_phy_table_write_nphy(pi,
24358                                                          NPHY_TBL_ID_IQLOCAL, 1,
24359                                                          69 + core_no, 16,
24360                                                          tbl_buf);
24361                         }
24362
24363                         write_phy_reg(pi, 0xc0, cal_cmd);
24364
24365                         SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
24366                                  20000);
24367                         ASSERT((read_phy_reg(pi, 0xc0) & 0xc000) == 0);
24368
24369                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24370                                                 tbl_len, 96, 16, tbl_buf);
24371                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24372                                                  tbl_len, 64, 16, tbl_buf);
24373
24374                         if ((cal_type == 1) || (cal_type == 3)
24375                             || (cal_type == 4)) {
24376
24377                                 tbl_buf[0] = diq_start;
24378
24379                         }
24380
24381                 }
24382
24383                 if (mphase) {
24384                         pi->mphase_txcal_cmdidx = num_cals;
24385                         if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
24386                                 pi->mphase_txcal_cmdidx = 0;
24387                 }
24388
24389                 mphase_cal_lastphase =
24390                     (NREV_LE(pi->pubpi.phy_rev, 2)) ?
24391                     MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
24392
24393                 if (!mphase
24394                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
24395
24396                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
24397                                                 16, tbl_buf);
24398                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
24399                                                  16, tbl_buf);
24400
24401                         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
24402
24403                                 tbl_buf[0] = 0;
24404                                 tbl_buf[1] = 0;
24405                                 tbl_buf[2] = 0;
24406                                 tbl_buf[3] = 0;
24407
24408                         }
24409                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
24410                                                  16, tbl_buf);
24411
24412                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
24413                                                 16, tbl_buf);
24414                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
24415                                                  16, tbl_buf);
24416
24417                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
24418                                                  16, tbl_buf);
24419
24420                         tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
24421                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24422
24423                                 tbl_len -= 2;
24424                         }
24425                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24426                                                 tbl_len, 96, 16,
24427                                                 pi->nphy_txiqlocal_bestc);
24428
24429                         pi->nphy_txiqlocal_coeffsvalid = true;
24430                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
24431                 } else {
24432                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
24433                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24434
24435                                 tbl_len -= 2;
24436                         }
24437                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24438                                                 tbl_len, 96, 16,
24439                                                 pi->mphase_txcal_bestcoeffs);
24440                 }
24441
24442                 wlc_phy_stopplayback_nphy(pi);
24443
24444                 write_phy_reg(pi, 0xc2, 0x0000);
24445
24446         }
24447
24448         wlc_phy_txcal_phycleanup_nphy(pi);
24449
24450         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
24451                                  gain_save);
24452
24453         wlc_phy_txcal_radio_cleanup_nphy(pi);
24454
24455         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
24456                 if (!mphase
24457                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
24458                         wlc_phy_tx_iq_war_nphy(pi);
24459         }
24460
24461         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
24462                 pi->phyhang_avoid = phyhang_avoid_state;
24463         }
24464
24465         wlc_phy_stay_in_carriersearch_nphy(pi, false);
24466
24467         return bcmerror;
24468 }
24469
24470 static void wlc_phy_reapply_txcal_coeffs_nphy(phy_info_t *pi)
24471 {
24472         u16 tbl_buf[7];
24473
24474         ASSERT(NREV_LT(pi->pubpi.phy_rev, 2));
24475
24476         if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
24477             (pi->nphy_txiqlocal_coeffsvalid)) {
24478                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24479                                         ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
24480
24481                 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
24482                     (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
24483                     (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
24484                     (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
24485
24486                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
24487                                                  16, pi->nphy_txiqlocal_bestc);
24488
24489                         tbl_buf[0] = 0;
24490                         tbl_buf[1] = 0;
24491                         tbl_buf[2] = 0;
24492                         tbl_buf[3] = 0;
24493                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
24494                                                  16, tbl_buf);
24495
24496                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
24497                                                  16,
24498                                                  &pi->nphy_txiqlocal_bestc[5]);
24499
24500                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
24501                                                  16,
24502                                                  &pi->nphy_txiqlocal_bestc[5]);
24503                 }
24504         }
24505 }
24506
24507 static void wlc_phy_tx_iq_war_nphy(phy_info_t *pi)
24508 {
24509         nphy_iq_comp_t tx_comp;
24510
24511         wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, (void *)&tx_comp);
24512
24513         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
24514         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
24515         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
24516         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
24517 }
24518
24519 void
24520 wlc_phy_rx_iq_coeffs_nphy(phy_info_t *pi, u8 write, nphy_iq_comp_t *pcomp)
24521 {
24522         if (write) {
24523                 write_phy_reg(pi, 0x9a, pcomp->a0);
24524                 write_phy_reg(pi, 0x9b, pcomp->b0);
24525                 write_phy_reg(pi, 0x9c, pcomp->a1);
24526                 write_phy_reg(pi, 0x9d, pcomp->b1);
24527         } else {
24528                 pcomp->a0 = read_phy_reg(pi, 0x9a);
24529                 pcomp->b0 = read_phy_reg(pi, 0x9b);
24530                 pcomp->a1 = read_phy_reg(pi, 0x9c);
24531                 pcomp->b1 = read_phy_reg(pi, 0x9d);
24532         }
24533 }
24534
24535 void
24536 wlc_phy_rx_iq_est_nphy(phy_info_t *pi, phy_iq_est_t *est, u16 num_samps,
24537                        u8 wait_time, u8 wait_for_crs)
24538 {
24539         u8 core;
24540
24541         write_phy_reg(pi, 0x12b, num_samps);
24542         mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
24543         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
24544                     (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
24545
24546         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
24547
24548         SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
24549                  10000);
24550         ASSERT((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0);
24551
24552         if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
24553                 ASSERT(pi->pubpi.phy_corenum <= PHY_CORE_MAX);
24554                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24555                         est[core].i_pwr =
24556                             (read_phy_reg(pi, NPHY_IqestipwrAccHi(core)) << 16)
24557                             | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
24558                         est[core].q_pwr =
24559                             (read_phy_reg(pi, NPHY_IqestqpwrAccHi(core)) << 16)
24560                             | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
24561                         est[core].iq_prod =
24562                             (read_phy_reg(pi, NPHY_IqestIqAccHi(core)) << 16) |
24563                             read_phy_reg(pi, NPHY_IqestIqAccLo(core));
24564                 }
24565         }
24566 }
24567
24568 #define CAL_RETRY_CNT 2
24569 static void wlc_phy_calc_rx_iq_comp_nphy(phy_info_t *pi, u8 core_mask)
24570 {
24571         u8 curr_core;
24572         phy_iq_est_t est[PHY_CORE_MAX];
24573         nphy_iq_comp_t old_comp, new_comp;
24574         s32 iq = 0;
24575         u32 ii = 0, qq = 0;
24576         s16 iq_nbits, qq_nbits, brsh, arsh;
24577         s32 a, b, temp;
24578         int bcmerror = BCME_OK;
24579         uint cal_retry = 0;
24580
24581         if (core_mask == 0x0)
24582                 return;
24583
24584         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
24585         new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
24586         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
24587
24588  cal_try:
24589         wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
24590
24591         new_comp = old_comp;
24592
24593         for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
24594
24595                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
24596                         iq = est[curr_core].iq_prod;
24597                         ii = est[curr_core].i_pwr;
24598                         qq = est[curr_core].q_pwr;
24599                 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
24600                         iq = est[curr_core].iq_prod;
24601                         ii = est[curr_core].i_pwr;
24602                         qq = est[curr_core].q_pwr;
24603                 } else {
24604                         continue;
24605                 }
24606
24607                 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
24608                         bcmerror = BCME_ERROR;
24609                         break;
24610                 }
24611
24612                 iq_nbits = wlc_phy_nbits(iq);
24613                 qq_nbits = wlc_phy_nbits(qq);
24614
24615                 arsh = 10 - (30 - iq_nbits);
24616                 if (arsh >= 0) {
24617                         a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
24618                         temp = (s32) (ii >> arsh);
24619                         if (temp == 0) {
24620                                 bcmerror = BCME_ERROR;
24621                                 break;
24622                         }
24623                 } else {
24624                         a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
24625                         temp = (s32) (ii << -arsh);
24626                         if (temp == 0) {
24627                                 bcmerror = BCME_ERROR;
24628                                 break;
24629                         }
24630                 }
24631
24632                 a /= temp;
24633
24634                 brsh = qq_nbits - 31 + 20;
24635                 if (brsh >= 0) {
24636                         b = (qq << (31 - qq_nbits));
24637                         temp = (s32) (ii >> brsh);
24638                         if (temp == 0) {
24639                                 bcmerror = BCME_ERROR;
24640                                 break;
24641                         }
24642                 } else {
24643                         b = (qq << (31 - qq_nbits));
24644                         temp = (s32) (ii << -brsh);
24645                         if (temp == 0) {
24646                                 bcmerror = BCME_ERROR;
24647                                 break;
24648                         }
24649                 }
24650                 b /= temp;
24651                 b -= a * a;
24652                 b = (s32) wlc_phy_sqrt_int((u32) b);
24653                 b -= (1 << 10);
24654
24655                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
24656                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24657                                 new_comp.a0 = (s16) a & 0x3ff;
24658                                 new_comp.b0 = (s16) b & 0x3ff;
24659                         } else {
24660
24661                                 new_comp.a0 = (s16) b & 0x3ff;
24662                                 new_comp.b0 = (s16) a & 0x3ff;
24663                         }
24664                 }
24665                 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
24666                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24667                                 new_comp.a1 = (s16) a & 0x3ff;
24668                                 new_comp.b1 = (s16) b & 0x3ff;
24669                         } else {
24670
24671                                 new_comp.a1 = (s16) b & 0x3ff;
24672                                 new_comp.b1 = (s16) a & 0x3ff;
24673                         }
24674                 }
24675         }
24676
24677         if (bcmerror != BCME_OK) {
24678                 printk("%s: Failed, cnt = %d\n", __func__, cal_retry);
24679
24680                 if (cal_retry < CAL_RETRY_CNT) {
24681                         cal_retry++;
24682                         goto cal_try;
24683                 }
24684
24685                 new_comp = old_comp;
24686         } else if (cal_retry > 0) {
24687         }
24688
24689         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
24690 }
24691
24692 static void wlc_phy_rxcal_radio_setup_nphy(phy_info_t *pi, u8 rx_core)
24693 {
24694         u16 offtune_val;
24695         u16 bias_g = 0;
24696         u16 bias_a = 0;
24697
24698         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24699                 if (rx_core == PHY_CORE_0) {
24700                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24701                                 pi->tx_rx_cal_radio_saveregs[0] =
24702                                     read_radio_reg(pi,
24703                                                    RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
24704                                 pi->tx_rx_cal_radio_saveregs[1] =
24705                                     read_radio_reg(pi,
24706                                                    RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
24707
24708                                 write_radio_reg(pi,
24709                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
24710                                                 0x3);
24711                                 write_radio_reg(pi,
24712                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
24713                                                 0xaf);
24714
24715                         } else {
24716                                 pi->tx_rx_cal_radio_saveregs[0] =
24717                                     read_radio_reg(pi,
24718                                                    RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
24719                                 pi->tx_rx_cal_radio_saveregs[1] =
24720                                     read_radio_reg(pi,
24721                                                    RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
24722
24723                                 write_radio_reg(pi,
24724                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
24725                                                 0x3);
24726                                 write_radio_reg(pi,
24727                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
24728                                                 0x7f);
24729                         }
24730
24731                 } else {
24732                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24733                                 pi->tx_rx_cal_radio_saveregs[0] =
24734                                     read_radio_reg(pi,
24735                                                    RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
24736                                 pi->tx_rx_cal_radio_saveregs[1] =
24737                                     read_radio_reg(pi,
24738                                                    RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
24739
24740                                 write_radio_reg(pi,
24741                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
24742                                                 0x3);
24743                                 write_radio_reg(pi,
24744                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
24745                                                 0xaf);
24746
24747                         } else {
24748                                 pi->tx_rx_cal_radio_saveregs[0] =
24749                                     read_radio_reg(pi,
24750                                                    RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
24751                                 pi->tx_rx_cal_radio_saveregs[1] =
24752                                     read_radio_reg(pi,
24753                                                    RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
24754
24755                                 write_radio_reg(pi,
24756                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
24757                                                 0x3);
24758                                 write_radio_reg(pi,
24759                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
24760                                                 0x7f);
24761                         }
24762                 }
24763
24764         } else {
24765                 if (rx_core == PHY_CORE_0) {
24766                         pi->tx_rx_cal_radio_saveregs[0] =
24767                             read_radio_reg(pi,
24768                                            RADIO_2056_TX_RXIQCAL_TXMUX |
24769                                            RADIO_2056_TX1);
24770                         pi->tx_rx_cal_radio_saveregs[1] =
24771                             read_radio_reg(pi,
24772                                            RADIO_2056_RX_RXIQCAL_RXMUX |
24773                                            RADIO_2056_RX0);
24774
24775                         if (pi->pubpi.radiorev >= 5) {
24776                                 pi->tx_rx_cal_radio_saveregs[2] =
24777                                     read_radio_reg(pi,
24778                                                    RADIO_2056_RX_RXSPARE2 |
24779                                                    RADIO_2056_RX0);
24780                                 pi->tx_rx_cal_radio_saveregs[3] =
24781                                     read_radio_reg(pi,
24782                                                    RADIO_2056_TX_TXSPARE2 |
24783                                                    RADIO_2056_TX1);
24784                         }
24785
24786                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24787
24788                                 if (pi->pubpi.radiorev >= 5) {
24789                                         pi->tx_rx_cal_radio_saveregs[4] =
24790                                             read_radio_reg(pi,
24791                                                            RADIO_2056_RX_LNAA_MASTER
24792                                                            | RADIO_2056_RX0);
24793
24794                                         write_radio_reg(pi,
24795                                                         RADIO_2056_RX_LNAA_MASTER
24796                                                         | RADIO_2056_RX0, 0x40);
24797
24798                                         write_radio_reg(pi,
24799                                                         RADIO_2056_TX_TXSPARE2 |
24800                                                         RADIO_2056_TX1, bias_a);
24801
24802                                         write_radio_reg(pi,
24803                                                         RADIO_2056_RX_RXSPARE2 |
24804                                                         RADIO_2056_RX0, bias_a);
24805                                 } else {
24806                                         pi->tx_rx_cal_radio_saveregs[4] =
24807                                             read_radio_reg(pi,
24808                                                            RADIO_2056_RX_LNAA_TUNE
24809                                                            | RADIO_2056_RX0);
24810
24811                                         offtune_val =
24812                                             (pi->
24813                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24814                                             >> 8;
24815                                         offtune_val =
24816                                             (offtune_val <= 0x7) ? 0xF : 0;
24817
24818                                         mod_radio_reg(pi,
24819                                                       RADIO_2056_RX_LNAA_TUNE |
24820                                                       RADIO_2056_RX0, 0xF0,
24821                                                       (offtune_val << 8));
24822                                 }
24823
24824                                 write_radio_reg(pi,
24825                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24826                                                 RADIO_2056_TX1, 0x9);
24827                                 write_radio_reg(pi,
24828                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24829                                                 RADIO_2056_RX0, 0x9);
24830                         } else {
24831                                 if (pi->pubpi.radiorev >= 5) {
24832                                         pi->tx_rx_cal_radio_saveregs[4] =
24833                                             read_radio_reg(pi,
24834                                                            RADIO_2056_RX_LNAG_MASTER
24835                                                            | RADIO_2056_RX0);
24836
24837                                         write_radio_reg(pi,
24838                                                         RADIO_2056_RX_LNAG_MASTER
24839                                                         | RADIO_2056_RX0, 0x40);
24840
24841                                         write_radio_reg(pi,
24842                                                         RADIO_2056_TX_TXSPARE2 |
24843                                                         RADIO_2056_TX1, bias_g);
24844
24845                                         write_radio_reg(pi,
24846                                                         RADIO_2056_RX_RXSPARE2 |
24847                                                         RADIO_2056_RX0, bias_g);
24848
24849                                 } else {
24850                                         pi->tx_rx_cal_radio_saveregs[4] =
24851                                             read_radio_reg(pi,
24852                                                            RADIO_2056_RX_LNAG_TUNE
24853                                                            | RADIO_2056_RX0);
24854
24855                                         offtune_val =
24856                                             (pi->
24857                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24858                                             >> 8;
24859                                         offtune_val =
24860                                             (offtune_val <= 0x7) ? 0xF : 0;
24861
24862                                         mod_radio_reg(pi,
24863                                                       RADIO_2056_RX_LNAG_TUNE |
24864                                                       RADIO_2056_RX0, 0xF0,
24865                                                       (offtune_val << 8));
24866                                 }
24867
24868                                 write_radio_reg(pi,
24869                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24870                                                 RADIO_2056_TX1, 0x6);
24871                                 write_radio_reg(pi,
24872                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24873                                                 RADIO_2056_RX0, 0x6);
24874                         }
24875
24876                 } else {
24877                         pi->tx_rx_cal_radio_saveregs[0] =
24878                             read_radio_reg(pi,
24879                                            RADIO_2056_TX_RXIQCAL_TXMUX |
24880                                            RADIO_2056_TX0);
24881                         pi->tx_rx_cal_radio_saveregs[1] =
24882                             read_radio_reg(pi,
24883                                            RADIO_2056_RX_RXIQCAL_RXMUX |
24884                                            RADIO_2056_RX1);
24885
24886                         if (pi->pubpi.radiorev >= 5) {
24887                                 pi->tx_rx_cal_radio_saveregs[2] =
24888                                     read_radio_reg(pi,
24889                                                    RADIO_2056_RX_RXSPARE2 |
24890                                                    RADIO_2056_RX1);
24891                                 pi->tx_rx_cal_radio_saveregs[3] =
24892                                     read_radio_reg(pi,
24893                                                    RADIO_2056_TX_TXSPARE2 |
24894                                                    RADIO_2056_TX0);
24895                         }
24896
24897                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24898
24899                                 if (pi->pubpi.radiorev >= 5) {
24900                                         pi->tx_rx_cal_radio_saveregs[4] =
24901                                             read_radio_reg(pi,
24902                                                            RADIO_2056_RX_LNAA_MASTER
24903                                                            | RADIO_2056_RX1);
24904
24905                                         write_radio_reg(pi,
24906                                                         RADIO_2056_RX_LNAA_MASTER
24907                                                         | RADIO_2056_RX1, 0x40);
24908
24909                                         write_radio_reg(pi,
24910                                                         RADIO_2056_TX_TXSPARE2 |
24911                                                         RADIO_2056_TX0, bias_a);
24912
24913                                         write_radio_reg(pi,
24914                                                         RADIO_2056_RX_RXSPARE2 |
24915                                                         RADIO_2056_RX1, bias_a);
24916                                 } else {
24917                                         pi->tx_rx_cal_radio_saveregs[4] =
24918                                             read_radio_reg(pi,
24919                                                            RADIO_2056_RX_LNAA_TUNE
24920                                                            | RADIO_2056_RX1);
24921
24922                                         offtune_val =
24923                                             (pi->
24924                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24925                                             >> 8;
24926                                         offtune_val =
24927                                             (offtune_val <= 0x7) ? 0xF : 0;
24928
24929                                         mod_radio_reg(pi,
24930                                                       RADIO_2056_RX_LNAA_TUNE |
24931                                                       RADIO_2056_RX1, 0xF0,
24932                                                       (offtune_val << 8));
24933                                 }
24934
24935                                 write_radio_reg(pi,
24936                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24937                                                 RADIO_2056_TX0, 0x9);
24938                                 write_radio_reg(pi,
24939                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24940                                                 RADIO_2056_RX1, 0x9);
24941                         } else {
24942                                 if (pi->pubpi.radiorev >= 5) {
24943                                         pi->tx_rx_cal_radio_saveregs[4] =
24944                                             read_radio_reg(pi,
24945                                                            RADIO_2056_RX_LNAG_MASTER
24946                                                            | RADIO_2056_RX1);
24947
24948                                         write_radio_reg(pi,
24949                                                         RADIO_2056_RX_LNAG_MASTER
24950                                                         | RADIO_2056_RX1, 0x40);
24951
24952                                         write_radio_reg(pi,
24953                                                         RADIO_2056_TX_TXSPARE2 |
24954                                                         RADIO_2056_TX0, bias_g);
24955
24956                                         write_radio_reg(pi,
24957                                                         RADIO_2056_RX_RXSPARE2 |
24958                                                         RADIO_2056_RX1, bias_g);
24959                                 } else {
24960                                         pi->tx_rx_cal_radio_saveregs[4] =
24961                                             read_radio_reg(pi,
24962                                                            RADIO_2056_RX_LNAG_TUNE
24963                                                            | RADIO_2056_RX1);
24964
24965                                         offtune_val =
24966                                             (pi->
24967                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24968                                             >> 8;
24969                                         offtune_val =
24970                                             (offtune_val <= 0x7) ? 0xF : 0;
24971
24972                                         mod_radio_reg(pi,
24973                                                       RADIO_2056_RX_LNAG_TUNE |
24974                                                       RADIO_2056_RX1, 0xF0,
24975                                                       (offtune_val << 8));
24976                                 }
24977
24978                                 write_radio_reg(pi,
24979                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24980                                                 RADIO_2056_TX0, 0x6);
24981                                 write_radio_reg(pi,
24982                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24983                                                 RADIO_2056_RX1, 0x6);
24984                         }
24985                 }
24986         }
24987 }
24988
24989 static void wlc_phy_rxcal_radio_cleanup_nphy(phy_info_t *pi, u8 rx_core)
24990 {
24991         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24992                 if (rx_core == PHY_CORE_0) {
24993                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24994                                 write_radio_reg(pi,
24995                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
24996                                                 pi->
24997                                                 tx_rx_cal_radio_saveregs[0]);
24998                                 write_radio_reg(pi,
24999                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
25000                                                 pi->
25001                                                 tx_rx_cal_radio_saveregs[1]);
25002
25003                         } else {
25004                                 write_radio_reg(pi,
25005                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
25006                                                 pi->
25007                                                 tx_rx_cal_radio_saveregs[0]);
25008                                 write_radio_reg(pi,
25009                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
25010                                                 pi->
25011                                                 tx_rx_cal_radio_saveregs[1]);
25012                         }
25013
25014                 } else {
25015                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25016                                 write_radio_reg(pi,
25017                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
25018                                                 pi->
25019                                                 tx_rx_cal_radio_saveregs[0]);
25020                                 write_radio_reg(pi,
25021                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
25022                                                 pi->
25023                                                 tx_rx_cal_radio_saveregs[1]);
25024
25025                         } else {
25026                                 write_radio_reg(pi,
25027                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
25028                                                 pi->
25029                                                 tx_rx_cal_radio_saveregs[0]);
25030                                 write_radio_reg(pi,
25031                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
25032                                                 pi->
25033                                                 tx_rx_cal_radio_saveregs[1]);
25034                         }
25035                 }
25036
25037         } else {
25038                 if (rx_core == PHY_CORE_0) {
25039                         write_radio_reg(pi,
25040                                         RADIO_2056_TX_RXIQCAL_TXMUX |
25041                                         RADIO_2056_TX1,
25042                                         pi->tx_rx_cal_radio_saveregs[0]);
25043
25044                         write_radio_reg(pi,
25045                                         RADIO_2056_RX_RXIQCAL_RXMUX |
25046                                         RADIO_2056_RX0,
25047                                         pi->tx_rx_cal_radio_saveregs[1]);
25048
25049                         if (pi->pubpi.radiorev >= 5) {
25050                                 write_radio_reg(pi,
25051                                                 RADIO_2056_RX_RXSPARE2 |
25052                                                 RADIO_2056_RX0,
25053                                                 pi->
25054                                                 tx_rx_cal_radio_saveregs[2]);
25055
25056                                 write_radio_reg(pi,
25057                                                 RADIO_2056_TX_TXSPARE2 |
25058                                                 RADIO_2056_TX1,
25059                                                 pi->
25060                                                 tx_rx_cal_radio_saveregs[3]);
25061                         }
25062
25063                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25064                                 if (pi->pubpi.radiorev >= 5) {
25065                                         write_radio_reg(pi,
25066                                                         RADIO_2056_RX_LNAA_MASTER
25067                                                         | RADIO_2056_RX0,
25068                                                         pi->
25069                                                         tx_rx_cal_radio_saveregs
25070                                                         [4]);
25071                                 } else {
25072                                         write_radio_reg(pi,
25073                                                         RADIO_2056_RX_LNAA_TUNE
25074                                                         | RADIO_2056_RX0,
25075                                                         pi->
25076                                                         tx_rx_cal_radio_saveregs
25077                                                         [4]);
25078                                 }
25079                         } else {
25080                                 if (pi->pubpi.radiorev >= 5) {
25081                                         write_radio_reg(pi,
25082                                                         RADIO_2056_RX_LNAG_MASTER
25083                                                         | RADIO_2056_RX0,
25084                                                         pi->
25085                                                         tx_rx_cal_radio_saveregs
25086                                                         [4]);
25087                                 } else {
25088                                         write_radio_reg(pi,
25089                                                         RADIO_2056_RX_LNAG_TUNE
25090                                                         | RADIO_2056_RX0,
25091                                                         pi->
25092                                                         tx_rx_cal_radio_saveregs
25093                                                         [4]);
25094                                 }
25095                         }
25096
25097                 } else {
25098                         write_radio_reg(pi,
25099                                         RADIO_2056_TX_RXIQCAL_TXMUX |
25100                                         RADIO_2056_TX0,
25101                                         pi->tx_rx_cal_radio_saveregs[0]);
25102
25103                         write_radio_reg(pi,
25104                                         RADIO_2056_RX_RXIQCAL_RXMUX |
25105                                         RADIO_2056_RX1,
25106                                         pi->tx_rx_cal_radio_saveregs[1]);
25107
25108                         if (pi->pubpi.radiorev >= 5) {
25109                                 write_radio_reg(pi,
25110                                                 RADIO_2056_RX_RXSPARE2 |
25111                                                 RADIO_2056_RX1,
25112                                                 pi->
25113                                                 tx_rx_cal_radio_saveregs[2]);
25114
25115                                 write_radio_reg(pi,
25116                                                 RADIO_2056_TX_TXSPARE2 |
25117                                                 RADIO_2056_TX0,
25118                                                 pi->
25119                                                 tx_rx_cal_radio_saveregs[3]);
25120                         }
25121
25122                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25123                                 if (pi->pubpi.radiorev >= 5) {
25124                                         write_radio_reg(pi,
25125                                                         RADIO_2056_RX_LNAA_MASTER
25126                                                         | RADIO_2056_RX1,
25127                                                         pi->
25128                                                         tx_rx_cal_radio_saveregs
25129                                                         [4]);
25130                                 } else {
25131                                         write_radio_reg(pi,
25132                                                         RADIO_2056_RX_LNAA_TUNE
25133                                                         | RADIO_2056_RX1,
25134                                                         pi->
25135                                                         tx_rx_cal_radio_saveregs
25136                                                         [4]);
25137                                 }
25138                         } else {
25139                                 if (pi->pubpi.radiorev >= 5) {
25140                                         write_radio_reg(pi,
25141                                                         RADIO_2056_RX_LNAG_MASTER
25142                                                         | RADIO_2056_RX1,
25143                                                         pi->
25144                                                         tx_rx_cal_radio_saveregs
25145                                                         [4]);
25146                                 } else {
25147                                         write_radio_reg(pi,
25148                                                         RADIO_2056_RX_LNAG_TUNE
25149                                                         | RADIO_2056_RX1,
25150                                                         pi->
25151                                                         tx_rx_cal_radio_saveregs
25152                                                         [4]);
25153                                 }
25154                         }
25155                 }
25156         }
25157 }
25158
25159 static void wlc_phy_rxcal_physetup_nphy(phy_info_t *pi, u8 rx_core)
25160 {
25161         u8 tx_core;
25162         u16 rx_antval, tx_antval;
25163
25164         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25165
25166                 tx_core = rx_core;
25167         } else {
25168                 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
25169         }
25170
25171         pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
25172         pi->tx_rx_cal_phy_saveregs[1] =
25173             read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
25174         pi->tx_rx_cal_phy_saveregs[2] =
25175             read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
25176         pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
25177         pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
25178         pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
25179         pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
25180         pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
25181         pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
25182         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25183                 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
25184                 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
25185                 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
25186                 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
25187         }
25188
25189         pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
25190         pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
25191         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25192                     0x29b, (0x1 << 0), (0) << 0);
25193
25194         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25195                     0x29b, (0x1 << 0), (0) << 0);
25196
25197         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25198
25199                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25200
25201                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
25202
25203         } else {
25204
25205                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
25206                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25207                 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
25208                 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
25209         }
25210
25211         mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
25212         mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
25213                     (0x1 << 2), (0x1 << 2));
25214         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
25215                 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
25216                             (0x1 << 0) | (0x1 << 1), 0);
25217                 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25218                             0x8f : 0xa5,
25219                             (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
25220         }
25221
25222         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
25223                                          RADIO_MIMO_CORESEL_CORE1 |
25224                                          RADIO_MIMO_CORESEL_CORE2);
25225
25226         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25227                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25228                                                   0, 0, 0,
25229                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
25230                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
25231                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25232                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
25233                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25234                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
25235                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25236                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
25237                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
25238                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
25239                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25240                 if (CHSPEC_IS40(pi->radio_chanspec)) {
25241                         wlc_phy_rfctrl_override_nphy_rev7(pi,
25242                                                           (0x1 << 7),
25243                                                           2, 0, 0,
25244                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
25245                 } else {
25246                         wlc_phy_rfctrl_override_nphy_rev7(pi,
25247                                                           (0x1 << 7),
25248                                                           0, 0, 0,
25249                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
25250                 }
25251                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
25252                                                   0, 0, 0,
25253                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25254                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
25255                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25256         } else {
25257                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
25258         }
25259
25260         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
25261
25262         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25263
25264                 wlc_phy_rfctrlintc_override_nphy(pi,
25265                                                  NPHY_RfctrlIntc_override_TRSW,
25266                                                  0x1, rx_core + 1);
25267         } else {
25268
25269                 if (rx_core == PHY_CORE_0) {
25270                         rx_antval = 0x1;
25271                         tx_antval = 0x8;
25272                 } else {
25273                         rx_antval = 0x4;
25274                         tx_antval = 0x2;
25275                 }
25276
25277                 wlc_phy_rfctrlintc_override_nphy(pi,
25278                                                  NPHY_RfctrlIntc_override_TRSW,
25279                                                  rx_antval, rx_core + 1);
25280                 wlc_phy_rfctrlintc_override_nphy(pi,
25281                                                  NPHY_RfctrlIntc_override_TRSW,
25282                                                  tx_antval, tx_core + 1);
25283         }
25284 }
25285
25286 static void wlc_phy_rxcal_phycleanup_nphy(phy_info_t *pi, u8 rx_core)
25287 {
25288
25289         write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
25290         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
25291                       pi->tx_rx_cal_phy_saveregs[1]);
25292         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
25293                       pi->tx_rx_cal_phy_saveregs[2]);
25294         write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
25295         write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
25296
25297         write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
25298         write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
25299         write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
25300         write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
25301         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25302                 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
25303                 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
25304                 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
25305                 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
25306         }
25307
25308         write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
25309         write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
25310 }
25311
25312 static void
25313 wlc_phy_rxcal_gainctrl_nphy_rev5(phy_info_t *pi, u8 rx_core,
25314                                  u16 *rxgain, u8 cal_type)
25315 {
25316
25317         u16 num_samps;
25318         phy_iq_est_t est[PHY_CORE_MAX];
25319         u8 tx_core;
25320         nphy_iq_comp_t save_comp, zero_comp;
25321         u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0, thresh_pwr =
25322             10000;
25323         s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
25324         bool gainctrl_done = false;
25325         u8 mix_tia_gain = 3;
25326         s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
25327         s8 curr_gaintbl_index = 3;
25328         u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
25329         nphy_ipa_txrxgain_t *nphy_rxcal_gaintbl;
25330         u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
25331         int fine_gain_idx;
25332         s8 txpwrindex;
25333         u16 nphy_rxcal_txgain[2];
25334
25335         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25336
25337                 tx_core = rx_core;
25338         } else {
25339                 tx_core = 1 - rx_core;
25340         }
25341
25342         num_samps = 1024;
25343         desired_log2_pwr = (cal_type == 0) ? 13 : 13;
25344
25345         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
25346         zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
25347         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
25348
25349         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25350                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25351                         mix_tia_gain = 3;
25352                 } else if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25353                         mix_tia_gain = 4;
25354                 } else {
25355                         mix_tia_gain = 6;
25356                 }
25357                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25358                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
25359                 } else {
25360                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
25361                 }
25362         } else {
25363                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25364                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
25365                 } else {
25366                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
25367                 }
25368         }
25369
25370         do {
25371
25372                 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
25373                     0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
25374                 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
25375                 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
25376                 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
25377                 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
25378                 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
25379
25380                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25381                         wlc_phy_rfctrl_override_1tomany_nphy(pi,
25382                                                              NPHY_REV7_RfctrlOverride_cmd_rxgain,
25383                                                              ((lpf_biq1 << 12) |
25384                                                               (lpf_biq0 << 8) |
25385                                                               (mix_tia_gain <<
25386                                                                4) | (lna2 << 2)
25387                                                               | lna1), 0x3, 0);
25388                 } else {
25389                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
25390                                                      ((hpvga << 12) |
25391                                                       (lpf_biq1 << 10) |
25392                                                       (lpf_biq0 << 8) |
25393                                                       (mix_tia_gain << 4) |
25394                                                       (lna2 << 2) | lna1), 0x3,
25395                                                      0);
25396                 }
25397
25398                 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
25399
25400                 if (txpwrindex == -1) {
25401                         nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
25402                         nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
25403                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
25404                                                  2, 0x110, 16,
25405                                                  nphy_rxcal_txgain);
25406                 } else {
25407                         wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
25408                                                  false);
25409                 }
25410
25411                 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
25412                                      NPHY_RXCAL_TONEFREQ_40MHz :
25413                                      NPHY_RXCAL_TONEFREQ_20MHz,
25414                                      NPHY_RXCAL_TONEAMP, 0, cal_type, false);
25415
25416                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25417                 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
25418                 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
25419                 curr_pwr = i_pwr + q_pwr;
25420
25421                 switch (gainctrl_dirn) {
25422                 case NPHY_RXCAL_GAIN_INIT:
25423                         if (curr_pwr > thresh_pwr) {
25424                                 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
25425                                 prev_gaintbl_index = curr_gaintbl_index;
25426                                 curr_gaintbl_index--;
25427                         } else {
25428                                 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
25429                                 prev_gaintbl_index = curr_gaintbl_index;
25430                                 curr_gaintbl_index++;
25431                         }
25432                         break;
25433
25434                 case NPHY_RXCAL_GAIN_UP:
25435                         if (curr_pwr > thresh_pwr) {
25436                                 gainctrl_done = true;
25437                                 optim_pwr = prev_pwr;
25438                                 optim_gaintbl_index = prev_gaintbl_index;
25439                         } else {
25440                                 prev_gaintbl_index = curr_gaintbl_index;
25441                                 curr_gaintbl_index++;
25442                         }
25443                         break;
25444
25445                 case NPHY_RXCAL_GAIN_DOWN:
25446                         if (curr_pwr > thresh_pwr) {
25447                                 prev_gaintbl_index = curr_gaintbl_index;
25448                                 curr_gaintbl_index--;
25449                         } else {
25450                                 gainctrl_done = true;
25451                                 optim_pwr = curr_pwr;
25452                                 optim_gaintbl_index = curr_gaintbl_index;
25453                         }
25454                         break;
25455
25456                 default:
25457                         ASSERT(0);
25458                 }
25459
25460                 if ((curr_gaintbl_index < 0) ||
25461                     (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
25462                         gainctrl_done = true;
25463                         optim_pwr = curr_pwr;
25464                         optim_gaintbl_index = prev_gaintbl_index;
25465                 } else {
25466                         prev_pwr = curr_pwr;
25467                 }
25468
25469                 wlc_phy_stopplayback_nphy(pi);
25470         } while (!gainctrl_done);
25471
25472         hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
25473         lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
25474         lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
25475         lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
25476         lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
25477         txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
25478
25479         actual_log2_pwr = wlc_phy_nbits(optim_pwr);
25480         delta_pwr = desired_log2_pwr - actual_log2_pwr;
25481
25482         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25483                 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
25484
25485                 if (fine_gain_idx + (int)lpf_biq0 > 10) {
25486                         lpf_biq1 = 10 - lpf_biq0;
25487                 } else {
25488                         lpf_biq1 = (u16) max(fine_gain_idx, 0);
25489                 }
25490                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
25491                                                      NPHY_REV7_RfctrlOverride_cmd_rxgain,
25492                                                      ((lpf_biq1 << 12) |
25493                                                       (lpf_biq0 << 8) |
25494                                                       (mix_tia_gain << 4) |
25495                                                       (lna2 << 2) | lna1), 0x3,
25496                                                      0);
25497         } else {
25498                 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
25499                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
25500                                              ((hpvga << 12) | (lpf_biq1 << 10) |
25501                                               (lpf_biq0 << 8) | (mix_tia_gain <<
25502                                                                  4) | (lna2 <<
25503                                                                        2) |
25504                                               lna1), 0x3, 0);
25505
25506         }
25507
25508         if (rxgain != NULL) {
25509                 *rxgain++ = lna1;
25510                 *rxgain++ = lna2;
25511                 *rxgain++ = mix_tia_gain;
25512                 *rxgain++ = lpf_biq0;
25513                 *rxgain++ = lpf_biq1;
25514                 *rxgain = hpvga;
25515         }
25516
25517         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
25518 }
25519
25520 static void
25521 wlc_phy_rxcal_gainctrl_nphy(phy_info_t *pi, u8 rx_core, u16 *rxgain,
25522                             u8 cal_type)
25523 {
25524         wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
25525 }
25526
25527 static u8
25528 wlc_phy_rc_sweep_nphy(phy_info_t *pi, u8 core_idx, u8 loopback_type)
25529 {
25530         u32 target_bws[2] = { 9500, 21000 };
25531         u32 ref_tones[2] = { 3000, 6000 };
25532         u32 target_bw, ref_tone;
25533
25534         u32 target_pwr_ratios[2] = { 28606, 18468 };
25535         u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
25536
25537         u16 start_rccal_ovr_val = 128;
25538         u16 txlpf_rccal_lpc_ovr_val = 128;
25539         u16 rxlpf_rccal_hpc_ovr_val = 159;
25540
25541         u16 orig_txlpf_rccal_lpc_ovr_val;
25542         u16 orig_rxlpf_rccal_hpc_ovr_val;
25543         u16 radio_addr_offset_rx;
25544         u16 radio_addr_offset_tx;
25545         u16 orig_dcBypass;
25546         u16 orig_RxStrnFilt40Num[6];
25547         u16 orig_RxStrnFilt40Den[4];
25548         u16 orig_rfctrloverride[2];
25549         u16 orig_rfctrlauxreg[2];
25550         u16 orig_rfctrlrssiothers;
25551         u16 tx_lpf_bw = 4;
25552
25553         u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
25554         u16 lpf_hpc = 7, hpvga_hpc = 7;
25555
25556         s8 rccal_stepsize;
25557         u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
25558         u32 ref_iq_vals = 0, target_iq_vals = 0;
25559         u16 num_samps, log_num_samps = 10;
25560         phy_iq_est_t est[PHY_CORE_MAX];
25561
25562         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25563                 return 0;
25564         }
25565
25566         num_samps = (1 << log_num_samps);
25567
25568         if (CHSPEC_IS40(pi->radio_chanspec)) {
25569                 target_bw = target_bws[1];
25570                 target_pwr_ratio = target_pwr_ratios[1];
25571                 ref_tone = ref_tones[1];
25572                 rx_lpf_bw = rx_lpf_bws[1];
25573         } else {
25574                 target_bw = target_bws[0];
25575                 target_pwr_ratio = target_pwr_ratios[0];
25576                 ref_tone = ref_tones[0];
25577                 rx_lpf_bw = rx_lpf_bws[0];
25578         }
25579
25580         if (core_idx == 0) {
25581                 radio_addr_offset_rx = RADIO_2056_RX0;
25582                 radio_addr_offset_tx =
25583                     (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
25584         } else {
25585                 radio_addr_offset_rx = RADIO_2056_RX1;
25586                 radio_addr_offset_tx =
25587                     (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
25588         }
25589
25590         orig_txlpf_rccal_lpc_ovr_val =
25591             read_radio_reg(pi,
25592                            (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx));
25593         orig_rxlpf_rccal_hpc_ovr_val =
25594             read_radio_reg(pi,
25595                            (RADIO_2056_RX_RXLPF_RCCAL_HPC |
25596                             radio_addr_offset_rx));
25597
25598         orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
25599
25600         orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
25601         orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
25602         orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
25603         orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
25604         orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
25605         orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
25606         orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
25607         orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
25608         orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
25609         orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
25610
25611         orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
25612         orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
25613         orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
25614         orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
25615         orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
25616
25617         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
25618                         txlpf_rccal_lpc_ovr_val);
25619
25620         write_radio_reg(pi,
25621                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
25622                         rxlpf_rccal_hpc_ovr_val);
25623
25624         mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
25625
25626         write_phy_reg(pi, 0x267, 0x02d4);
25627         write_phy_reg(pi, 0x268, 0x0000);
25628         write_phy_reg(pi, 0x269, 0x0000);
25629         write_phy_reg(pi, 0x26a, 0x0000);
25630         write_phy_reg(pi, 0x26b, 0x0000);
25631         write_phy_reg(pi, 0x26c, 0x02d4);
25632         write_phy_reg(pi, 0x26d, 0x0000);
25633         write_phy_reg(pi, 0x26e, 0x0000);
25634         write_phy_reg(pi, 0x26f, 0x0000);
25635         write_phy_reg(pi, 0x270, 0x0000);
25636
25637         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
25638         or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
25639         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
25640         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
25641
25642         mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
25643                     (0x7 << 10), (tx_lpf_bw << 10));
25644         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
25645                     (0x7 << 0), (hpvga_hpc << 0));
25646         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
25647                     (0x7 << 4), (lpf_hpc << 4));
25648         mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
25649                     (0x7 << 8), (rx_lpf_bw << 8));
25650
25651         rccal_stepsize = 16;
25652         rccal_val = start_rccal_ovr_val + rccal_stepsize;
25653
25654         while (rccal_stepsize >= 0) {
25655                 write_radio_reg(pi,
25656                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25657                                  radio_addr_offset_rx), rccal_val);
25658
25659                 if (rccal_stepsize == 16) {
25660
25661                         wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
25662                                              0, 1, false);
25663                         udelay(2);
25664
25665                         wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25666
25667                         if (core_idx == 0) {
25668                                 ref_iq_vals =
25669                                     max_t(u32, (est[0].i_pwr +
25670                                          est[0].q_pwr) >> (log_num_samps + 1),
25671                                         1);
25672                         } else {
25673                                 ref_iq_vals =
25674                                     max_t(u32, (est[1].i_pwr +
25675                                          est[1].q_pwr) >> (log_num_samps + 1),
25676                                         1);
25677                         }
25678
25679                         wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
25680                                              0, 1, false);
25681                         udelay(2);
25682                 }
25683
25684                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25685
25686                 if (core_idx == 0) {
25687                         target_iq_vals =
25688                             (est[0].i_pwr + est[0].q_pwr) >> (log_num_samps +
25689                                                               1);
25690                 } else {
25691                         target_iq_vals =
25692                             (est[1].i_pwr + est[1].q_pwr) >> (log_num_samps +
25693                                                               1);
25694                 }
25695                 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
25696
25697                 if (rccal_stepsize == 0) {
25698                         rccal_stepsize--;
25699                 } else if (rccal_stepsize == 1) {
25700                         last_rccal_val = rccal_val;
25701                         rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
25702                         last_pwr_ratio = pwr_ratio;
25703                         rccal_stepsize--;
25704                 } else {
25705                         rccal_stepsize = (rccal_stepsize >> 1);
25706                         rccal_val += ((pwr_ratio > target_pwr_ratio) ?
25707                                       rccal_stepsize : (-rccal_stepsize));
25708                 }
25709
25710                 if (rccal_stepsize == -1) {
25711                         best_rccal_val =
25712                             (ABS((int)last_pwr_ratio - (int)target_pwr_ratio) <
25713                              ABS((int)pwr_ratio -
25714                                  (int)target_pwr_ratio)) ? last_rccal_val :
25715                             rccal_val;
25716
25717                         if (CHSPEC_IS40(pi->radio_chanspec)) {
25718                                 if ((best_rccal_val > 140)
25719                                     || (best_rccal_val < 135)) {
25720                                         best_rccal_val = 138;
25721                                 }
25722                         } else {
25723                                 if ((best_rccal_val > 142)
25724                                     || (best_rccal_val < 137)) {
25725                                         best_rccal_val = 140;
25726                                 }
25727                         }
25728
25729                         write_radio_reg(pi,
25730                                         (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25731                                          radio_addr_offset_rx), best_rccal_val);
25732                 }
25733         }
25734
25735         wlc_phy_stopplayback_nphy(pi);
25736
25737         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
25738                         orig_txlpf_rccal_lpc_ovr_val);
25739         write_radio_reg(pi,
25740                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
25741                         orig_rxlpf_rccal_hpc_ovr_val);
25742
25743         mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
25744
25745         write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
25746         write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
25747         write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
25748         write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
25749         write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
25750         write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
25751         write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
25752         write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
25753         write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
25754         write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
25755
25756         write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
25757         write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
25758         write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
25759         write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
25760         write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
25761
25762         pi->nphy_anarxlpf_adjusted = false;
25763
25764         return best_rccal_val - 0x80;
25765 }
25766
25767 #define WAIT_FOR_SCOPE  4000
25768 static int
25769 wlc_phy_cal_rxiq_nphy_rev3(phy_info_t *pi, nphy_txgains_t target_gain,
25770                            u8 cal_type, bool debug)
25771 {
25772         u16 orig_BBConfig;
25773         u8 core_no, rx_core;
25774         u8 best_rccal[2];
25775         u16 gain_save[2];
25776         u16 cal_gain[2];
25777         nphy_iqcal_params_t cal_params[2];
25778         u8 rxcore_state;
25779         s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
25780         s8 txlpf_idac;
25781         bool phyhang_avoid_state = false;
25782         bool skip_rxiqcal = false;
25783
25784         orig_BBConfig = read_phy_reg(pi, 0x01);
25785         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25786
25787         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25788
25789         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25790                 phyhang_avoid_state = pi->phyhang_avoid;
25791                 pi->phyhang_avoid = false;
25792         }
25793
25794         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25795
25796         for (core_no = 0; core_no <= 1; core_no++) {
25797                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25798                                               &cal_params[core_no]);
25799                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25800         }
25801
25802         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25803
25804         rxcore_state = wlc_phy_rxcore_getstate_nphy((wlc_phy_t *) pi);
25805
25806         for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
25807
25808                 skip_rxiqcal =
25809                     ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
25810
25811                 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
25812
25813                 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
25814
25815                 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
25816
25817                         wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
25818
25819                         wlc_phy_tx_tone_nphy(pi,
25820                                              (CHSPEC_IS40(pi->radio_chanspec)) ?
25821                                              NPHY_RXCAL_TONEFREQ_40MHz :
25822                                              NPHY_RXCAL_TONEFREQ_20MHz,
25823                                              NPHY_RXCAL_TONEAMP, 0, cal_type,
25824                                              false);
25825
25826                         if (debug)
25827                                 mdelay(WAIT_FOR_SCOPE);
25828
25829                         wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
25830                         wlc_phy_stopplayback_nphy(pi);
25831                 }
25832
25833                 if (((cal_type == 1) || (cal_type == 2))
25834                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
25835
25836                         if (rx_core == PHY_CORE_1) {
25837
25838                                 if (rxcore_state == 1) {
25839                                         wlc_phy_rxcore_setstate_nphy((wlc_phy_t
25840                                                                       *) pi, 3);
25841                                 }
25842
25843                                 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
25844                                                             1);
25845
25846                                 best_rccal[rx_core] =
25847                                     wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
25848                                 pi->nphy_rccal_value = best_rccal[rx_core];
25849
25850                                 if (rxcore_state == 1) {
25851                                         wlc_phy_rxcore_setstate_nphy((wlc_phy_t
25852                                                                       *) pi,
25853                                                                      rxcore_state);
25854                                 }
25855                         }
25856                 }
25857
25858                 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
25859
25860                 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
25861                 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
25862         }
25863
25864         if ((cal_type == 1) || (cal_type == 2)) {
25865
25866                 best_rccal[0] = best_rccal[1];
25867                 write_radio_reg(pi,
25868                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25869                                  RADIO_2056_RX0), (best_rccal[0] | 0x80));
25870
25871                 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
25872                         rxlpf_rccal_hpc =
25873                             (((int)best_rccal[rx_core] - 12) >> 1) + 10;
25874                         txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
25875
25876                         if (PHY_IPA(pi)) {
25877                                 txlpf_rccal_lpc += IS40MHZ(pi) ? 24 : 12;
25878                                 txlpf_idac = IS40MHZ(pi) ? 0x0e : 0x13;
25879                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
25880                                                  TXLPF_IDAC_4, txlpf_idac);
25881                         }
25882
25883                         rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31), 0);
25884                         txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31), 0);
25885
25886                         write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
25887                                              ((rx_core ==
25888                                                PHY_CORE_0) ? RADIO_2056_RX0 :
25889                                               RADIO_2056_RX1)),
25890                                         (rxlpf_rccal_hpc | 0x80));
25891
25892                         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
25893                                              ((rx_core ==
25894                                                PHY_CORE_0) ? RADIO_2056_TX0 :
25895                                               RADIO_2056_TX1)),
25896                                         (txlpf_rccal_lpc | 0x80));
25897                 }
25898         }
25899
25900         write_phy_reg(pi, 0x01, orig_BBConfig);
25901
25902         wlc_phy_resetcca_nphy(pi);
25903
25904         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25905                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
25906                                                      NPHY_REV7_RfctrlOverride_cmd_rxgain,
25907                                                      0, 0x3, 1);
25908         } else {
25909                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
25910         }
25911         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
25912
25913         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
25914                                  gain_save);
25915
25916         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25917                 pi->phyhang_avoid = phyhang_avoid_state;
25918         }
25919
25920         wlc_phy_stay_in_carriersearch_nphy(pi, false);
25921
25922         return BCME_OK;
25923 }
25924
25925 static int
25926 wlc_phy_cal_rxiq_nphy_rev2(phy_info_t *pi, nphy_txgains_t target_gain,
25927                            bool debug)
25928 {
25929         phy_iq_est_t est[PHY_CORE_MAX];
25930         u8 core_num, rx_core, tx_core;
25931         u16 lna_vals[] = { 0x3, 0x3, 0x1 };
25932         u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
25933         u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
25934         s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
25935         s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
25936         u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
25937         u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
25938         u16 num_samps;
25939         u32 i_pwr, q_pwr, tot_pwr[3];
25940         u8 gain_pass, use_hpf_num;
25941         u16 mask, val1, val2;
25942         u16 core_no;
25943         u16 gain_save[2];
25944         u16 cal_gain[2];
25945         nphy_iqcal_params_t cal_params[2];
25946         u8 phy_bw;
25947         int bcmerror = BCME_OK;
25948         bool first_playtone = true;
25949
25950         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25951
25952         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25953
25954                 wlc_phy_reapply_txcal_coeffs_nphy(pi);
25955         }
25956
25957         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25958
25959         for (core_no = 0; core_no <= 1; core_no++) {
25960                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25961                                               &cal_params[core_no]);
25962                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25963         }
25964
25965         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25966
25967         num_samps = 1024;
25968         desired_log2_pwr = 13;
25969
25970         for (core_num = 0; core_num < 2; core_num++) {
25971
25972                 rx_core = core_num;
25973                 tx_core = 1 - core_num;
25974
25975                 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
25976                 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25977                                                 0xa6 : 0xa7);
25978                 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
25979                 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25980                                                  0x91 : 0x92);
25981                 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
25982                                                  0x91 : 0x92);
25983
25984                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
25985                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25986
25987                 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
25988                            ((0x1 << 1) | (0x1 << 2)));
25989                 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
25990
25991                 if (((pi->nphy_rxcalparams) & 0xff000000)) {
25992
25993                         write_phy_reg(pi,
25994                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
25995                                       (CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 :
25996                                        0x110));
25997                 } else {
25998
25999                         write_phy_reg(pi,
26000                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
26001                                       (CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 :
26002                                        0x120));
26003                 }
26004
26005                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
26006                               (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
26007                                0x114));
26008
26009                 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
26010                 if (rx_core == PHY_CORE_0) {
26011                         val1 = RADIO_2055_COUPLE_RX_MASK;
26012                         val2 = RADIO_2055_COUPLE_TX_MASK;
26013                 } else {
26014                         val1 = RADIO_2055_COUPLE_TX_MASK;
26015                         val2 = RADIO_2055_COUPLE_RX_MASK;
26016                 }
26017
26018                 if ((pi->nphy_rxcalparams & 0x10000)) {
26019                         mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
26020                                       val1);
26021                         mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
26022                                       val2);
26023                 }
26024
26025                 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
26026
26027                         if (debug)
26028                                 mdelay(WAIT_FOR_SCOPE);
26029
26030                         if (gain_pass < 3) {
26031                                 curr_lna = lna_vals[gain_pass];
26032                                 curr_hpf1 = hpf1_vals[gain_pass];
26033                                 curr_hpf2 = hpf2_vals[gain_pass];
26034                         } else {
26035
26036                                 if (tot_pwr[1] > 10000) {
26037                                         curr_lna = lna_vals[2];
26038                                         curr_hpf1 = hpf1_vals[2];
26039                                         curr_hpf2 = hpf2_vals[2];
26040                                         use_hpf_num = 1;
26041                                         curr_hpf = curr_hpf1;
26042                                         actual_log2_pwr =
26043                                             wlc_phy_nbits(tot_pwr[2]);
26044                                 } else {
26045                                         if (tot_pwr[0] > 10000) {
26046                                                 curr_lna = lna_vals[1];
26047                                                 curr_hpf1 = hpf1_vals[1];
26048                                                 curr_hpf2 = hpf2_vals[1];
26049                                                 use_hpf_num = 1;
26050                                                 curr_hpf = curr_hpf1;
26051                                                 actual_log2_pwr =
26052                                                     wlc_phy_nbits(tot_pwr[1]);
26053                                         } else {
26054                                                 curr_lna = lna_vals[0];
26055                                                 curr_hpf1 = hpf1_vals[0];
26056                                                 curr_hpf2 = hpf2_vals[0];
26057                                                 use_hpf_num = 2;
26058                                                 curr_hpf = curr_hpf2;
26059                                                 actual_log2_pwr =
26060                                                     wlc_phy_nbits(tot_pwr[0]);
26061                                         }
26062                                 }
26063
26064                                 hpf_change = desired_log2_pwr - actual_log2_pwr;
26065                                 curr_hpf += hpf_change;
26066                                 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
26067                                 if (use_hpf_num == 1) {
26068                                         curr_hpf1 = curr_hpf;
26069                                 } else {
26070                                         curr_hpf2 = curr_hpf;
26071                                 }
26072                         }
26073
26074                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
26075                                                      ((curr_hpf2 << 8) |
26076                                                       (curr_hpf1 << 4) |
26077                                                       (curr_lna << 2)), 0x3, 0);
26078                         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
26079
26080                         wlc_phy_stopplayback_nphy(pi);
26081
26082                         if (first_playtone) {
26083                                 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
26084                                                                 (u16) (pi->
26085                                                                           nphy_rxcalparams
26086                                                                           &
26087                                                                           0xffff),
26088                                                                 0, 0, true);
26089                                 first_playtone = false;
26090                         } else {
26091                                 phy_bw =
26092                                     (CHSPEC_IS40(pi->radio_chanspec)) ? 40 : 20;
26093                                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
26094                                                         0, 0, 0, true);
26095                         }
26096
26097                         if (bcmerror == BCME_OK) {
26098                                 if (gain_pass < 3) {
26099
26100                                         wlc_phy_rx_iq_est_nphy(pi, est,
26101                                                                num_samps, 32,
26102                                                                0);
26103                                         i_pwr =
26104                                             (est[rx_core].i_pwr +
26105                                              num_samps / 2) / num_samps;
26106                                         q_pwr =
26107                                             (est[rx_core].q_pwr +
26108                                              num_samps / 2) / num_samps;
26109                                         tot_pwr[gain_pass] = i_pwr + q_pwr;
26110                                 } else {
26111
26112                                         wlc_phy_calc_rx_iq_comp_nphy(pi,
26113                                                                      (1 <<
26114                                                                       rx_core));
26115                                 }
26116
26117                                 wlc_phy_stopplayback_nphy(pi);
26118                         }
26119
26120                         if (bcmerror != BCME_OK)
26121                                 break;
26122                 }
26123
26124                 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
26125                 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
26126
26127                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
26128                               0x92, orig_RfctrlIntcTx);
26129                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
26130                               0x92, orig_RfctrlIntcRx);
26131                 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
26132                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
26133                               0xa7, orig_AfectrlCore);
26134                 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
26135
26136                 if (bcmerror != BCME_OK)
26137                         break;
26138         }
26139
26140         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
26141         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
26142
26143         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26144                                  gain_save);
26145
26146         wlc_phy_stay_in_carriersearch_nphy(pi, false);
26147
26148         return bcmerror;
26149 }
26150
26151 int
26152 wlc_phy_cal_rxiq_nphy(phy_info_t *pi, nphy_txgains_t target_gain,
26153                       u8 cal_type, bool debug)
26154 {
26155         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26156
26157                 cal_type = 0;
26158         }
26159         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26160                 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
26161                                                   debug);
26162         } else {
26163                 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
26164         }
26165 }
26166
26167 static void wlc_phy_extpa_set_tx_digi_filts_nphy(phy_info_t *pi)
26168 {
26169         int j, type = 2;
26170         u16 addr_offset = 0x2c5;
26171
26172         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26173                 write_phy_reg(pi, addr_offset + j,
26174                               NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
26175         }
26176 }
26177
26178 static void wlc_phy_ipa_set_tx_digi_filts_nphy(phy_info_t *pi)
26179 {
26180         int j, type;
26181         u16 addr_offset[] = { 0x186, 0x195,
26182                 0x2c5
26183         };
26184
26185         for (type = 0; type < 3; type++) {
26186                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26187                         write_phy_reg(pi, addr_offset[type] + j,
26188                                       NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
26189                 }
26190         }
26191
26192         if (IS40MHZ(pi)) {
26193                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26194                         write_phy_reg(pi, 0x186 + j,
26195                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
26196                 }
26197         } else {
26198                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26199                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26200                                 write_phy_reg(pi, 0x186 + j,
26201                                               NPHY_IPA_REV4_txdigi_filtcoeffs[5]
26202                                               [j]);
26203                         }
26204                 }
26205
26206                 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
26207                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26208                                 write_phy_reg(pi, 0x2c5 + j,
26209                                               NPHY_IPA_REV4_txdigi_filtcoeffs[6]
26210                                               [j]);
26211                         }
26212                 }
26213         }
26214 }
26215
26216 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(phy_info_t *pi)
26217 {
26218         int j;
26219
26220         if (IS40MHZ(pi)) {
26221                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26222                         write_phy_reg(pi, 0x195 + j,
26223                                       NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
26224                 }
26225         } else {
26226                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26227                         write_phy_reg(pi, 0x186 + j,
26228                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
26229                 }
26230         }
26231 }
26232
26233 static u16 wlc_phy_ipa_get_bbmult_nphy(phy_info_t *pi)
26234 {
26235         u16 m0m1;
26236
26237         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
26238
26239         return m0m1;
26240 }
26241
26242 static void wlc_phy_ipa_set_bbmult_nphy(phy_info_t *pi, u8 m0, u8 m1)
26243 {
26244         u16 m0m1 = (u16) ((m0 << 8) | m1);
26245
26246         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
26247         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
26248 }
26249
26250 static u32 *wlc_phy_get_ipa_gaintbl_nphy(phy_info_t *pi)
26251 {
26252         u32 *tx_pwrctrl_tbl = NULL;
26253
26254         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26255
26256                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26257
26258                         if ((pi->pubpi.radiorev == 4)
26259                             || (pi->pubpi.radiorev == 6)) {
26260
26261                                 tx_pwrctrl_tbl =
26262                                     nphy_tpc_txgain_ipa_2g_2057rev4n6;
26263                         } else if (pi->pubpi.radiorev == 3) {
26264
26265                                 tx_pwrctrl_tbl =
26266                                     nphy_tpc_txgain_ipa_2g_2057rev3;
26267                         } else if (pi->pubpi.radiorev == 5) {
26268
26269                                 tx_pwrctrl_tbl =
26270                                     nphy_tpc_txgain_ipa_2g_2057rev5;
26271                         } else if ((pi->pubpi.radiorev == 7)
26272                                    || (pi->pubpi.radiorev == 8)) {
26273
26274                                 tx_pwrctrl_tbl =
26275                                     nphy_tpc_txgain_ipa_2g_2057rev7;
26276                         } else {
26277                                 ASSERT(0);
26278                         }
26279
26280                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
26281
26282                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
26283                         if (pi->sh->chip == BCM47162_CHIP_ID) {
26284
26285                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
26286                         }
26287
26288                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
26289
26290                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
26291                 } else {
26292
26293                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
26294                 }
26295
26296         } else {
26297
26298                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26299                         if ((pi->pubpi.radiorev == 3) ||
26300                             (pi->pubpi.radiorev == 4) ||
26301                             (pi->pubpi.radiorev == 6)) {
26302
26303                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
26304                         } else if ((pi->pubpi.radiorev == 7)
26305                                    || (pi->pubpi.radiorev == 8)) {
26306
26307                                 tx_pwrctrl_tbl =
26308                                     nphy_tpc_txgain_ipa_5g_2057rev7;
26309                         } else {
26310                                 ASSERT(0);
26311                         }
26312
26313                 } else {
26314                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
26315                 }
26316         }
26317
26318         return tx_pwrctrl_tbl;
26319 }
26320
26321 static void
26322 wlc_phy_papd_cal_setup_nphy(phy_info_t *pi, nphy_papd_restore_state *state,
26323                             u8 core)
26324 {
26325         s32 tone_freq;
26326         u8 off_core;
26327         u16 mixgain = 0;
26328
26329         off_core = core ^ 0x1;
26330         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26331
26332                 if (NREV_IS(pi->pubpi.phy_rev, 7)
26333                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
26334                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26335                                                           wlc_phy_read_lpf_bw_ctl_nphy
26336                                                           (pi, 0), 0, 0,
26337                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26338                 }
26339
26340                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26341                         if (pi->pubpi.radiorev == 5) {
26342                                 mixgain = (core == 0) ? 0x20 : 0x00;
26343
26344                         } else if ((pi->pubpi.radiorev == 7)
26345                                    || (pi->pubpi.radiorev == 8)) {
26346
26347                                 mixgain = 0x00;
26348
26349                         } else if ((pi->pubpi.radiorev <= 4)
26350                                    || (pi->pubpi.radiorev == 6)) {
26351
26352                                 mixgain = 0x00;
26353                         } else {
26354                                 ASSERT(0);
26355                         }
26356
26357                 } else {
26358                         if ((pi->pubpi.radiorev == 4) ||
26359                             (pi->pubpi.radiorev == 6)) {
26360
26361                                 mixgain = 0x50;
26362                         } else if ((pi->pubpi.radiorev == 3)
26363                                    || (pi->pubpi.radiorev == 7)
26364                                    || (pi->pubpi.radiorev == 8)) {
26365
26366                                 mixgain = 0x0;
26367                         } else {
26368                                 ASSERT(0);
26369                         }
26370                 }
26371
26372                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
26373                                                   mixgain, (1 << core), 0,
26374                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26375
26376                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26377                                                      NPHY_REV7_RfctrlOverride_cmd_tx_pu,
26378                                                      1, (1 << core), 0);
26379                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26380                                                      NPHY_REV7_RfctrlOverride_cmd_tx_pu,
26381                                                      0, (1 << off_core), 0);
26382
26383                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26384                                                   0, 0x3, 0,
26385                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26386                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
26387                                                   (1 << core), 0,
26388                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26389                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
26390                                                   (1 << core), 0,
26391                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26392                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
26393                                                   (1 << core), 0,
26394                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26395                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
26396                                                   (1 << core), 0,
26397                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26398                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
26399                                                   (1 << core), 0,
26400                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26401                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
26402                                                   (1 << core), 0,
26403                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26404                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
26405                                                   (1 << core), 0,
26406                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26407
26408                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
26409                                                   0, (1 << core), 0,
26410                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26411                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
26412                                                   (1 << core), 0,
26413                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26414
26415                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
26416                                                     0xa6 : 0xa7);
26417                 state->afeoverride[core] =
26418                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
26419                 state->afectrl[off_core] =
26420                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
26421                 state->afeoverride[off_core] =
26422                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
26423
26424                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
26425                             (0x1 << 2), 0);
26426                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
26427                                  0xa5), (0x1 << 2), (0x1 << 2));
26428
26429                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
26430                             (0x1 << 2), (0x1 << 2));
26431                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
26432                                  0x8f), (0x1 << 2), (0x1 << 2));
26433
26434                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26435                         state->pwrup[core] =
26436                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26437                                             TXRXCOUPLE_2G_PWRUP);
26438                         state->atten[core] =
26439                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26440                                             TXRXCOUPLE_2G_ATTEN);
26441                         state->pwrup[off_core] =
26442                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26443                                             TXRXCOUPLE_2G_PWRUP);
26444                         state->atten[off_core] =
26445                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26446                                             TXRXCOUPLE_2G_ATTEN);
26447
26448                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26449                                          TXRXCOUPLE_2G_PWRUP, 0xc);
26450
26451                         if ((pi->pubpi.radiorev == 3) ||
26452                             (pi->pubpi.radiorev == 4) ||
26453                             (pi->pubpi.radiorev == 6)) {
26454
26455                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26456                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
26457
26458                         } else if (pi->pubpi.radiorev == 5) {
26459
26460                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26461                                                  TXRXCOUPLE_2G_ATTEN,
26462                                                  (core == 0) ? 0xf7 : 0xf2);
26463
26464                         } else if ((pi->pubpi.radiorev == 7)
26465                                    || (pi->pubpi.radiorev == 8)) {
26466
26467                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26468                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
26469
26470                         } else {
26471                                 ASSERT(0);
26472                         }
26473
26474                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26475                                          TXRXCOUPLE_2G_PWRUP, 0x0);
26476                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26477                                          TXRXCOUPLE_2G_ATTEN, 0xff);
26478
26479                 } else {
26480                         state->pwrup[core] =
26481                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26482                                             TXRXCOUPLE_5G_PWRUP);
26483                         state->atten[core] =
26484                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26485                                             TXRXCOUPLE_5G_ATTEN);
26486                         state->pwrup[off_core] =
26487                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26488                                             TXRXCOUPLE_5G_PWRUP);
26489                         state->atten[off_core] =
26490                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26491                                             TXRXCOUPLE_5G_ATTEN);
26492
26493                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26494                                          TXRXCOUPLE_5G_PWRUP, 0xc);
26495
26496                         if ((pi->pubpi.radiorev == 7)
26497                             || (pi->pubpi.radiorev == 8)) {
26498
26499                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26500                                                  TXRXCOUPLE_5G_ATTEN, 0xf4);
26501
26502                         } else {
26503                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26504                                                  TXRXCOUPLE_5G_ATTEN, 0xf0);
26505                         }
26506
26507                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26508                                          TXRXCOUPLE_5G_PWRUP, 0x0);
26509                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26510                                          TXRXCOUPLE_5G_ATTEN, 0xff);
26511                 }
26512
26513                 tone_freq = 4000;
26514
26515                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
26516
26517                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26518                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
26519
26520                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26521                             0x2a4, (0x1 << 13), (1) << 13);
26522
26523                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
26524                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
26525
26526                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
26527                             0x2a4, (0x1 << 13), (0) << 13);
26528
26529         } else {
26530
26531                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
26532
26533                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
26534
26535                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
26536
26537                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
26538                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
26539
26540                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
26541                                                     0xa6 : 0xa7);
26542                 state->afeoverride[core] =
26543                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
26544
26545                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
26546                             (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
26547                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
26548                                  0xa5),
26549                             (0x1 << 0) |
26550                             (0x1 << 1) |
26551                             (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
26552
26553                 state->vga_master[core] =
26554                     READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
26555                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
26556                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26557                         state->fbmix[core] =
26558                             READ_RADIO_REG2(pi, RADIO_2056, RX, core,
26559                                             TXFBMIX_G);
26560                         state->intpa_master[core] =
26561                             READ_RADIO_REG2(pi, RADIO_2056, TX, core,
26562                                             INTPAG_MASTER);
26563
26564                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
26565                                          0x03);
26566                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26567                                          INTPAG_MASTER, 0x04);
26568                 } else {
26569                         state->fbmix[core] =
26570                             READ_RADIO_REG2(pi, RADIO_2056, RX, core,
26571                                             TXFBMIX_A);
26572                         state->intpa_master[core] =
26573                             READ_RADIO_REG2(pi, RADIO_2056, TX, core,
26574                                             INTPAA_MASTER);
26575
26576                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
26577                                          0x03);
26578                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26579                                          INTPAA_MASTER, 0x04);
26580
26581                 }
26582
26583                 tone_freq = 4000;
26584
26585                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
26586
26587                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26588                             0x29b, (0x1 << 0), (1) << 0);
26589
26590                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
26591                             0x29b, (0x1 << 0), (0) << 0);
26592
26593                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
26594         }
26595 }
26596
26597 static void
26598 wlc_phy_papd_cal_cleanup_nphy(phy_info_t *pi, nphy_papd_restore_state *state)
26599 {
26600         u8 core;
26601
26602         wlc_phy_stopplayback_nphy(pi);
26603
26604         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26605
26606                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26607
26608                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26609                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26610                                                  TXRXCOUPLE_2G_PWRUP, 0);
26611                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26612                                                  TXRXCOUPLE_2G_ATTEN,
26613                                                  state->atten[core]);
26614                         } else {
26615                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26616                                                  TXRXCOUPLE_5G_PWRUP, 0);
26617                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26618                                                  TXRXCOUPLE_5G_ATTEN,
26619                                                  state->atten[core]);
26620                         }
26621                 }
26622
26623                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6)) {
26624                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
26625                                                           1, 0x3, 0,
26626                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
26627                 } else {
26628                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
26629                                                           0, 0x3, 1,
26630                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
26631                 }
26632                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
26633                                                   0, 0x3, 1,
26634                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26635                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
26636                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26637                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
26638                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26639                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
26640                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26641                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
26642                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26643                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
26644                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26645                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
26646                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26647                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
26648                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26649                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
26650                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26651                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
26652                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26653                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
26654                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26655                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
26656                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26657                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
26658                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26659                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
26660                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26661                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
26662                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26663                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
26664                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26665
26666                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26667
26668                         write_phy_reg(pi, (core == PHY_CORE_0) ?
26669                                       0xa6 : 0xa7, state->afectrl[core]);
26670                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
26671                                       0xa5, state->afeoverride[core]);
26672                 }
26673
26674                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
26675                                             (state->mm & 0xff));
26676
26677                 if (NREV_IS(pi->pubpi.phy_rev, 7)
26678                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
26679                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7), 0, 0,
26680                                                           1,
26681                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26682                 }
26683         } else {
26684
26685                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
26686                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
26687                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
26688
26689                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
26690                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
26691
26692                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26693
26694                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
26695                                          state->vga_master[core]);
26696                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26697                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
26698                                                  TXFBMIX_G, state->fbmix[core]);
26699                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26700                                                  INTPAG_MASTER,
26701                                                  state->intpa_master[core]);
26702                         } else {
26703                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
26704                                                  TXFBMIX_A, state->fbmix[core]);
26705                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26706                                                  INTPAA_MASTER,
26707                                                  state->intpa_master[core]);
26708                         }
26709
26710                         write_phy_reg(pi, (core == PHY_CORE_0) ?
26711                                       0xa6 : 0xa7, state->afectrl[core]);
26712                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
26713                                       0xa5, state->afeoverride[core]);
26714                 }
26715
26716                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
26717                                             (state->mm & 0xff));
26718
26719                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
26720         }
26721 }
26722
26723 static void
26724 wlc_phy_a1_nphy(phy_info_t *pi, u8 core, u32 winsz, u32 start,
26725                 u32 end)
26726 {
26727         u32 *buf, *src, *dst, sz;
26728
26729         sz = end - start + 1;
26730         ASSERT(end > start);
26731         ASSERT(end < NPHY_PAPD_EPS_TBL_SIZE);
26732
26733         buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
26734         if (NULL == buf) {
26735                 return;
26736         }
26737
26738         src = buf;
26739         dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
26740
26741         wlc_phy_table_read_nphy(pi,
26742                                 (core ==
26743                                  PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
26744                                  NPHY_TBL_ID_EPSILONTBL1),
26745                                 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
26746
26747         do {
26748                 u32 phy_a1, phy_a2;
26749                 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
26750
26751                 phy_a1 = end - min(end, (winsz >> 1));
26752                 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1, end + (winsz >> 1));
26753                 phy_a3 = phy_a2 - phy_a1 + 1;
26754                 phy_a6 = 0;
26755                 phy_a7 = 0;
26756
26757                 do {
26758                         wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
26759                                                     &phy_a5);
26760                         phy_a6 += phy_a4;
26761                         phy_a7 += phy_a5;
26762                 } while (phy_a2-- != phy_a1);
26763
26764                 phy_a6 /= phy_a3;
26765                 phy_a7 /= phy_a3;
26766                 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
26767         } while (end-- != start);
26768
26769         wlc_phy_table_write_nphy(pi,
26770                                  (core ==
26771                                   PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
26772                                  NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
26773
26774         kfree(buf);
26775 }
26776
26777 static void
26778 wlc_phy_a2_nphy(phy_info_t *pi, nphy_ipa_txcalgains_t *txgains,
26779                 phy_cal_mode_t cal_mode, u8 core)
26780 {
26781         u16 phy_a1, phy_a2, phy_a3;
26782         u16 phy_a4, phy_a5;
26783         bool phy_a6;
26784         u8 phy_a7, m[2];
26785         u32 phy_a8 = 0;
26786         nphy_txgains_t phy_a9;
26787
26788         if (NREV_LT(pi->pubpi.phy_rev, 3))
26789                 return;
26790
26791         phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
26792
26793         ASSERT((cal_mode == CAL_FULL) || (cal_mode == CAL_GCTRL)
26794                || (cal_mode == CAL_SOFT));
26795         phy_a6 = ((cal_mode == CAL_GCTRL)
26796                   || (cal_mode == CAL_SOFT)) ? true : false;
26797
26798         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26799
26800                 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
26801
26802                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26803                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
26804                                   (phy_a9.txgm[core] << 12) |
26805                                   (phy_a9.pga[core] << 8) |
26806                                   (txgains->gains.pad[core] << 3) |
26807                                   (phy_a9.ipa[core]));
26808                 } else {
26809                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
26810                                   (phy_a9.txgm[core] << 12) |
26811                                   (txgains->gains.pga[core] << 8) |
26812                                   (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
26813                 }
26814
26815                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26816                                                      NPHY_REV7_RfctrlOverride_cmd_txgain,
26817                                                      phy_a5, (1 << core), 0);
26818
26819                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26820                         if ((pi->pubpi.radiorev <= 4)
26821                             || (pi->pubpi.radiorev == 6)) {
26822
26823                                 m[core] = IS40MHZ(pi) ? 60 : 79;
26824                         } else {
26825
26826                                 m[core] = IS40MHZ(pi) ? 45 : 64;
26827                         }
26828
26829                 } else {
26830                         m[core] = IS40MHZ(pi) ? 75 : 107;
26831                 }
26832
26833                 m[phy_a7] = 0;
26834                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
26835
26836                 phy_a2 = 63;
26837
26838                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26839                         if (pi->sh->chip == BCM6362_CHIP_ID) {
26840                                 phy_a1 = 35;
26841                                 phy_a3 = 35;
26842                         } else if ((pi->pubpi.radiorev == 4)
26843                                    || (pi->pubpi.radiorev == 6)) {
26844                                 phy_a1 = 30;
26845                                 phy_a3 = 30;
26846                         } else {
26847                                 phy_a1 = 25;
26848                                 phy_a3 = 25;
26849                         }
26850                 } else {
26851                         if ((pi->pubpi.radiorev == 5)
26852                             || (pi->pubpi.radiorev == 7)
26853                             || (pi->pubpi.radiorev == 8)) {
26854                                 phy_a1 = 25;
26855                                 phy_a3 = 25;
26856                         } else {
26857                                 phy_a1 = 35;
26858                                 phy_a3 = 35;
26859                         }
26860                 }
26861
26862                 if (cal_mode == CAL_GCTRL) {
26863                         if ((pi->pubpi.radiorev == 5)
26864                             && (CHSPEC_IS2G(pi->radio_chanspec))) {
26865                                 phy_a1 = 55;
26866                         } else if (((pi->pubpi.radiorev == 7) &&
26867                                     (CHSPEC_IS2G(pi->radio_chanspec))) ||
26868                                    ((pi->pubpi.radiorev == 8) &&
26869                                     (CHSPEC_IS2G(pi->radio_chanspec)))) {
26870                                 phy_a1 = 60;
26871                         } else {
26872                                 phy_a1 = 63;
26873                         }
26874
26875                 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
26876
26877                         phy_a1 = 35;
26878                         phy_a3 = 35;
26879                 }
26880
26881                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26882                             0x29b, (0x1 << 0), (1) << 0);
26883
26884                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
26885                             0x29b, (0x1 << 0), (0) << 0);
26886
26887                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26888                             0x2a4, (0x1 << 13), (1) << 13);
26889
26890                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
26891                             0x2a4, (0x1 << 13), (0) << 13);
26892
26893                 write_phy_reg(pi, 0x2a1, 0x80);
26894                 write_phy_reg(pi, 0x2a2, 0x100);
26895
26896                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26897                             0x2a4, (0x7 << 4), (11) << 4);
26898
26899                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26900                             0x2a4, (0x7 << 8), (11) << 8);
26901
26902                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26903                             0x2a4, (0x7 << 0), (0x3) << 0);
26904
26905                 write_phy_reg(pi, 0x2e5, 0x20);
26906
26907                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
26908
26909                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
26910
26911                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
26912
26913                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26914                                                   1, ((core == 0) ? 1 : 2), 0,
26915                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26916                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26917                                                   0, ((core == 0) ? 2 : 1), 0,
26918                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26919
26920                 write_phy_reg(pi, 0x2be, 1);
26921                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
26922
26923                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26924                                                   0, 0x3, 0,
26925                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26926
26927                 wlc_phy_table_write_nphy(pi,
26928                                          (core ==
26929                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
26930                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
26931                                          32, &phy_a8);
26932
26933                 if (cal_mode != CAL_GCTRL) {
26934                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26935                                 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
26936                         }
26937                 }
26938
26939                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26940                                                      NPHY_REV7_RfctrlOverride_cmd_txgain,
26941                                                      phy_a5, (1 << core), 1);
26942
26943         } else {
26944
26945                 if (txgains) {
26946                         if (txgains->useindex) {
26947                                 phy_a4 = 15 - ((txgains->index) >> 3);
26948                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26949                                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
26950                                                 phy_a5 = 0x00f7 | (phy_a4 << 8);
26951
26952                                                 if (pi->sh->chip ==
26953                                                     BCM47162_CHIP_ID) {
26954                                                         phy_a5 =
26955                                                             0x10f7 | (phy_a4 <<
26956                                                                       8);
26957                                                 }
26958                                         } else
26959                                             if (NREV_IS(pi->pubpi.phy_rev, 5))
26960                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
26961                                         else
26962                                                 phy_a5 = 0x50f7 | (phy_a4 << 8);
26963                                 } else {
26964                                         phy_a5 = 0x70f7 | (phy_a4 << 8);
26965                                 }
26966                                 wlc_phy_rfctrl_override_nphy(pi,
26967                                                              (0x1 << 13),
26968                                                              phy_a5,
26969                                                              (1 << core), 0);
26970                         } else {
26971                                 wlc_phy_rfctrl_override_nphy(pi,
26972                                                              (0x1 << 13),
26973                                                              0x5bf7,
26974                                                              (1 << core), 0);
26975                         }
26976                 }
26977
26978                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26979                         m[core] = IS40MHZ(pi) ? 45 : 64;
26980                 } else {
26981                         m[core] = IS40MHZ(pi) ? 75 : 107;
26982                 }
26983
26984                 m[phy_a7] = 0;
26985                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
26986
26987                 phy_a2 = 63;
26988
26989                 if (cal_mode == CAL_FULL) {
26990                         phy_a1 = 25;
26991                         phy_a3 = 25;
26992                 } else if (cal_mode == CAL_SOFT) {
26993                         phy_a1 = 25;
26994                         phy_a3 = 25;
26995                 } else if (cal_mode == CAL_GCTRL) {
26996                         phy_a1 = 63;
26997                         phy_a3 = 25;
26998                 } else {
26999
27000                         phy_a1 = 25;
27001                         phy_a3 = 25;
27002                 }
27003
27004                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27005                             0x29b, (0x1 << 0), (1) << 0);
27006
27007                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
27008                             0x29b, (0x1 << 0), (0) << 0);
27009
27010                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
27011                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27012                                     0x2a4, (0x1 << 13), (1) << 13);
27013
27014                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
27015                                     0x2a4, (0x1 << 13), (0) << 13);
27016
27017                         write_phy_reg(pi, 0x2a1, 0x20);
27018                         write_phy_reg(pi, 0x2a2, 0x60);
27019
27020                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27021                                     0x2a4, (0xf << 4), (9) << 4);
27022
27023                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27024                                     0x2a4, (0xf << 8), (9) << 8);
27025
27026                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27027                                     0x2a4, (0xf << 0), (0x2) << 0);
27028
27029                         write_phy_reg(pi, 0x2e5, 0x20);
27030                 } else {
27031                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27032                                     0x2a4, (0x1 << 11), (1) << 11);
27033
27034                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
27035                                     0x2a4, (0x1 << 11), (0) << 11);
27036
27037                         write_phy_reg(pi, 0x2a1, 0x80);
27038                         write_phy_reg(pi, 0x2a2, 0x600);
27039
27040                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27041                                     0x2a4, (0x7 << 4), (0) << 4);
27042
27043                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27044                                     0x2a4, (0x7 << 8), (0) << 8);
27045
27046                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27047                                     0x2a4, (0x7 << 0), (0x3) << 0);
27048
27049                         mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
27050
27051                 }
27052
27053                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
27054
27055                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
27056
27057                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
27058
27059                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
27060
27061                 write_phy_reg(pi, 0x2be, 1);
27062                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
27063
27064                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
27065
27066                 wlc_phy_table_write_nphy(pi,
27067                                          (core ==
27068                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
27069                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
27070                                          32, &phy_a8);
27071
27072                 if (cal_mode != CAL_GCTRL) {
27073                         wlc_phy_a1_nphy(pi, core, 5, 0, 40);
27074                 }
27075         }
27076 }
27077
27078 static u8 wlc_phy_a3_nphy(phy_info_t *pi, u8 start_gain, u8 core)
27079 {
27080         int phy_a1;
27081         int phy_a2;
27082         bool phy_a3;
27083         nphy_ipa_txcalgains_t phy_a4;
27084         bool phy_a5 = false;
27085         bool phy_a6 = true;
27086         s32 phy_a7, phy_a8;
27087         u32 phy_a9;
27088         int phy_a10;
27089         bool phy_a11 = false;
27090         int phy_a12;
27091         u8 phy_a13 = 0;
27092         u8 phy_a14;
27093         u8 *phy_a15 = NULL;
27094
27095         phy_a4.useindex = true;
27096         phy_a12 = start_gain;
27097
27098         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27099
27100                 phy_a2 = 20;
27101                 phy_a1 = 1;
27102
27103                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
27104                         if (pi->pubpi.radiorev == 5) {
27105
27106                                 phy_a15 = pad_gain_codes_used_2057rev5;
27107                                 phy_a13 = sizeof(pad_gain_codes_used_2057rev5) /
27108                                     sizeof(pad_gain_codes_used_2057rev5[0]) - 1;
27109
27110                         } else if ((pi->pubpi.radiorev == 7)
27111                                    || (pi->pubpi.radiorev == 8)) {
27112
27113                                 phy_a15 = pad_gain_codes_used_2057rev7;
27114                                 phy_a13 = sizeof(pad_gain_codes_used_2057rev7) /
27115                                     sizeof(pad_gain_codes_used_2057rev7[0]) - 1;
27116
27117                         } else {
27118
27119                                 phy_a15 = pad_all_gain_codes_2057;
27120                                 phy_a13 = sizeof(pad_all_gain_codes_2057) /
27121                                     sizeof(pad_all_gain_codes_2057[0]) - 1;
27122                         }
27123
27124                 } else {
27125
27126                         phy_a15 = pga_all_gain_codes_2057;
27127                         phy_a13 = sizeof(pga_all_gain_codes_2057) /
27128                             sizeof(pga_all_gain_codes_2057[0]) - 1;
27129                 }
27130
27131                 phy_a14 = 0;
27132
27133                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
27134                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27135                                 phy_a4.gains.pad[core] =
27136                                     (u16) phy_a15[phy_a12];
27137                         } else {
27138                                 phy_a4.gains.pga[core] =
27139                                     (u16) phy_a15[phy_a12];
27140                         }
27141
27142                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
27143
27144                         wlc_phy_table_read_nphy(pi,
27145                                                 (core ==
27146                                                  PHY_CORE_0 ?
27147                                                  NPHY_TBL_ID_EPSILONTBL0 :
27148                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
27149                                                 63, 32, &phy_a9);
27150
27151                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
27152
27153                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
27154                                   (phy_a8 == 4095) || (phy_a8 == -4096));
27155
27156                         if (!phy_a6 && (phy_a3 != phy_a5)) {
27157                                 if (!phy_a3) {
27158                                         phy_a12 -= (u8) phy_a1;
27159                                 }
27160                                 phy_a11 = true;
27161                                 break;
27162                         }
27163
27164                         if (phy_a3)
27165                                 phy_a12 += (u8) phy_a1;
27166                         else
27167                                 phy_a12 -= (u8) phy_a1;
27168
27169                         if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
27170                                 if (phy_a12 < phy_a14) {
27171                                         phy_a12 = phy_a14;
27172                                 } else {
27173                                         phy_a12 = phy_a13;
27174                                 }
27175                                 phy_a11 = true;
27176                                 break;
27177                         }
27178
27179                         phy_a6 = false;
27180                         phy_a5 = phy_a3;
27181                 }
27182
27183         } else {
27184                 phy_a2 = 10;
27185                 phy_a1 = 8;
27186                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
27187                         phy_a4.index = (u8) phy_a12;
27188                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
27189
27190                         wlc_phy_table_read_nphy(pi,
27191                                                 (core ==
27192                                                  PHY_CORE_0 ?
27193                                                  NPHY_TBL_ID_EPSILONTBL0 :
27194                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
27195                                                 63, 32, &phy_a9);
27196
27197                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
27198
27199                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
27200                                   (phy_a8 == 4095) || (phy_a8 == -4096));
27201
27202                         if (!phy_a6 && (phy_a3 != phy_a5)) {
27203                                 if (!phy_a3) {
27204                                         phy_a12 -= (u8) phy_a1;
27205                                 }
27206                                 phy_a11 = true;
27207                                 break;
27208                         }
27209
27210                         if (phy_a3)
27211                                 phy_a12 += (u8) phy_a1;
27212                         else
27213                                 phy_a12 -= (u8) phy_a1;
27214
27215                         if ((phy_a12 < 0) || (phy_a12 > 127)) {
27216                                 if (phy_a12 < 0) {
27217                                         phy_a12 = 0;
27218                                 } else {
27219                                         phy_a12 = 127;
27220                                 }
27221                                 phy_a11 = true;
27222                                 break;
27223                         }
27224
27225                         phy_a6 = false;
27226                         phy_a5 = phy_a3;
27227                 }
27228
27229         }
27230
27231         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27232                 return (u8) phy_a15[phy_a12];
27233         } else {
27234                 return (u8) phy_a12;
27235         }
27236
27237 }
27238
27239 static void wlc_phy_a4(phy_info_t *pi, bool full_cal)
27240 {
27241         nphy_ipa_txcalgains_t phy_b1[2];
27242         nphy_papd_restore_state phy_b2;
27243         bool phy_b3;
27244         u8 phy_b4;
27245         u8 phy_b5;
27246         s16 phy_b6, phy_b7, phy_b8;
27247         u16 phy_b9;
27248         s16 phy_b10, phy_b11, phy_b12;
27249
27250         phy_b11 = 0;
27251         phy_b12 = 0;
27252         phy_b7 = 0;
27253         phy_b8 = 0;
27254         phy_b6 = 0;
27255
27256         if (pi->nphy_papd_skip == 1)
27257                 return;
27258
27259         phy_b3 =
27260             (0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
27261         if (!phy_b3) {
27262                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
27263         }
27264
27265         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27266
27267         pi->nphy_force_papd_cal = false;
27268
27269         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
27270                 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
27271                     wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
27272
27273         pi->nphy_papd_last_cal = pi->sh->now;
27274         pi->nphy_papd_recal_counter++;
27275
27276         if (NORADIO_ENAB(pi->pubpi))
27277                 return;
27278
27279         phy_b4 = pi->nphy_txpwrctrl;
27280         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
27281
27282         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
27283                                  nphy_papd_scaltbl);
27284         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
27285                                  nphy_papd_scaltbl);
27286
27287         phy_b9 = read_phy_reg(pi, 0x01);
27288         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27289
27290         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27291                 s32 i, val = 0;
27292                 for (i = 0; i < 64; i++) {
27293                         wlc_phy_table_write_nphy(pi,
27294                                                  ((phy_b5 ==
27295                                                    PHY_CORE_0) ?
27296                                                   NPHY_TBL_ID_EPSILONTBL0 :
27297                                                   NPHY_TBL_ID_EPSILONTBL1), 1,
27298                                                  i, 32, &val);
27299                 }
27300         }
27301
27302         wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
27303
27304         phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
27305         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27306                 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
27307
27308                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27309                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27310
27311                                 if ((pi->pubpi.radiorev == 3)
27312                                     || (pi->pubpi.radiorev == 4)
27313                                     || (pi->pubpi.radiorev == 6)) {
27314
27315                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27316                                             23;
27317
27318                                 } else if (pi->pubpi.radiorev == 5) {
27319
27320                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27321                                             0;
27322                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27323                                             wlc_phy_a3_nphy(pi,
27324                                                             pi->
27325                                                             nphy_papd_cal_gain_index
27326                                                             [phy_b5], phy_b5);
27327
27328                                 } else if ((pi->pubpi.radiorev == 7)
27329                                            || (pi->pubpi.radiorev == 8)) {
27330
27331                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27332                                             0;
27333                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27334                                             wlc_phy_a3_nphy(pi,
27335                                                             pi->
27336                                                             nphy_papd_cal_gain_index
27337                                                             [phy_b5], phy_b5);
27338
27339                                 } else {
27340                                         ASSERT(0);
27341                                 }
27342
27343                                 phy_b1[phy_b5].gains.pad[phy_b5] =
27344                                     pi->nphy_papd_cal_gain_index[phy_b5];
27345
27346                         } else {
27347                                 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
27348                                 pi->nphy_papd_cal_gain_index[phy_b5] =
27349                                     wlc_phy_a3_nphy(pi,
27350                                                     pi->
27351                                                     nphy_papd_cal_gain_index
27352                                                     [phy_b5], phy_b5);
27353                                 phy_b1[phy_b5].gains.pga[phy_b5] =
27354                                     pi->nphy_papd_cal_gain_index[phy_b5];
27355                         }
27356                 } else {
27357                         phy_b1[phy_b5].useindex = true;
27358                         phy_b1[phy_b5].index = 16;
27359                         phy_b1[phy_b5].index =
27360                             wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index, phy_b5);
27361
27362                         pi->nphy_papd_cal_gain_index[phy_b5] =
27363                             15 - ((phy_b1[phy_b5].index) >> 3);
27364                 }
27365
27366                 switch (pi->nphy_papd_cal_type) {
27367                 case 0:
27368                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
27369                         break;
27370                 case 1:
27371                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
27372                         break;
27373                 }
27374
27375                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27376                         wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
27377                 }
27378         }
27379
27380         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27381                 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
27382         }
27383
27384         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27385                 int eps_offset = 0;
27386
27387                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27388                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27389                                 if (pi->pubpi.radiorev == 3) {
27390                                         eps_offset = -2;
27391                                 } else if (pi->pubpi.radiorev == 5) {
27392                                         eps_offset = 3;
27393                                 } else {
27394                                         eps_offset = -1;
27395                                 }
27396                         } else {
27397                                 eps_offset = 2;
27398                         }
27399
27400                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27401                                 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
27402                                 phy_b10 = 0;
27403                                 if ((pi->pubpi.radiorev == 3) ||
27404                                     (pi->pubpi.radiorev == 4) ||
27405                                     (pi->pubpi.radiorev == 6)) {
27406                                         phy_b12 =
27407                                             -
27408                                             (nphy_papd_padgain_dlt_2g_2057rev3n4
27409                                              [phy_b8]
27410                                              + 1) / 2;
27411                                         phy_b10 = -1;
27412                                 } else if (pi->pubpi.radiorev == 5) {
27413                                         phy_b12 =
27414                                             -(nphy_papd_padgain_dlt_2g_2057rev5
27415                                               [phy_b8]
27416                                               + 1) / 2;
27417                                 } else if ((pi->pubpi.radiorev == 7) ||
27418                                            (pi->pubpi.radiorev == 8)) {
27419                                         phy_b12 =
27420                                             -(nphy_papd_padgain_dlt_2g_2057rev7
27421                                               [phy_b8]
27422                                               + 1) / 2;
27423                                 } else {
27424                                         ASSERT(0);
27425                                 }
27426                         } else {
27427                                 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
27428                                 if ((pi->pubpi.radiorev == 3) ||
27429                                     (pi->pubpi.radiorev == 4) ||
27430                                     (pi->pubpi.radiorev == 6)) {
27431                                         phy_b11 =
27432                                             -(nphy_papd_pgagain_dlt_5g_2057
27433                                               [phy_b7]
27434                                               + 1) / 2;
27435                                 } else if ((pi->pubpi.radiorev == 7)
27436                                            || (pi->pubpi.radiorev == 8)) {
27437                                         phy_b11 =
27438                                             -(nphy_papd_pgagain_dlt_5g_2057rev7
27439                                               [phy_b7]
27440                                               + 1) / 2;
27441                                 } else {
27442                                         ASSERT(0);
27443                                 }
27444
27445                                 phy_b10 = -9;
27446                         }
27447
27448                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27449                                 phy_b6 =
27450                                     -60 + 27 + eps_offset + phy_b12 + phy_b10;
27451                         } else {
27452                                 phy_b6 =
27453                                     -60 + 27 + eps_offset + phy_b11 + phy_b10;
27454                         }
27455
27456                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
27457                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
27458
27459                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
27460                 } else {
27461                         if (NREV_LT(pi->pubpi.phy_rev, 5)) {
27462                                 eps_offset = 4;
27463                         } else {
27464                                 eps_offset = 2;
27465                         }
27466
27467                         phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
27468
27469                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27470                                 phy_b11 =
27471                                     -(nphy_papd_pga_gain_delta_ipa_2g[phy_b7] +
27472                                       1) / 2;
27473                                 phy_b10 = 0;
27474                         } else {
27475                                 phy_b11 =
27476                                     -(nphy_papd_pga_gain_delta_ipa_5g[phy_b7] +
27477                                       1) / 2;
27478                                 phy_b10 = -9;
27479                         }
27480
27481                         phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
27482
27483                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
27484                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
27485
27486                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
27487                 }
27488         }
27489
27490         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
27491                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
27492
27493         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
27494                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
27495
27496         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
27497                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
27498                             0x2a4, (0x1 << 13), (0) << 13);
27499
27500                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
27501                             0x2a4, (0x1 << 13), (0) << 13);
27502
27503         } else {
27504                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
27505                             0x2a4, (0x1 << 11), (0) << 11);
27506
27507                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
27508                             0x2a4, (0x1 << 11), (0) << 11);
27509
27510         }
27511         pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
27512
27513         write_phy_reg(pi, 0x01, phy_b9);
27514
27515         wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
27516
27517         wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
27518         if (phy_b4 == PHY_TPC_HW_OFF) {
27519                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
27520                                          (s8) (pi->nphy_txpwrindex[0].
27521                                                  index_internal), false);
27522                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
27523                                          (s8) (pi->nphy_txpwrindex[1].
27524                                                  index_internal), false);
27525         }
27526
27527         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27528
27529         if (!phy_b3) {
27530                 wlapi_enable_mac(pi->sh->physhim);
27531         }
27532 }
27533
27534 void wlc_phy_txpwr_fixpower_nphy(phy_info_t *pi)
27535 {
27536         uint core;
27537         u32 txgain;
27538         u16 rad_gain, dac_gain, bbmult, m1m2;
27539         u8 txpi[2], chan_freq_range;
27540         s32 rfpwr_offset;
27541
27542         ASSERT(pi->nphy_txpwrctrl == PHY_TPC_HW_OFF);
27543
27544         if (pi->phyhang_avoid)
27545                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27546
27547         if (pi->sh->sromrev < 4) {
27548                 txpi[0] = txpi[1] = 72;
27549         } else {
27550
27551                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27552                 switch (chan_freq_range) {
27553                 case WL_CHAN_FREQ_RANGE_2G:
27554                         txpi[0] = pi->nphy_txpid2g[0];
27555                         txpi[1] = pi->nphy_txpid2g[1];
27556                         break;
27557                 case WL_CHAN_FREQ_RANGE_5GL:
27558                         txpi[0] = pi->nphy_txpid5gl[0];
27559                         txpi[1] = pi->nphy_txpid5gl[1];
27560                         break;
27561                 case WL_CHAN_FREQ_RANGE_5GM:
27562                         txpi[0] = pi->nphy_txpid5g[0];
27563                         txpi[1] = pi->nphy_txpid5g[1];
27564                         break;
27565                 case WL_CHAN_FREQ_RANGE_5GH:
27566                         txpi[0] = pi->nphy_txpid5gh[0];
27567                         txpi[1] = pi->nphy_txpid5gh[1];
27568                         break;
27569                 default:
27570                         txpi[0] = txpi[1] = 91;
27571                         break;
27572                 }
27573         }
27574
27575         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27576                 txpi[0] = txpi[1] = 30;
27577         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27578                 txpi[0] = txpi[1] = 40;
27579         }
27580
27581         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27582
27583                 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27584                     (txpi[1] < 40) || (txpi[1] > 100))
27585                         txpi[0] = txpi[1] = 91;
27586         }
27587
27588         pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27589         pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27590         pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27591         pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27592
27593         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27594                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27595                         if (PHY_IPA(pi)) {
27596                                 u32 *tx_gaintbl =
27597                                     wlc_phy_get_ipa_gaintbl_nphy(pi);
27598                                 txgain = tx_gaintbl[txpi[core]];
27599                         } else {
27600                                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27601                                         if NREV_IS
27602                                                 (pi->pubpi.phy_rev, 3) {
27603                                                 txgain =
27604                                                     nphy_tpc_5GHz_txgain_rev3
27605                                                     [txpi[core]];
27606                                         } else if NREV_IS
27607                                                 (pi->pubpi.phy_rev, 4) {
27608                                                 txgain =
27609                                                     (pi->srom_fem5g.extpagain ==
27610                                                      3) ?
27611                                                     nphy_tpc_5GHz_txgain_HiPwrEPA
27612                                                     [txpi[core]] :
27613                                                     nphy_tpc_5GHz_txgain_rev4
27614                                                     [txpi[core]];
27615                                         } else {
27616                                                 txgain =
27617                                                     nphy_tpc_5GHz_txgain_rev5
27618                                                     [txpi[core]];
27619                                         }
27620                                 } else {
27621                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
27622                                             (pi->srom_fem2g.extpagain == 3)) {
27623                                                 txgain =
27624                                                     nphy_tpc_txgain_HiPwrEPA
27625                                                     [txpi[core]];
27626                                         } else {
27627                                                 txgain =
27628                                                     nphy_tpc_txgain_rev3[txpi
27629                                                                          [core]];
27630                                         }
27631                                 }
27632                         }
27633                 } else {
27634                         txgain = nphy_tpc_txgain[txpi[core]];
27635                 }
27636
27637                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27638                         rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27639                 } else {
27640                         rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27641                 }
27642
27643                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27644                         dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27645                 } else {
27646                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27647                 }
27648                 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27649
27650                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27651                         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27652                                          0xa5), (0x1 << 8), (0x1 << 8));
27653                 } else {
27654                         mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27655                 }
27656                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27657
27658                 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27659                                          &rad_gain);
27660
27661                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27662                 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27663                 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27664                 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27665
27666                 if (PHY_IPA(pi)) {
27667                         wlc_phy_table_read_nphy(pi,
27668                                                 (core ==
27669                                                  PHY_CORE_0 ?
27670                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
27671                                                  NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27672                                                 576 + txpi[core], 32,
27673                                                 &rfpwr_offset);
27674
27675                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27676                                     0x29b, (0x1ff << 4),
27677                                     ((s16) rfpwr_offset) << 4);
27678
27679                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27680                                     0x29b, (0x1 << 2), (1) << 2);
27681
27682                 }
27683         }
27684
27685         and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27686
27687         if (pi->phyhang_avoid)
27688                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27689 }
27690
27691 static void
27692 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27693                                 u8 tmp_max_pwr, u8 rate_start,
27694                                 u8 rate_end)
27695 {
27696         u8 rate;
27697         u8 word_num, nibble_num;
27698         u8 tmp_nibble;
27699
27700         for (rate = rate_start; rate <= rate_end; rate++) {
27701                 word_num = (rate - rate_start) >> 2;
27702                 nibble_num = (rate - rate_start) & 0x3;
27703                 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27704
27705                 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27706         }
27707 }
27708
27709 static void
27710 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27711                             u8 rate_start, u8 rate_end)
27712 {
27713         u8 rate;
27714
27715         for (rate = rate_start; rate <= rate_end; rate++) {
27716                 srom_max[rate] -= 2 * pwr_offset;
27717         }
27718 }
27719
27720 void
27721 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
27722                                 u8 rate_mcs_end, u8 rate_ofdm_start)
27723 {
27724         u8 rate1, rate2;
27725
27726         rate2 = rate_ofdm_start;
27727         for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
27728                 power[rate1] = power[rate2];
27729                 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
27730         }
27731         power[rate_mcs_end] = power[rate_mcs_end - 1];
27732 }
27733
27734 void
27735 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
27736                                 u8 rate_ofdm_end, u8 rate_mcs_start)
27737 {
27738         u8 rate1, rate2;
27739
27740         for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
27741              rate1 <= rate_ofdm_end; rate1++, rate2++) {
27742                 power[rate1] = power[rate2];
27743                 if (rate1 == rate_ofdm_start)
27744                         power[++rate1] = power[rate2];
27745         }
27746 }
27747
27748 void wlc_phy_txpwr_apply_nphy(phy_info_t *pi)
27749 {
27750         uint rate1, rate2, band_num;
27751         u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
27752         u8 tmp_max_pwr = 0;
27753         u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
27754         u8 *tx_srom_max_rate = NULL;
27755
27756         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP); band_num++) {
27757                 switch (band_num) {
27758                 case 0:
27759
27760                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
27761                                           pi->nphy_pwrctrl_info[1].max_pwr_2g);
27762
27763                         pwr_offsets1[0] = pi->cck2gpo;
27764                         wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
27765                                                         pwr_offsets1,
27766                                                         tmp_max_pwr,
27767                                                         TXP_FIRST_CCK,
27768                                                         TXP_LAST_CCK);
27769
27770                         pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
27771                         pwr_offsets1[1] =
27772                             (u16) (pi->ofdm2gpo >> 16) & 0xffff;
27773
27774                         pwr_offsets2 = pi->mcs2gpo;
27775
27776                         tmp_cddpo = pi->cdd2gpo;
27777                         tmp_stbcpo = pi->stbc2gpo;
27778                         tmp_bw40po = pi->bw402gpo;
27779
27780                         tx_srom_max_rate = pi->tx_srom_max_rate_2g;
27781                         break;
27782                 case 1:
27783
27784                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
27785                                           pi->nphy_pwrctrl_info[1].max_pwr_5gm);
27786
27787                         pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
27788                         pwr_offsets1[1] =
27789                             (u16) (pi->ofdm5gpo >> 16) & 0xffff;
27790
27791                         pwr_offsets2 = pi->mcs5gpo;
27792
27793                         tmp_cddpo = pi->cdd5gpo;
27794                         tmp_stbcpo = pi->stbc5gpo;
27795                         tmp_bw40po = pi->bw405gpo;
27796
27797                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
27798                         break;
27799                 case 2:
27800
27801                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
27802                                           pi->nphy_pwrctrl_info[1].max_pwr_5gl);
27803
27804                         pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
27805                         pwr_offsets1[1] =
27806                             (u16) (pi->ofdm5glpo >> 16) & 0xffff;
27807
27808                         pwr_offsets2 = pi->mcs5glpo;
27809
27810                         tmp_cddpo = pi->cdd5glpo;
27811                         tmp_stbcpo = pi->stbc5glpo;
27812                         tmp_bw40po = pi->bw405glpo;
27813
27814                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
27815                         break;
27816                 case 3:
27817
27818                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
27819                                           pi->nphy_pwrctrl_info[1].max_pwr_5gh);
27820
27821                         pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
27822                         pwr_offsets1[1] =
27823                             (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
27824
27825                         pwr_offsets2 = pi->mcs5ghpo;
27826
27827                         tmp_cddpo = pi->cdd5ghpo;
27828                         tmp_stbcpo = pi->stbc5ghpo;
27829                         tmp_bw40po = pi->bw405ghpo;
27830
27831                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
27832                         break;
27833                 }
27834
27835                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
27836                                                 tmp_max_pwr, TXP_FIRST_OFDM,
27837                                                 TXP_LAST_OFDM);
27838
27839                 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
27840                                                 TXP_FIRST_MCS_20_SISO,
27841                                                 TXP_LAST_MCS_20_SISO,
27842                                                 TXP_FIRST_OFDM);
27843
27844                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
27845                                                 tmp_max_pwr,
27846                                                 TXP_FIRST_MCS_20_CDD,
27847                                                 TXP_LAST_MCS_20_CDD);
27848
27849                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27850
27851                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
27852                                                     TXP_FIRST_MCS_20_CDD,
27853                                                     TXP_LAST_MCS_20_CDD);
27854                 }
27855
27856                 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27857                                                 TXP_FIRST_OFDM_20_CDD,
27858                                                 TXP_LAST_OFDM_20_CDD,
27859                                                 TXP_FIRST_MCS_20_CDD);
27860
27861                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
27862                                                 tmp_max_pwr,
27863                                                 TXP_FIRST_MCS_20_STBC,
27864                                                 TXP_LAST_MCS_20_STBC);
27865
27866                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27867
27868                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27869                                                     tmp_stbcpo,
27870                                                     TXP_FIRST_MCS_20_STBC,
27871                                                     TXP_LAST_MCS_20_STBC);
27872                 }
27873
27874                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27875                                                 &pwr_offsets2[2], tmp_max_pwr,
27876                                                 TXP_FIRST_MCS_20_SDM,
27877                                                 TXP_LAST_MCS_20_SDM);
27878
27879                 if (NPHY_IS_SROM_REINTERPRET) {
27880
27881                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27882                                                         &pwr_offsets2[4],
27883                                                         tmp_max_pwr,
27884                                                         TXP_FIRST_MCS_40_SISO,
27885                                                         TXP_LAST_MCS_40_SISO);
27886
27887                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27888                                                         TXP_FIRST_OFDM_40_SISO,
27889                                                         TXP_LAST_OFDM_40_SISO,
27890                                                         TXP_FIRST_MCS_40_SISO);
27891
27892                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27893                                                         &pwr_offsets2[4],
27894                                                         tmp_max_pwr,
27895                                                         TXP_FIRST_MCS_40_CDD,
27896                                                         TXP_LAST_MCS_40_CDD);
27897
27898                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
27899                                                     TXP_FIRST_MCS_40_CDD,
27900                                                     TXP_LAST_MCS_40_CDD);
27901
27902                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27903                                                         TXP_FIRST_OFDM_40_CDD,
27904                                                         TXP_LAST_OFDM_40_CDD,
27905                                                         TXP_FIRST_MCS_40_CDD);
27906
27907                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27908                                                         &pwr_offsets2[4],
27909                                                         tmp_max_pwr,
27910                                                         TXP_FIRST_MCS_40_STBC,
27911                                                         TXP_LAST_MCS_40_STBC);
27912
27913                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27914                                                     tmp_stbcpo,
27915                                                     TXP_FIRST_MCS_40_STBC,
27916                                                     TXP_LAST_MCS_40_STBC);
27917
27918                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27919                                                         &pwr_offsets2[6],
27920                                                         tmp_max_pwr,
27921                                                         TXP_FIRST_MCS_40_SDM,
27922                                                         TXP_LAST_MCS_40_SDM);
27923                 } else {
27924
27925                         for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
27926                              TXP_FIRST_OFDM; rate1 <= TXP_LAST_MCS_40_SDM;
27927                              rate1++, rate2++)
27928                                 tx_srom_max_rate[rate1] =
27929                                     tx_srom_max_rate[rate2];
27930                 }
27931
27932                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27933                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27934                                                     tmp_bw40po,
27935                                                     TXP_FIRST_OFDM_40_SISO,
27936                                                     TXP_LAST_MCS_40_SDM);
27937                 }
27938
27939                 tx_srom_max_rate[TXP_MCS_32] =
27940                     tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
27941         }
27942
27943         return;
27944 }
27945
27946 static void wlc_phy_txpwr_srom_read_ppr_nphy(phy_info_t *pi)
27947 {
27948         u16 bw40po, cddpo, stbcpo, bwduppo;
27949         uint band_num;
27950
27951         if (pi->sh->sromrev >= 9) {
27952
27953                 return;
27954         }
27955
27956         bw40po = (u16) PHY_GETINTVAR(pi, "bw40po");
27957         pi->bw402gpo = bw40po & 0xf;
27958         pi->bw405gpo = (bw40po & 0xf0) >> 4;
27959         pi->bw405glpo = (bw40po & 0xf00) >> 8;
27960         pi->bw405ghpo = (bw40po & 0xf000) >> 12;
27961
27962         cddpo = (u16) PHY_GETINTVAR(pi, "cddpo");
27963         pi->cdd2gpo = cddpo & 0xf;
27964         pi->cdd5gpo = (cddpo & 0xf0) >> 4;
27965         pi->cdd5glpo = (cddpo & 0xf00) >> 8;
27966         pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
27967
27968         stbcpo = (u16) PHY_GETINTVAR(pi, "stbcpo");
27969         pi->stbc2gpo = stbcpo & 0xf;
27970         pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
27971         pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
27972         pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
27973
27974         bwduppo = (u16) PHY_GETINTVAR(pi, "bwduppo");
27975         pi->bwdup2gpo = bwduppo & 0xf;
27976         pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
27977         pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
27978         pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
27979
27980         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP); band_num++) {
27981                 switch (band_num) {
27982                 case 0:
27983
27984                         pi->nphy_txpid2g[PHY_CORE_0] =
27985                             (u8) PHY_GETINTVAR(pi, "txpid2ga0");
27986                         pi->nphy_txpid2g[PHY_CORE_1] =
27987                             (u8) PHY_GETINTVAR(pi, "txpid2ga1");
27988                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
27989                             (s8) PHY_GETINTVAR(pi, "maxp2ga0");
27990                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
27991                             (s8) PHY_GETINTVAR(pi, "maxp2ga1");
27992                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
27993                             (s16) PHY_GETINTVAR(pi, "pa2gw0a0");
27994                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
27995                             (s16) PHY_GETINTVAR(pi, "pa2gw0a1");
27996                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
27997                             (s16) PHY_GETINTVAR(pi, "pa2gw1a0");
27998                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
27999                             (s16) PHY_GETINTVAR(pi, "pa2gw1a1");
28000                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
28001                             (s16) PHY_GETINTVAR(pi, "pa2gw2a0");
28002                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
28003                             (s16) PHY_GETINTVAR(pi, "pa2gw2a1");
28004                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
28005                             (s8) PHY_GETINTVAR(pi, "itt2ga0");
28006                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
28007                             (s8) PHY_GETINTVAR(pi, "itt2ga1");
28008
28009                         pi->cck2gpo = (u16) PHY_GETINTVAR(pi, "cck2gpo");
28010
28011                         pi->ofdm2gpo = (u32) PHY_GETINTVAR(pi, "ofdm2gpo");
28012
28013                         pi->mcs2gpo[0] = (u16) PHY_GETINTVAR(pi, "mcs2gpo0");
28014                         pi->mcs2gpo[1] = (u16) PHY_GETINTVAR(pi, "mcs2gpo1");
28015                         pi->mcs2gpo[2] = (u16) PHY_GETINTVAR(pi, "mcs2gpo2");
28016                         pi->mcs2gpo[3] = (u16) PHY_GETINTVAR(pi, "mcs2gpo3");
28017                         pi->mcs2gpo[4] = (u16) PHY_GETINTVAR(pi, "mcs2gpo4");
28018                         pi->mcs2gpo[5] = (u16) PHY_GETINTVAR(pi, "mcs2gpo5");
28019                         pi->mcs2gpo[6] = (u16) PHY_GETINTVAR(pi, "mcs2gpo6");
28020                         pi->mcs2gpo[7] = (u16) PHY_GETINTVAR(pi, "mcs2gpo7");
28021                         break;
28022                 case 1:
28023
28024                         pi->nphy_txpid5g[PHY_CORE_0] =
28025                             (u8) PHY_GETINTVAR(pi, "txpid5ga0");
28026                         pi->nphy_txpid5g[PHY_CORE_1] =
28027                             (u8) PHY_GETINTVAR(pi, "txpid5ga1");
28028                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
28029                             (s8) PHY_GETINTVAR(pi, "maxp5ga0");
28030                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
28031                             (s8) PHY_GETINTVAR(pi, "maxp5ga1");
28032                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
28033                             (s16) PHY_GETINTVAR(pi, "pa5gw0a0");
28034                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
28035                             (s16) PHY_GETINTVAR(pi, "pa5gw0a1");
28036                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
28037                             (s16) PHY_GETINTVAR(pi, "pa5gw1a0");
28038                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
28039                             (s16) PHY_GETINTVAR(pi, "pa5gw1a1");
28040                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
28041                             (s16) PHY_GETINTVAR(pi, "pa5gw2a0");
28042                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
28043                             (s16) PHY_GETINTVAR(pi, "pa5gw2a1");
28044                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
28045                             (s8) PHY_GETINTVAR(pi, "itt5ga0");
28046                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
28047                             (s8) PHY_GETINTVAR(pi, "itt5ga1");
28048
28049                         pi->ofdm5gpo = (u32) PHY_GETINTVAR(pi, "ofdm5gpo");
28050
28051                         pi->mcs5gpo[0] = (u16) PHY_GETINTVAR(pi, "mcs5gpo0");
28052                         pi->mcs5gpo[1] = (u16) PHY_GETINTVAR(pi, "mcs5gpo1");
28053                         pi->mcs5gpo[2] = (u16) PHY_GETINTVAR(pi, "mcs5gpo2");
28054                         pi->mcs5gpo[3] = (u16) PHY_GETINTVAR(pi, "mcs5gpo3");
28055                         pi->mcs5gpo[4] = (u16) PHY_GETINTVAR(pi, "mcs5gpo4");
28056                         pi->mcs5gpo[5] = (u16) PHY_GETINTVAR(pi, "mcs5gpo5");
28057                         pi->mcs5gpo[6] = (u16) PHY_GETINTVAR(pi, "mcs5gpo6");
28058                         pi->mcs5gpo[7] = (u16) PHY_GETINTVAR(pi, "mcs5gpo7");
28059                         break;
28060                 case 2:
28061
28062                         pi->nphy_txpid5gl[0] =
28063                             (u8) PHY_GETINTVAR(pi, "txpid5gla0");
28064                         pi->nphy_txpid5gl[1] =
28065                             (u8) PHY_GETINTVAR(pi, "txpid5gla1");
28066                         pi->nphy_pwrctrl_info[0].max_pwr_5gl =
28067                             (s8) PHY_GETINTVAR(pi, "maxp5gla0");
28068                         pi->nphy_pwrctrl_info[1].max_pwr_5gl =
28069                             (s8) PHY_GETINTVAR(pi, "maxp5gla1");
28070                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
28071                             (s16) PHY_GETINTVAR(pi, "pa5glw0a0");
28072                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
28073                             (s16) PHY_GETINTVAR(pi, "pa5glw0a1");
28074                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
28075                             (s16) PHY_GETINTVAR(pi, "pa5glw1a0");
28076                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
28077                             (s16) PHY_GETINTVAR(pi, "pa5glw1a1");
28078                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
28079                             (s16) PHY_GETINTVAR(pi, "pa5glw2a0");
28080                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
28081                             (s16) PHY_GETINTVAR(pi, "pa5glw2a1");
28082                         pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
28083                         pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
28084
28085                         pi->ofdm5glpo = (u32) PHY_GETINTVAR(pi, "ofdm5glpo");
28086
28087                         pi->mcs5glpo[0] =
28088                             (u16) PHY_GETINTVAR(pi, "mcs5glpo0");
28089                         pi->mcs5glpo[1] =
28090                             (u16) PHY_GETINTVAR(pi, "mcs5glpo1");
28091                         pi->mcs5glpo[2] =
28092                             (u16) PHY_GETINTVAR(pi, "mcs5glpo2");
28093                         pi->mcs5glpo[3] =
28094                             (u16) PHY_GETINTVAR(pi, "mcs5glpo3");
28095                         pi->mcs5glpo[4] =
28096                             (u16) PHY_GETINTVAR(pi, "mcs5glpo4");
28097                         pi->mcs5glpo[5] =
28098                             (u16) PHY_GETINTVAR(pi, "mcs5glpo5");
28099                         pi->mcs5glpo[6] =
28100                             (u16) PHY_GETINTVAR(pi, "mcs5glpo6");
28101                         pi->mcs5glpo[7] =
28102                             (u16) PHY_GETINTVAR(pi, "mcs5glpo7");
28103                         break;
28104                 case 3:
28105
28106                         pi->nphy_txpid5gh[0] =
28107                             (u8) PHY_GETINTVAR(pi, "txpid5gha0");
28108                         pi->nphy_txpid5gh[1] =
28109                             (u8) PHY_GETINTVAR(pi, "txpid5gha1");
28110                         pi->nphy_pwrctrl_info[0].max_pwr_5gh =
28111                             (s8) PHY_GETINTVAR(pi, "maxp5gha0");
28112                         pi->nphy_pwrctrl_info[1].max_pwr_5gh =
28113                             (s8) PHY_GETINTVAR(pi, "maxp5gha1");
28114                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
28115                             (s16) PHY_GETINTVAR(pi, "pa5ghw0a0");
28116                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
28117                             (s16) PHY_GETINTVAR(pi, "pa5ghw0a1");
28118                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
28119                             (s16) PHY_GETINTVAR(pi, "pa5ghw1a0");
28120                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
28121                             (s16) PHY_GETINTVAR(pi, "pa5ghw1a1");
28122                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
28123                             (s16) PHY_GETINTVAR(pi, "pa5ghw2a0");
28124                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
28125                             (s16) PHY_GETINTVAR(pi, "pa5ghw2a1");
28126                         pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
28127                         pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
28128
28129                         pi->ofdm5ghpo = (u32) PHY_GETINTVAR(pi, "ofdm5ghpo");
28130
28131                         pi->mcs5ghpo[0] =
28132                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo0");
28133                         pi->mcs5ghpo[1] =
28134                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo1");
28135                         pi->mcs5ghpo[2] =
28136                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo2");
28137                         pi->mcs5ghpo[3] =
28138                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo3");
28139                         pi->mcs5ghpo[4] =
28140                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo4");
28141                         pi->mcs5ghpo[5] =
28142                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo5");
28143                         pi->mcs5ghpo[6] =
28144                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo6");
28145                         pi->mcs5ghpo[7] =
28146                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo7");
28147                         break;
28148                 }
28149         }
28150
28151         wlc_phy_txpwr_apply_nphy(pi);
28152 }
28153
28154 static bool wlc_phy_txpwr_srom_read_nphy(phy_info_t *pi)
28155 {
28156
28157         pi->antswitch = (u8) PHY_GETINTVAR(pi, "antswitch");
28158         pi->aa2g = (u8) PHY_GETINTVAR(pi, "aa2g");
28159         pi->aa5g = (u8) PHY_GETINTVAR(pi, "aa5g");
28160
28161         pi->srom_fem2g.tssipos = (u8) PHY_GETINTVAR(pi, "tssipos2g");
28162         pi->srom_fem2g.extpagain = (u8) PHY_GETINTVAR(pi, "extpagain2g");
28163         pi->srom_fem2g.pdetrange = (u8) PHY_GETINTVAR(pi, "pdetrange2g");
28164         pi->srom_fem2g.triso = (u8) PHY_GETINTVAR(pi, "triso2g");
28165         pi->srom_fem2g.antswctrllut = (u8) PHY_GETINTVAR(pi, "antswctl2g");
28166
28167         pi->srom_fem5g.tssipos = (u8) PHY_GETINTVAR(pi, "tssipos5g");
28168         pi->srom_fem5g.extpagain = (u8) PHY_GETINTVAR(pi, "extpagain5g");
28169         pi->srom_fem5g.pdetrange = (u8) PHY_GETINTVAR(pi, "pdetrange5g");
28170         pi->srom_fem5g.triso = (u8) PHY_GETINTVAR(pi, "triso5g");
28171         if (PHY_GETVAR(pi, "antswctl5g")) {
28172
28173                 pi->srom_fem5g.antswctrllut =
28174                     (u8) PHY_GETINTVAR(pi, "antswctl5g");
28175         } else {
28176
28177                 pi->srom_fem5g.antswctrllut =
28178                     (u8) PHY_GETINTVAR(pi, "antswctl2g");
28179         }
28180
28181         wlc_phy_txpower_ipa_upd(pi);
28182
28183         pi->phy_txcore_disable_temp = (s16) PHY_GETINTVAR(pi, "tempthresh");
28184         if (pi->phy_txcore_disable_temp == 0) {
28185                 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
28186         }
28187
28188         pi->phy_tempsense_offset = (s8) PHY_GETINTVAR(pi, "tempoffset");
28189         if (pi->phy_tempsense_offset != 0) {
28190                 if (pi->phy_tempsense_offset >
28191                     (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET)) {
28192                         pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
28193                 } else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
28194                                                     NPHY_SROM_MINTEMPOFFSET)) {
28195                         pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
28196                 } else {
28197                         pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
28198                 }
28199         }
28200
28201         pi->phy_txcore_enable_temp =
28202             pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
28203
28204         pi->phycal_tempdelta = (u8) PHY_GETINTVAR(pi, "phycal_tempdelta");
28205         if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA) {
28206                 pi->phycal_tempdelta = 0;
28207         }
28208
28209         wlc_phy_txpwr_srom_read_ppr_nphy(pi);
28210
28211         return true;
28212 }
28213
28214 void wlc_phy_txpower_recalc_target_nphy(phy_info_t *pi)
28215 {
28216         u8 tx_pwr_ctrl_state;
28217         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28218         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28219
28220         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28221
28222         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28223                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28224                 (void)R_REG(pi->sh->osh, &pi->regs->maccontrol);
28225                 udelay(1);
28226         }
28227
28228         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28229
28230         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28231                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28232 }
28233
28234 static void wlc_phy_txpwrctrl_coeff_setup_nphy(phy_info_t *pi)
28235 {
28236         u32 idx;
28237         u16 iqloCalbuf[7];
28238         u32 iqcomp, locomp, curr_locomp;
28239         s8 locomp_i, locomp_q;
28240         s8 curr_locomp_i, curr_locomp_q;
28241         u32 tbl_id, tbl_len, tbl_offset;
28242         u32 regval[128];
28243
28244         if (pi->phyhang_avoid)
28245                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28246
28247         wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
28248
28249         tbl_len = 128;
28250         tbl_offset = 320;
28251         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28252              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28253                 iqcomp =
28254                     (tbl_id ==
28255                      26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
28256                     (iqloCalbuf[1] & 0x3ff)
28257                     : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
28258                     (iqloCalbuf[3] & 0x3ff);
28259
28260                 for (idx = 0; idx < tbl_len; idx++) {
28261                         regval[idx] = iqcomp;
28262                 }
28263                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28264                                          regval);
28265         }
28266
28267         tbl_offset = 448;
28268         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28269              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28270
28271                 locomp =
28272                     (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
28273                 locomp_i = (s8) ((locomp >> 8) & 0xff);
28274                 locomp_q = (s8) ((locomp) & 0xff);
28275                 for (idx = 0; idx < tbl_len; idx++) {
28276                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28277                                 curr_locomp_i = locomp_i;
28278                                 curr_locomp_q = locomp_q;
28279                         } else {
28280                                 curr_locomp_i = (s8) ((locomp_i *
28281                                                          nphy_tpc_loscale[idx] +
28282                                                          128) >> 8);
28283                                 curr_locomp_q =
28284                                     (s8) ((locomp_q * nphy_tpc_loscale[idx] +
28285                                              128) >> 8);
28286                         }
28287                         curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
28288                         curr_locomp |= (u32) (curr_locomp_q & 0xff);
28289                         regval[idx] = curr_locomp;
28290                 }
28291                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28292                                          regval);
28293         }
28294
28295         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
28296
28297                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
28298                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
28299         }
28300
28301         if (pi->phyhang_avoid)
28302                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28303 }
28304
28305 static void wlc_phy_ipa_internal_tssi_setup_nphy(phy_info_t *pi)
28306 {
28307         u8 core;
28308
28309         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28310                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28311                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28312                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28313                                                  TX_SSI_MASTER, 0x5);
28314                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28315                                                  TX_SSI_MUX, 0xe);
28316
28317                                 if (pi->pubpi.radiorev != 5)
28318                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28319                                                          core, TSSIA, 0);
28320
28321                                 if (!NREV_IS(pi->pubpi.phy_rev, 7)) {
28322
28323                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28324                                                          core, TSSIG, 0x1);
28325                                 } else {
28326
28327                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28328                                                          core, TSSIG, 0x31);
28329                                 }
28330                         } else {
28331                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28332                                                  TX_SSI_MASTER, 0x9);
28333                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28334                                                  TX_SSI_MUX, 0xc);
28335                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28336                                                  TSSIG, 0);
28337
28338                                 if (pi->pubpi.radiorev != 5) {
28339                                         if (!NREV_IS(pi->pubpi.phy_rev, 7)) {
28340
28341                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28342                                                                  TX, core,
28343                                                                  TSSIA, 0x1);
28344                                         } else {
28345
28346                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28347                                                                  TX, core,
28348                                                                  TSSIA, 0x31);
28349                                         }
28350                                 }
28351                         }
28352                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
28353                                          0);
28354                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
28355                                          0);
28356                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
28357                                          0x3);
28358                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
28359                                          0x0);
28360                 }
28361         } else {
28362                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
28363                                 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
28364                                 0x80);
28365                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
28366                 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
28367
28368                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28369                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
28370                                          0x0);
28371                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
28372                                          0x0);
28373                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
28374                                          0x3);
28375                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
28376                                          0x0);
28377                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
28378                                          0x8);
28379                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
28380                                          0x0);
28381                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
28382                                          0x0);
28383
28384                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28385                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28386                                                  TX_SSI_MASTER, 0x5);
28387
28388                                 if (pi->pubpi.radiorev != 5)
28389                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28390                                                          core, TSSIA, 0x0);
28391                                 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
28392
28393                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28394                                                          core, TSSIG, 0x31);
28395                                 } else {
28396                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28397                                                          core, TSSIG, 0x11);
28398                                 }
28399                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28400                                                  TX_SSI_MUX, 0xe);
28401                         } else {
28402                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28403                                                  TX_SSI_MASTER, 0x9);
28404                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28405                                                  TSSIA, 0x31);
28406                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28407                                                  TSSIG, 0x0);
28408                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28409                                                  TX_SSI_MUX, 0xc);
28410                         }
28411                 }
28412         }
28413 }
28414
28415 static void wlc_phy_txpwrctrl_idle_tssi_nphy(phy_info_t *pi)
28416 {
28417         s32 rssi_buf[4];
28418         s32 int_val;
28419
28420         if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
28421
28422                 return;
28423
28424         if (PHY_IPA(pi)) {
28425                 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
28426         }
28427
28428         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28429                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
28430                                                   0, 0x3, 0,
28431                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
28432         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28433                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
28434         }
28435
28436         wlc_phy_stopplayback_nphy(pi);
28437
28438         wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
28439
28440         udelay(20);
28441         int_val =
28442             wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
28443                                    1);
28444         wlc_phy_stopplayback_nphy(pi);
28445         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
28446
28447         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28448                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
28449                                                   0, 0x3, 1,
28450                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
28451         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28452                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
28453         }
28454
28455         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28456
28457                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
28458                     (u8) ((int_val >> 24) & 0xff);
28459                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
28460                     (u8) ((int_val >> 24) & 0xff);
28461
28462                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
28463                     (u8) ((int_val >> 8) & 0xff);
28464                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
28465                     (u8) ((int_val >> 8) & 0xff);
28466         } else {
28467                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
28468                     (u8) ((int_val >> 24) & 0xff);
28469
28470                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
28471                     (u8) ((int_val >> 8) & 0xff);
28472
28473                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
28474                     (u8) ((int_val >> 16) & 0xff);
28475                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
28476                     (u8) ((int_val) & 0xff);
28477         }
28478
28479 }
28480
28481 static void wlc_phy_txpwrctrl_pwr_setup_nphy(phy_info_t *pi)
28482 {
28483         u32 idx;
28484         s16 a1[2], b0[2], b1[2];
28485         s8 target_pwr_qtrdbm[2];
28486         s32 num, den, pwr_est;
28487         u8 chan_freq_range;
28488         u8 idle_tssi[2];
28489         u32 tbl_id, tbl_len, tbl_offset;
28490         u32 regval[64];
28491         u8 core;
28492
28493         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28494                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28495                 (void)R_REG(pi->sh->osh, &pi->regs->maccontrol);
28496                 udelay(1);
28497         }
28498
28499         if (pi->phyhang_avoid)
28500                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28501
28502         or_phy_reg(pi, 0x122, (0x1 << 0));
28503
28504         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28505                 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
28506         } else {
28507
28508                 or_phy_reg(pi, 0x1e7, (0x1 << 15));
28509         }
28510
28511         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28512                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28513
28514         if (pi->sh->sromrev < 4) {
28515                 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28516                 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28517                 target_pwr_qtrdbm[0] = 13 * 4;
28518                 target_pwr_qtrdbm[1] = 13 * 4;
28519                 a1[0] = -424;
28520                 a1[1] = -424;
28521                 b0[0] = 5612;
28522                 b0[1] = 5612;
28523                 b1[1] = -1393;
28524                 b1[0] = -1393;
28525         } else {
28526
28527                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
28528                 switch (chan_freq_range) {
28529                 case WL_CHAN_FREQ_RANGE_2G:
28530                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28531                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28532                         target_pwr_qtrdbm[0] =
28533                             pi->nphy_pwrctrl_info[0].max_pwr_2g;
28534                         target_pwr_qtrdbm[1] =
28535                             pi->nphy_pwrctrl_info[1].max_pwr_2g;
28536                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
28537                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
28538                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
28539                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
28540                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
28541                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
28542                         break;
28543                 case WL_CHAN_FREQ_RANGE_5GL:
28544                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28545                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28546                         target_pwr_qtrdbm[0] =
28547                             pi->nphy_pwrctrl_info[0].max_pwr_5gl;
28548                         target_pwr_qtrdbm[1] =
28549                             pi->nphy_pwrctrl_info[1].max_pwr_5gl;
28550                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
28551                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
28552                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
28553                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
28554                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
28555                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
28556                         break;
28557                 case WL_CHAN_FREQ_RANGE_5GM:
28558                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28559                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28560                         target_pwr_qtrdbm[0] =
28561                             pi->nphy_pwrctrl_info[0].max_pwr_5gm;
28562                         target_pwr_qtrdbm[1] =
28563                             pi->nphy_pwrctrl_info[1].max_pwr_5gm;
28564                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
28565                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
28566                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
28567                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
28568                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
28569                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
28570                         break;
28571                 case WL_CHAN_FREQ_RANGE_5GH:
28572                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28573                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28574                         target_pwr_qtrdbm[0] =
28575                             pi->nphy_pwrctrl_info[0].max_pwr_5gh;
28576                         target_pwr_qtrdbm[1] =
28577                             pi->nphy_pwrctrl_info[1].max_pwr_5gh;
28578                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
28579                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
28580                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
28581                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
28582                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
28583                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
28584                         break;
28585                 default:
28586                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28587                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28588                         target_pwr_qtrdbm[0] = 13 * 4;
28589                         target_pwr_qtrdbm[1] = 13 * 4;
28590                         a1[0] = -424;
28591                         a1[1] = -424;
28592                         b0[0] = 5612;
28593                         b0[1] = 5612;
28594                         b1[1] = -1393;
28595                         b1[0] = -1393;
28596                         break;
28597                 }
28598         }
28599
28600         target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
28601         target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
28602
28603         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28604                 if (pi->srom_fem2g.tssipos) {
28605                         or_phy_reg(pi, 0x1e9, (0x1 << 14));
28606                 }
28607
28608                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28609                         for (core = 0; core <= 1; core++) {
28610                                 if (PHY_IPA(pi)) {
28611
28612                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28613                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28614                                                                  TX, core,
28615                                                                  TX_SSI_MUX,
28616                                                                  0xe);
28617                                         } else {
28618                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28619                                                                  TX, core,
28620                                                                  TX_SSI_MUX,
28621                                                                  0xc);
28622                                         }
28623                                 } else {
28624                                 }
28625                         }
28626                 } else {
28627                         if (PHY_IPA(pi)) {
28628
28629                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28630                                                 RADIO_2056_TX0,
28631                                                 (CHSPEC_IS5G
28632                                                  (pi->
28633                                                   radio_chanspec)) ? 0xc : 0xe);
28634                                 write_radio_reg(pi,
28635                                                 RADIO_2056_TX_TX_SSI_MUX |
28636                                                 RADIO_2056_TX1,
28637                                                 (CHSPEC_IS5G
28638                                                  (pi->
28639                                                   radio_chanspec)) ? 0xc : 0xe);
28640                         } else {
28641
28642                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28643                                                 RADIO_2056_TX0, 0x11);
28644                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28645                                                 RADIO_2056_TX1, 0x11);
28646                         }
28647                 }
28648         }
28649
28650         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28651                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28652                 (void)R_REG(pi->sh->osh, &pi->regs->maccontrol);
28653                 udelay(1);
28654         }
28655
28656         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28657                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
28658                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
28659         } else {
28660                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
28661                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
28662         }
28663
28664         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28665                 mod_phy_reg(pi, 0x222, (0xff << 0),
28666                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
28667         } else if (NREV_GT(pi->pubpi.phy_rev, 1)) {
28668                 mod_phy_reg(pi, 0x222, (0xff << 0),
28669                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
28670         }
28671
28672         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28673                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28674
28675         write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
28676
28677         write_phy_reg(pi, 0x1e9,
28678                       (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
28679
28680         write_phy_reg(pi, 0x1ea,
28681                       (target_pwr_qtrdbm[0] << 0) |
28682                       (target_pwr_qtrdbm[1] << 8));
28683
28684         tbl_len = 64;
28685         tbl_offset = 0;
28686         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28687              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28688
28689                 for (idx = 0; idx < tbl_len; idx++) {
28690                         num =
28691                             8 * (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
28692                         den = 32768 + a1[tbl_id - 26] * idx;
28693                         pwr_est = max(((4 * num + den / 2) / den), -8);
28694                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
28695                                 if (idx <=
28696                                     (uint) (31 - idle_tssi[tbl_id - 26] + 1))
28697                                         pwr_est =
28698                                             max(pwr_est,
28699                                                 target_pwr_qtrdbm[tbl_id - 26] +
28700                                                 1);
28701                         }
28702                         regval[idx] = (u32) pwr_est;
28703                 }
28704                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28705                                          regval);
28706         }
28707
28708         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28709         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
28710                                  pi->adj_pwr_tbl_nphy);
28711         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
28712                                  pi->adj_pwr_tbl_nphy);
28713
28714         if (pi->phyhang_avoid)
28715                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28716 }
28717
28718 static bool wlc_phy_txpwr_ison_nphy(phy_info_t *pi)
28719 {
28720         return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28721                                              (0x1 << 14) | (0x1 << 13));
28722 }
28723
28724 static u8 wlc_phy_txpwr_idx_cur_get_nphy(phy_info_t *pi, u8 core)
28725 {
28726         u16 tmp;
28727         tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
28728
28729         tmp = (tmp & (0x7f << 8)) >> 8;
28730         return (u8) tmp;
28731 }
28732
28733 static void
28734 wlc_phy_txpwr_idx_cur_set_nphy(phy_info_t *pi, u8 idx0, u8 idx1)
28735 {
28736         mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
28737
28738         if (NREV_GT(pi->pubpi.phy_rev, 1))
28739                 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
28740 }
28741
28742 u16 wlc_phy_txpwr_idx_get_nphy(phy_info_t *pi)
28743 {
28744         u16 tmp;
28745         u16 pwr_idx[2];
28746
28747         if (wlc_phy_txpwr_ison_nphy(pi)) {
28748                 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28749                 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28750
28751                 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28752         } else {
28753                 tmp =
28754                     ((pi->nphy_txpwrindex[PHY_CORE_0].
28755                       index_internal & 0xff) << 8) | (pi->
28756                                                       nphy_txpwrindex
28757                                                       [PHY_CORE_1].
28758                                                       index_internal & 0xff);
28759         }
28760
28761         return tmp;
28762 }
28763
28764 void wlc_phy_txpwr_papd_cal_nphy(phy_info_t *pi)
28765 {
28766         if (PHY_IPA(pi)
28767             && (pi->nphy_force_papd_cal
28768                 || (wlc_phy_txpwr_ison_nphy(pi)
28769                     &&
28770                     (((u32)
28771                       ABS(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28772                           pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28773                      || ((u32)
28774                          ABS(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28775                              pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4))))) {
28776                 wlc_phy_a4(pi, true);
28777         }
28778 }
28779
28780 void wlc_phy_txpwrctrl_enable_nphy(phy_info_t *pi, u8 ctrl_type)
28781 {
28782         u16 mask = 0, val = 0, ishw = 0;
28783         u8 ctr;
28784         uint core;
28785         u32 tbl_offset;
28786         u32 tbl_len;
28787         u16 regval[84];
28788
28789         if (pi->phyhang_avoid)
28790                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28791
28792         switch (ctrl_type) {
28793         case PHY_TPC_HW_OFF:
28794         case PHY_TPC_HW_ON:
28795                 pi->nphy_txpwrctrl = ctrl_type;
28796                 break;
28797         default:
28798                 break;
28799         }
28800
28801         if (ctrl_type == PHY_TPC_HW_OFF) {
28802                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28803
28804                         if (wlc_phy_txpwr_ison_nphy(pi)) {
28805                                 for (core = 0; core < pi->pubpi.phy_corenum;
28806                                      core++)
28807                                         pi->nphy_txpwr_idx[core] =
28808                                             wlc_phy_txpwr_idx_cur_get_nphy(pi,
28809                                                                            (u8)
28810                                                                            core);
28811                         }
28812
28813                 }
28814
28815                 tbl_len = 84;
28816                 tbl_offset = 64;
28817                 for (ctr = 0; ctr < tbl_len; ctr++) {
28818                         regval[ctr] = 0;
28819                 }
28820                 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28821                                          regval);
28822                 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28823                                          regval);
28824
28825                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28826
28827                         and_phy_reg(pi, 0x1e7,
28828                                     (u16) (~((0x1 << 15) |
28829                                                 (0x1 << 14) | (0x1 << 13))));
28830                 } else {
28831                         and_phy_reg(pi, 0x1e7,
28832                                     (u16) (~((0x1 << 14) | (0x1 << 13))));
28833                 }
28834
28835                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28836                         or_phy_reg(pi, 0x8f, (0x1 << 8));
28837                         or_phy_reg(pi, 0xa5, (0x1 << 8));
28838                 } else {
28839                         or_phy_reg(pi, 0xa5, (0x1 << 14));
28840                 }
28841
28842                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28843                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28844                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28845                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28846
28847                 if (NREV_LT(pi->pubpi.phy_rev, 2) && IS40MHZ(pi))
28848                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28849                                        MHF1_IQSWAP_WAR, WLC_BAND_ALL);
28850
28851         } else {
28852
28853                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28854                                          8, pi->adj_pwr_tbl_nphy);
28855                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28856                                          8, pi->adj_pwr_tbl_nphy);
28857
28858                 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28859                 mask = (0x1 << 14) | (0x1 << 13);
28860                 val = (ishw << 14) | (ishw << 13);
28861
28862                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28863                         mask |= (0x1 << 15);
28864                         val |= (ishw << 15);
28865                 }
28866
28867                 mod_phy_reg(pi, 0x1e7, mask, val);
28868
28869                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28870                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28871                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28872                                 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28873                         } else {
28874                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28875                                 if (NREV_GT(pi->pubpi.phy_rev, 1))
28876                                         mod_phy_reg(pi, 0x222,
28877                                                     (0xff << 0), 0x64);
28878                         }
28879                 }
28880
28881                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28882                         if ((pi->nphy_txpwr_idx[0] != 128)
28883                             && (pi->nphy_txpwr_idx[1] != 128)) {
28884                                 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28885                                                                pi->
28886                                                                nphy_txpwr_idx
28887                                                                [0],
28888                                                                pi->
28889                                                                nphy_txpwr_idx
28890                                                                [1]);
28891                         }
28892                 }
28893
28894                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28895                         and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28896                         and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28897                 } else {
28898                         and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28899                 }
28900
28901                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28902                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28903                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28904                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28905
28906                 if (NREV_LT(pi->pubpi.phy_rev, 2) && IS40MHZ(pi))
28907                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28908                                        0x0, WLC_BAND_ALL);
28909
28910                 if (PHY_IPA(pi)) {
28911                         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28912                                     0x29b, (0x1 << 2), (0) << 2);
28913
28914                         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28915                                     0x29b, (0x1 << 2), (0) << 2);
28916
28917                 }
28918
28919         }
28920
28921         if (pi->phyhang_avoid)
28922                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28923 }
28924
28925 void
28926 wlc_phy_txpwr_index_nphy(phy_info_t *pi, u8 core_mask, s8 txpwrindex,
28927                          bool restore_cals)
28928 {
28929         u8 core, txpwrctl_tbl;
28930         u16 tx_ind0, iq_ind0, lo_ind0;
28931         u16 m1m2;
28932         u32 txgain;
28933         u16 rad_gain, dac_gain;
28934         u8 bbmult;
28935         u32 iqcomp;
28936         u16 iqcomp_a, iqcomp_b;
28937         u32 locomp;
28938         u16 tmpval;
28939         u8 tx_pwr_ctrl_state;
28940         s32 rfpwr_offset;
28941         u16 regval[2];
28942
28943         if (pi->phyhang_avoid)
28944                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28945
28946         tx_ind0 = 192;
28947         iq_ind0 = 320;
28948         lo_ind0 = 448;
28949
28950         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28951
28952                 if ((core_mask & (1 << core)) == 0) {
28953                         continue;
28954                 }
28955
28956                 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28957
28958                 if (txpwrindex < 0) {
28959                         if (pi->nphy_txpwrindex[core].index < 0) {
28960
28961                                 continue;
28962                         }
28963
28964                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28965                                 mod_phy_reg(pi, 0x8f,
28966                                             (0x1 << 8),
28967                                             pi->nphy_txpwrindex[core].
28968                                             AfectrlOverride);
28969                                 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28970                                             pi->nphy_txpwrindex[core].
28971                                             AfectrlOverride);
28972                         } else {
28973                                 mod_phy_reg(pi, 0xa5,
28974                                             (0x1 << 14),
28975                                             pi->nphy_txpwrindex[core].
28976                                             AfectrlOverride);
28977                         }
28978
28979                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28980                                       0xaa : 0xab,
28981                                       pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28982
28983                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28984                                                  &pi->nphy_txpwrindex[core].
28985                                                  rad_gain);
28986
28987                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28988                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28989                         m1m2 |= ((core == PHY_CORE_0) ?
28990                                  (pi->nphy_txpwrindex[core].bbmult << 8) :
28991                                  (pi->nphy_txpwrindex[core].bbmult << 0));
28992                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28993
28994                         if (restore_cals) {
28995
28996                                 wlc_phy_table_write_nphy(pi, 15, 2,
28997                                                          (80 + 2 * core), 16,
28998                                                          (void *)&pi->
28999                                                          nphy_txpwrindex[core].
29000                                                          iqcomp_a);
29001
29002                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
29003                                                          16,
29004                                                          &pi->
29005                                                          nphy_txpwrindex[core].
29006                                                          locomp);
29007                                 wlc_phy_table_write_nphy(pi, 15, 1, (93 + core),
29008                                                          16,
29009                                                          (void *)&pi->
29010                                                          nphy_txpwrindex[core].
29011                                                          locomp);
29012                         }
29013
29014                         wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
29015
29016                         pi->nphy_txpwrindex[core].index_internal =
29017                             pi->nphy_txpwrindex[core].index_internal_save;
29018                 } else {
29019
29020                         if (pi->nphy_txpwrindex[core].index < 0) {
29021
29022                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29023                                         mod_phy_reg(pi, 0x8f,
29024                                                     (0x1 << 8),
29025                                                     pi->nphy_txpwrindex[core].
29026                                                     AfectrlOverride);
29027                                         mod_phy_reg(pi, 0xa5, (0x1 << 8),
29028                                                     pi->nphy_txpwrindex[core].
29029                                                     AfectrlOverride);
29030                                 } else {
29031                                         pi->nphy_txpwrindex[core].
29032                                             AfectrlOverride =
29033                                             read_phy_reg(pi, 0xa5);
29034                                 }
29035
29036                                 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
29037                                     read_phy_reg(pi,
29038                                                  (core ==
29039                                                   PHY_CORE_0) ? 0xaa : 0xab);
29040
29041                                 wlc_phy_table_read_nphy(pi, 7, 1,
29042                                                         (0x110 + core), 16,
29043                                                         &pi->
29044                                                         nphy_txpwrindex[core].
29045                                                         rad_gain);
29046
29047                                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
29048                                                         &tmpval);
29049                                 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
29050                                 tmpval &= 0xff;
29051                                 pi->nphy_txpwrindex[core].bbmult =
29052                                     (u8) tmpval;
29053
29054                                 wlc_phy_table_read_nphy(pi, 15, 2,
29055                                                         (80 + 2 * core), 16,
29056                                                         (void *)&pi->
29057                                                         nphy_txpwrindex[core].
29058                                                         iqcomp_a);
29059
29060                                 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
29061                                                         16,
29062                                                         (void *)&pi->
29063                                                         nphy_txpwrindex[core].
29064                                                         locomp);
29065
29066                                 pi->nphy_txpwrindex[core].index_internal_save =
29067                                     pi->nphy_txpwrindex[core].index_internal;
29068                         }
29069
29070                         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
29071                         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
29072
29073                         if (NREV_IS(pi->pubpi.phy_rev, 1))
29074                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
29075
29076                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29077                                                 (tx_ind0 + txpwrindex), 32,
29078                                                 &txgain);
29079
29080                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29081                                 rad_gain =
29082                                     (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
29083                         } else {
29084                                 rad_gain =
29085                                     (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
29086                         }
29087                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
29088                         bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
29089
29090                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29091                                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
29092                                                  0xa5), (0x1 << 8), (0x1 << 8));
29093                         } else {
29094                                 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
29095                         }
29096                         write_phy_reg(pi, (core == PHY_CORE_0) ?
29097                                       0xaa : 0xab, dac_gain);
29098
29099                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
29100                                                  &rad_gain);
29101
29102                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
29103                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
29104                         m1m2 |=
29105                             ((core ==
29106                               PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
29107
29108                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
29109
29110                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29111                                                 (iq_ind0 + txpwrindex), 32,
29112                                                 &iqcomp);
29113                         iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
29114                         iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
29115
29116                         if (restore_cals) {
29117                                 regval[0] = (u16) iqcomp_a;
29118                                 regval[1] = (u16) iqcomp_b;
29119                                 wlc_phy_table_write_nphy(pi, 15, 2,
29120                                                          (80 + 2 * core), 16,
29121                                                          regval);
29122                         }
29123
29124                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29125                                                 (lo_ind0 + txpwrindex), 32,
29126                                                 &locomp);
29127                         if (restore_cals) {
29128                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
29129                                                          16, &locomp);
29130                         }
29131
29132                         if (NREV_IS(pi->pubpi.phy_rev, 1))
29133                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
29134
29135                         if (PHY_IPA(pi)) {
29136                                 wlc_phy_table_read_nphy(pi,
29137                                                         (core ==
29138                                                          PHY_CORE_0 ?
29139                                                          NPHY_TBL_ID_CORE1TXPWRCTL
29140                                                          :
29141                                                          NPHY_TBL_ID_CORE2TXPWRCTL),
29142                                                         1, 576 + txpwrindex, 32,
29143                                                         &rfpwr_offset);
29144
29145                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
29146                                             0x29b, (0x1ff << 4),
29147                                             ((s16) rfpwr_offset) << 4);
29148
29149                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
29150                                             0x29b, (0x1 << 2), (1) << 2);
29151
29152                         }
29153
29154                         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
29155                 }
29156
29157                 pi->nphy_txpwrindex[core].index = txpwrindex;
29158         }
29159
29160         if (pi->phyhang_avoid)
29161                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
29162 }
29163
29164 void
29165 wlc_phy_txpower_sromlimit_get_nphy(phy_info_t *pi, uint chan, u8 *max_pwr,
29166                                    u8 txp_rate_idx)
29167 {
29168         u8 chan_freq_range;
29169
29170         chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
29171         switch (chan_freq_range) {
29172         case WL_CHAN_FREQ_RANGE_2G:
29173                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
29174                 break;
29175         case WL_CHAN_FREQ_RANGE_5GM:
29176                 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
29177                 break;
29178         case WL_CHAN_FREQ_RANGE_5GL:
29179                 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
29180                 break;
29181         case WL_CHAN_FREQ_RANGE_5GH:
29182                 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
29183                 break;
29184         default:
29185                 ASSERT(0);
29186                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
29187                 break;
29188         }
29189
29190         return;
29191 }
29192
29193 void wlc_phy_stay_in_carriersearch_nphy(phy_info_t *pi, bool enable)
29194 {
29195         u16 clip_off[] = { 0xffff, 0xffff };
29196
29197         ASSERT(0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
29198
29199         if (enable) {
29200                 if (pi->nphy_deaf_count == 0) {
29201                         pi->classifier_state =
29202                             wlc_phy_classifier_nphy(pi, 0, 0);
29203                         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
29204                         wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
29205                         wlc_phy_clip_det_nphy(pi, 1, clip_off);
29206                 }
29207
29208                 pi->nphy_deaf_count++;
29209
29210                 wlc_phy_resetcca_nphy(pi);
29211
29212         } else {
29213                 ASSERT(pi->nphy_deaf_count > 0);
29214
29215                 pi->nphy_deaf_count--;
29216
29217                 if (pi->nphy_deaf_count == 0) {
29218                         wlc_phy_classifier_nphy(pi, (0x7 << 0),
29219                                                 pi->classifier_state);
29220                         wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
29221                 }
29222         }
29223 }
29224
29225 void wlc_nphy_deaf_mode(phy_info_t *pi, bool mode)
29226 {
29227         wlapi_suspend_mac_and_wait(pi->sh->physhim);
29228
29229         if (mode) {
29230                 if (pi->nphy_deaf_count == 0)
29231                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
29232         } else {
29233                 if (pi->nphy_deaf_count > 0)
29234                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
29235         }
29236         wlapi_enable_mac(pi->sh->physhim);
29237 }