]> Pileus Git - ~andy/linux/blob - drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_n.c
staging: brcm80211: use int_sqrt kernel function iso driver implementation
[~andy/linux] / 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 <aiutils.h>
24 #include <sbchipc.h>
25 #include <wlc_pmu.h>
26
27 #include <bcmdevs.h>
28 #include <sbhnddma.h>
29
30 #include <wlc_phy_radio.h>
31 #include <wlc_phy_int.h>
32 #include <wlc_phyreg_n.h>
33 #include <wlc_phytbl_n.h>
34
35 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
36         read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
37         ((core == PHY_CORE_0) ? radio_type##_##jspace##0 : radio_type##_##jspace##1))
38 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
39         write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
40         ((core == PHY_CORE_0) ? radio_type##_##jspace##0 : radio_type##_##jspace##1), value);
41 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
42         write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value);
43
44 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
45         read_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##jspace##0##_##reg_name : \
46         radio_type##_##jspace##1##_##reg_name));
47 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
48         write_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##jspace##0##_##reg_name : \
49         radio_type##_##jspace##1##_##reg_name), value);
50 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
51         read_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##reg_name##_##jspace##0 : \
52         radio_type##_##reg_name##_##jspace##1));
53 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
54         write_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##reg_name##_##jspace##0 : \
55         radio_type##_##reg_name##_##jspace##1), value);
56
57 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
58 #define NPHY_ACI_CHANNEL_DELTA 5
59 #define NPHY_ACI_CHANNEL_SKIP 4
60 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
61 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
62 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
63 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
64 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
65 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
66
67 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
68
69 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
70
71 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
72
73 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
74
75 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
76
77 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
78
79 #define NPHY_NOISE_NOASSOC_ENTER_TH  400
80
81 #define NPHY_NOISE_ASSOC_ENTER_TH  400
82
83 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
84
85 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
86 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
87
88 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
89
90 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
91
92 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
93
94 #define NPHY_RSSICAL_MAXREAD 31
95
96 #define NPHY_RSSICAL_NPOLL 8
97 #define NPHY_RSSICAL_MAXD  (1<<20)
98 #define NPHY_MIN_RXIQ_PWR 2
99
100 #define NPHY_RSSICAL_W1_TARGET 25
101 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
102 #define NPHY_RSSICAL_NB_TARGET 0
103
104 #define NPHY_RSSICAL_W1_TARGET_REV3 29
105 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
106
107 #define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
108 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
109 #define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
110 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - NPHY_RSSICAL_MAXREAD)
111 #define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
112 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - NPHY_RSSICAL_MAXREAD)
113 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
114 #define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
115                                ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
116 #define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
117                                ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
118 #define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
119                                ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
120
121 #define NPHY_IQCAL_NUMGAINS 9
122 #define NPHY_N_GCTL 0x66
123
124 #define NPHY_PAPD_EPS_TBL_SIZE 64
125 #define NPHY_PAPD_SCL_TBL_SIZE 64
126 #define NPHY_NUM_DIG_FILT_COEFFS 15
127
128 #define NPHY_PAPD_COMP_OFF 0
129 #define NPHY_PAPD_COMP_ON  1
130
131 #define NPHY_SROM_TEMPSHIFT             32
132 #define NPHY_SROM_MAXTEMPOFFSET         16
133 #define NPHY_SROM_MINTEMPOFFSET         -16
134
135 #define NPHY_CAL_MAXTEMPDELTA           64
136
137 #define NPHY_NOISEVAR_TBLLEN40 256
138 #define NPHY_NOISEVAR_TBLLEN20 128
139
140 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
141
142 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
143
144 typedef struct _nphy_iqcal_params {
145         u16 txlpf;
146         u16 txgm;
147         u16 pga;
148         u16 pad;
149         u16 ipa;
150         u16 cal_gain;
151         u16 ncorr[5];
152 } nphy_iqcal_params_t;
153
154 typedef struct _nphy_txiqcal_ladder {
155         u8 percent;
156         u8 g_env;
157 } nphy_txiqcal_ladder_t;
158
159 typedef struct {
160         nphy_txgains_t gains;
161         bool useindex;
162         u8 index;
163 } nphy_ipa_txcalgains_t;
164
165 typedef struct nphy_papd_restore_state_t {
166         u16 fbmix[2];
167         u16 vga_master[2];
168         u16 intpa_master[2];
169         u16 afectrl[2];
170         u16 afeoverride[2];
171         u16 pwrup[2];
172         u16 atten[2];
173         u16 mm;
174 } nphy_papd_restore_state;
175
176 typedef struct _nphy_ipa_txrxgain {
177         u16 hpvga;
178         u16 lpf_biq1;
179         u16 lpf_biq0;
180         u16 lna2;
181         u16 lna1;
182         s8 txpwrindex;
183 } nphy_ipa_txrxgain_t;
184
185 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
186
187 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_5GHz[] = { {0, 0, 0, 0, 0, 100},
188 {0, 0, 0, 0, 0, 50},
189 {0, 0, 0, 0, 0, -1},
190 {0, 0, 0, 3, 0, -1},
191 {0, 0, 3, 3, 0, -1},
192 {0, 2, 3, 3, 0, -1}
193 };
194
195 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_2GHz[] = { {0, 0, 0, 0, 0, 128},
196 {0, 0, 0, 0, 0, 70},
197 {0, 0, 0, 0, 0, 20},
198 {0, 0, 0, 3, 0, 20},
199 {0, 0, 3, 3, 0, 20},
200 {0, 2, 3, 3, 0, 20}
201 };
202
203 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = { {0, 0, 0, 0, 0, 100},
204 {0, 0, 0, 0, 0, 50},
205 {0, 0, 0, 0, 0, -1},
206 {0, 0, 0, 3, 0, -1},
207 {0, 0, 3, 3, 0, -1},
208 {0, 0, 5, 3, 0, -1}
209 };
210
211 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = { {0, 0, 0, 0, 0, 10},
212 {0, 0, 0, 1, 0, 10},
213 {0, 0, 1, 2, 0, 10},
214 {0, 0, 1, 3, 0, 10},
215 {0, 0, 4, 3, 0, 10},
216 {0, 0, 6, 3, 0, 10}
217 };
218
219 #define NPHY_RXCAL_TONEAMP 181
220 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
221 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
222
223 enum {
224         NPHY_RXCAL_GAIN_INIT = 0,
225         NPHY_RXCAL_GAIN_UP,
226         NPHY_RXCAL_GAIN_DOWN
227 };
228
229 #define wlc_phy_get_papd_nphy(pi) \
230         (read_phy_reg((pi), 0x1e7) & \
231                         ((0x1 << 15) | \
232                         (0x1 << 14) | \
233                         (0x1 << 13)))
234
235 #define TXFILT_SHAPING_OFDM20   0
236 #define TXFILT_SHAPING_OFDM40   1
237 #define TXFILT_SHAPING_CCK      2
238 #define TXFILT_DEFAULT_OFDM20   3
239 #define TXFILT_DEFAULT_OFDM40   4
240
241 u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
242         {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
243          230, -44, 230, 201, -191, 201},
244         {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
245          26, 34, -32, 34},
246         {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
247          121, -73, 121, 91, 124, 91},
248         {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
249          151, 301, 151, 602, -752, 602},
250         {-92, 58, -96, 49, -104, 44, 17, 35, 17,
251          12, 25, 12, 13, 27, 13},
252         {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
253          230, -44, 230, 201, -191, 201},
254         {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
255          0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
256 };
257
258 typedef struct _chan_info_nphy_2055 {
259         u16 chan;
260         u16 freq;
261         uint unknown;
262         u8 RF_pll_ref;
263         u8 RF_rf_pll_mod1;
264         u8 RF_rf_pll_mod0;
265         u8 RF_vco_cap_tail;
266         u8 RF_vco_cal1;
267         u8 RF_vco_cal2;
268         u8 RF_pll_lf_c1;
269         u8 RF_pll_lf_r1;
270         u8 RF_pll_lf_c2;
271         u8 RF_lgbuf_cen_buf;
272         u8 RF_lgen_tune1;
273         u8 RF_lgen_tune2;
274         u8 RF_core1_lgbuf_a_tune;
275         u8 RF_core1_lgbuf_g_tune;
276         u8 RF_core1_rxrf_reg1;
277         u8 RF_core1_tx_pga_pad_tn;
278         u8 RF_core1_tx_mx_bgtrim;
279         u8 RF_core2_lgbuf_a_tune;
280         u8 RF_core2_lgbuf_g_tune;
281         u8 RF_core2_rxrf_reg1;
282         u8 RF_core2_tx_pga_pad_tn;
283         u8 RF_core2_tx_mx_bgtrim;
284         u16 PHY_BW1a;
285         u16 PHY_BW2;
286         u16 PHY_BW3;
287         u16 PHY_BW4;
288         u16 PHY_BW5;
289         u16 PHY_BW6;
290 } chan_info_nphy_2055_t;
291
292 typedef struct _chan_info_nphy_radio205x {
293         u16 chan;
294         u16 freq;
295         u8 RF_SYN_pll_vcocal1;
296         u8 RF_SYN_pll_vcocal2;
297         u8 RF_SYN_pll_refdiv;
298         u8 RF_SYN_pll_mmd2;
299         u8 RF_SYN_pll_mmd1;
300         u8 RF_SYN_pll_loopfilter1;
301         u8 RF_SYN_pll_loopfilter2;
302         u8 RF_SYN_pll_loopfilter3;
303         u8 RF_SYN_pll_loopfilter4;
304         u8 RF_SYN_pll_loopfilter5;
305         u8 RF_SYN_reserved_addr27;
306         u8 RF_SYN_reserved_addr28;
307         u8 RF_SYN_reserved_addr29;
308         u8 RF_SYN_logen_VCOBUF1;
309         u8 RF_SYN_logen_MIXER2;
310         u8 RF_SYN_logen_BUF3;
311         u8 RF_SYN_logen_BUF4;
312         u8 RF_RX0_lnaa_tune;
313         u8 RF_RX0_lnag_tune;
314         u8 RF_TX0_intpaa_boost_tune;
315         u8 RF_TX0_intpag_boost_tune;
316         u8 RF_TX0_pada_boost_tune;
317         u8 RF_TX0_padg_boost_tune;
318         u8 RF_TX0_pgaa_boost_tune;
319         u8 RF_TX0_pgag_boost_tune;
320         u8 RF_TX0_mixa_boost_tune;
321         u8 RF_TX0_mixg_boost_tune;
322         u8 RF_RX1_lnaa_tune;
323         u8 RF_RX1_lnag_tune;
324         u8 RF_TX1_intpaa_boost_tune;
325         u8 RF_TX1_intpag_boost_tune;
326         u8 RF_TX1_pada_boost_tune;
327         u8 RF_TX1_padg_boost_tune;
328         u8 RF_TX1_pgaa_boost_tune;
329         u8 RF_TX1_pgag_boost_tune;
330         u8 RF_TX1_mixa_boost_tune;
331         u8 RF_TX1_mixg_boost_tune;
332         u16 PHY_BW1a;
333         u16 PHY_BW2;
334         u16 PHY_BW3;
335         u16 PHY_BW4;
336         u16 PHY_BW5;
337         u16 PHY_BW6;
338 } chan_info_nphy_radio205x_t;
339
340 typedef struct _chan_info_nphy_radio2057 {
341         u16 chan;
342         u16 freq;
343         u8 RF_vcocal_countval0;
344         u8 RF_vcocal_countval1;
345         u8 RF_rfpll_refmaster_sparextalsize;
346         u8 RF_rfpll_loopfilter_r1;
347         u8 RF_rfpll_loopfilter_c2;
348         u8 RF_rfpll_loopfilter_c1;
349         u8 RF_cp_kpd_idac;
350         u8 RF_rfpll_mmd0;
351         u8 RF_rfpll_mmd1;
352         u8 RF_vcobuf_tune;
353         u8 RF_logen_mx2g_tune;
354         u8 RF_logen_mx5g_tune;
355         u8 RF_logen_indbuf2g_tune;
356         u8 RF_logen_indbuf5g_tune;
357         u8 RF_txmix2g_tune_boost_pu_core0;
358         u8 RF_pad2g_tune_pus_core0;
359         u8 RF_pga_boost_tune_core0;
360         u8 RF_txmix5g_boost_tune_core0;
361         u8 RF_pad5g_tune_misc_pus_core0;
362         u8 RF_lna2g_tune_core0;
363         u8 RF_lna5g_tune_core0;
364         u8 RF_txmix2g_tune_boost_pu_core1;
365         u8 RF_pad2g_tune_pus_core1;
366         u8 RF_pga_boost_tune_core1;
367         u8 RF_txmix5g_boost_tune_core1;
368         u8 RF_pad5g_tune_misc_pus_core1;
369         u8 RF_lna2g_tune_core1;
370         u8 RF_lna5g_tune_core1;
371         u16 PHY_BW1a;
372         u16 PHY_BW2;
373         u16 PHY_BW3;
374         u16 PHY_BW4;
375         u16 PHY_BW5;
376         u16 PHY_BW6;
377 } chan_info_nphy_radio2057_t;
378
379 typedef struct _chan_info_nphy_radio2057_rev5 {
380         u16 chan;
381         u16 freq;
382         u8 RF_vcocal_countval0;
383         u8 RF_vcocal_countval1;
384         u8 RF_rfpll_refmaster_sparextalsize;
385         u8 RF_rfpll_loopfilter_r1;
386         u8 RF_rfpll_loopfilter_c2;
387         u8 RF_rfpll_loopfilter_c1;
388         u8 RF_cp_kpd_idac;
389         u8 RF_rfpll_mmd0;
390         u8 RF_rfpll_mmd1;
391         u8 RF_vcobuf_tune;
392         u8 RF_logen_mx2g_tune;
393         u8 RF_logen_indbuf2g_tune;
394         u8 RF_txmix2g_tune_boost_pu_core0;
395         u8 RF_pad2g_tune_pus_core0;
396         u8 RF_lna2g_tune_core0;
397         u8 RF_txmix2g_tune_boost_pu_core1;
398         u8 RF_pad2g_tune_pus_core1;
399         u8 RF_lna2g_tune_core1;
400         u16 PHY_BW1a;
401         u16 PHY_BW2;
402         u16 PHY_BW3;
403         u16 PHY_BW4;
404         u16 PHY_BW5;
405         u16 PHY_BW6;
406 } chan_info_nphy_radio2057_rev5_t;
407
408 typedef struct nphy_sfo_cfg {
409         u16 PHY_BW1a;
410         u16 PHY_BW2;
411         u16 PHY_BW3;
412         u16 PHY_BW4;
413         u16 PHY_BW5;
414         u16 PHY_BW6;
415 } nphy_sfo_cfg_t;
416
417 static chan_info_nphy_2055_t chan_info_nphy_2055[] = {
418         {
419          184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
420          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
421          0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
422         {
423          186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
424          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
425          0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
426         {
427          188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
428          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
429          0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
430         {
431          190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
432          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
433          0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
434         {
435          192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
436          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
437          0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
438         {
439          194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
440          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
441          0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
442         {
443          196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
444          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
445          0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
446         {
447          198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
448          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
449          0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
450         {
451          200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
452          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
453          0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
454         {
455          202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
456          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
457          0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
458         {
459          204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
460          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
461          0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
462         {
463          206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
464          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
465          0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
466         {
467          208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
468          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
469          0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
470         {
471          210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
472          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
473          0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
474         {
475          212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
476          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
477          0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
478         {
479          214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
480          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
481          0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
482         {
483          216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
484          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
485          0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
486         {
487          218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
488          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
489          0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
490         {
491          220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
492          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
493          0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
494         {
495          222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
496          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
497          0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
498         {
499          224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
500          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
501          0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
502         {
503          226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
504          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
505          0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
506         {
507          228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
508          0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
509          0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
510         {
511          32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
512          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
513          0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
514         {
515          34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
516          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
517          0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
518         {
519          36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
520          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
521          0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
522         {
523          38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
524          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
525          0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
526         {
527          40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
528          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
529          0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
530         {
531          42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
532          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
533          0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
534         {
535          44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
536          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
537          0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
538         {
539          46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
540          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
541          0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
542         {
543          48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
544          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
545          0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
546         {
547          50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
548          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
549          0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
550         {
551          52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
552          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
553          0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
554         {
555          54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
556          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
557          0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
558         {
559          56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
560          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
561          0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
562         {
563          58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
564          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
565          0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
566         {
567          60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
568          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
569          0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
570         {
571          62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
572          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
573          0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
574         {
575          64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
576          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
577          0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
578         {
579          66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
580          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
581          0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
582         {
583          68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
584          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
585          0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
586         {
587          70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
588          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
589          0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
590         {
591          72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
592          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
593          0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
594         {
595          74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
596          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
597          0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
598         {
599          76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
600          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
601          0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
602         {
603          78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
604          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
605          0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
606         {
607          80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
608          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
609          0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
610         {
611          82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
612          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
613          0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
614         {
615          84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
616          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
617          0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
618         {
619          86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
620          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
621          0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
622         {
623          88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
624          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
625          0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
626         {
627          90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
628          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
629          0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
630         {
631          92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
632          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
633          0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
634         {
635          94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
636          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
637          0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
638         {
639          96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
640          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
641          0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
642         {
643          98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
644          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
645          0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
646         {
647          100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
648          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
649          0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
650         {
651          102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
652          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
653          0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
654         {
655          104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
656          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
657          0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
658         {
659          106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
660          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
661          0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
662         {
663          108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
664          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
665          0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
666         {
667          110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
668          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
669          0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
670         {
671          112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
672          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
673          0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
674         {
675          114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
676          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
677          0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
678         {
679          116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
680          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
681          0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
682         {
683          118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
684          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
685          0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
686         {
687          120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
688          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
689          0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
690         {
691          122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
692          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
693          0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
694         {
695          124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
696          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
697          0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
698         {
699          126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
700          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
701          0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
702         {
703          128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
704          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
705          0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
706         {
707          130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
708          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
709          0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
710         {
711          132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
712          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
713          0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
714         {
715          134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
716          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
717          0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
718         {
719          136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
720          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
721          0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
722         {
723          138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
724          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
725          0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
726         {
727          140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
728          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
729          0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
730         {
731          142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
732          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
733          0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
734         {
735          144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
736          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
737          0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
738         {
739          145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
740          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
741          0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
742         {
743          146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
744          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
745          0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
746         {
747          147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
748          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
749          0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
750         {
751          148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
752          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
753          0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
754         {
755          149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
756          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
757          0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
758         {
759          150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
760          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
761          0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
762         {
763          151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
764          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
765          0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
766         {
767          152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
768          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
769          0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
770         {
771          153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
772          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
773          0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
774         {
775          154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
776          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
777          0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
778         {
779          155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
780          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
781          0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
782         {
783          156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
784          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
785          0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
786         {
787          157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
788          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
789          0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
790         {
791          158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
792          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
793          0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
794         {
795          159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
796          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
797          0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
798         {
799          160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
800          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
801          0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
802         {
803          161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
804          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
805          0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
806         {
807          162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
808          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
809          0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
810         {
811          163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
812          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
813          0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
814         {
815          164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
816          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
817          0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
818         {
819          165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
820          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
821          0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
822         {
823          166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
824          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
825          0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
826         {
827          168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
828          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
829          0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
830         {
831          170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
832          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
833          0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
834         {
835          172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
836          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
837          0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
838         {
839          174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
840          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
841          0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
842         {
843          176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
844          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
845          0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
846         {
847          178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
848          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
849          0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
850         {
851          180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
852          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
853          0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
854         {
855          182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
856          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
857          0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
858         {
859          1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
860          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
861          0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
862         {
863          2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
864          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
865          0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
866         {
867          3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
868          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
869          0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
870         {
871          4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
872          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
873          0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
874         {
875          5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
876          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
877          0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
878         {
879          6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
880          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
881          0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
882         {
883          7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
884          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
885          0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
886         {
887          8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
888          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
889          0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
890         {
891          9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
892          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
893          0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
894         {
895          10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
896          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
897          0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
898         {
899          11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
900          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
901          0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
902         {
903          12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
904          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
905          0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
906         {
907          13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
908          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
909          0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
910         {
911          14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
912          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
913          0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
914 };
915
916 static chan_info_nphy_radio205x_t chan_info_nphyrev3_2056[] = {
917         {
918          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
919          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
920          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
921          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
922         {
923          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
924          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
925          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
926          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
927         {
928          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
929          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
930          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
931          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
932         {
933          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
934          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
935          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
936          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
937         {
938          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
939          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
940          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
941          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
942         {
943          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
944          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
945          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
946          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
947         {
948          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
949          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
950          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
951          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
952         {
953          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
954          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
955          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
956          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
957         {
958          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
959          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
960          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
961          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
962         {
963          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
964          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
965          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
966          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
967         {
968          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
969          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
970          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
971          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
972         {
973          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
974          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
975          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
976          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
977         {
978          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
979          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
980          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
981          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
982         {
983          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
984          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
985          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
986          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
987         {
988          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
989          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
990          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
991          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
992         {
993          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
994          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
995          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
996          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
997         {
998          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
999          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1000          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1001          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1002         {
1003          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1004          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1005          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1006          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1007         {
1008          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1009          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1010          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1011          0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1012         {
1013          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1014          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1015          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1016          0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1017         {
1018          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1019          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1020          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1021          0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1022         {
1023          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1024          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1025          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1026          0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1027         {
1028          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1029          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1030          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1031          0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1032         {
1033          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1034          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1035          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1036          0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1037         {
1038          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1039          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1040          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1041          0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1042         {
1043          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1044          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1045          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1046          0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1047         {
1048          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1049          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1050          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1051          0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1052         {
1053          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1054          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1055          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1056          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1057         {
1058          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1059          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1060          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1061          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1062         {
1063          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1064          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1065          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1066          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1067         {
1068          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1069          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1070          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1071          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1072         {
1073          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1074          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1075          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1076          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1077         {
1078          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1079          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1080          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1081          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1082         {
1083          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1084          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1085          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1086          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1087         {
1088          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1089          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1090          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1091          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1092         {
1093          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1094          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1095          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1096          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1097         {
1098          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1099          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1100          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1101          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1102         {
1103          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1104          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1105          0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1106          0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1107         {
1108          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1109          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1110          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1111          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1112         {
1113          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1114          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1115          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1116          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1117         {
1118          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1119          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1120          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1121          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1122         {
1123          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1124          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1125          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1126          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1127         {
1128          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1129          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1130          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1131          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1132         {
1133          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1134          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1135          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1136          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1137         {
1138          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1139          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1140          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1141          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1142         {
1143          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1144          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1145          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1146          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1147         {
1148          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1149          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1150          0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1151          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1152         {
1153          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1154          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1155          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1156          0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1157         {
1158          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1159          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1160          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1161          0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1162         {
1163          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1164          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1165          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1166          0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1167         {
1168          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1169          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1170          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1171          0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1172         {
1173          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1174          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1175          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1176          0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1177         {
1178          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1179          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1180          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1181          0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1182         {
1183          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1184          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1185          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1186          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1187         {
1188          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1189          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1190          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1191          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1192         {
1193          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1194          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1195          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1196          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1197         {
1198          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1199          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1200          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1201          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1202         {
1203          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1204          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1205          0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1206          0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1207         {
1208          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1209          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1210          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1211          0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1212         {
1213          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1214          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1215          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1216          0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1217         {
1218          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1219          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1220          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1221          0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1222         {
1223          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1224          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1225          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1226          0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1227         {
1228          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1229          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1230          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1231          0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1232         {
1233          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1234          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1235          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1236          0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1237         {
1238          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1239          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1240          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1241          0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1242         {
1243          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1244          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1245          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1246          0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1247         {
1248          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1249          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1250          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1251          0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1252         {
1253          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1254          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1255          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1256          0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1257         {
1258          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1259          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1260          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1261          0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1262         {
1263          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1264          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1265          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1266          0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1267         {
1268          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1269          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1270          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1271          0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1272         {
1273          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1274          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1275          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1276          0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1277         {
1278          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1279          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1280          0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1281          0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1282         {
1283          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1284          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1285          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1286          0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1287         {
1288          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1289          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1290          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1291          0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1292         {
1293          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1294          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1295          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1296          0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1297         {
1298          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1299          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1300          0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1301          0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1302         {
1303          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1304          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1305          0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1306          0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1307         {
1308          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1309          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1310          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1311          0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1312         {
1313          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1314          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1315          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1316          0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1317         {
1318          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1319          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1320          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1321          0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1322         {
1323          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1324          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1325          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1326          0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1327         {
1328          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1329          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1330          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1331          0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1332         {
1333          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1334          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1335          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1336          0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1337         {
1338          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1339          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1340          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1341          0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1342         {
1343          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1344          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1345          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1346          0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1347         {
1348          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1349          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1350          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1351          0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1352         {
1353          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1354          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1355          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1356          0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1357         {
1358          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1359          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1360          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1361          0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1362         {
1363          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1364          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1365          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1366          0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1367         {
1368          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1369          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1370          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1371          0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1372         {
1373          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1374          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1375          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1376          0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1377         {
1378          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1379          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1380          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1381          0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1382         {
1383          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1384          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1385          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1386          0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1387         {
1388          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1389          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1390          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1391          0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1392         {
1393          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1394          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1395          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1396          0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1397         {
1398          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1399          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1400          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1401          0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1402         {
1403          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1404          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1405          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1406          0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1407         {
1408          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1409          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1410          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1411          0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1412         {
1413          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1414          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1415          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1416          0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1417         {
1418          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1419          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1420          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1421          0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1422         {
1423          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1424          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1425          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1426          0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1427         {
1428          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1429          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1430          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1431          0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1432         {
1433          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1434          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1435          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1436          0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1437         {
1438          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1439          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1440          0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1441          0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1442         {
1443          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1444          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1445          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1446          0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1447         {
1448          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1449          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1450          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1451          0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1452         {
1453          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1454          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1455          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1456          0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1457         {
1458          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1459          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1460          0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1461          0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1462         {
1463          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1464          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1465          0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1466          0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1467         {
1468          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1469          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1470          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1471          0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1472         {
1473          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1474          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1475          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1476          0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1477         {
1478          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1479          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1480          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1481          0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1482         {
1483          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1484          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1485          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1486          0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1487         {
1488          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1489          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1490          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1491          0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1492         {
1493          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1494          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1495          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1496          0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1497         {
1498          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1499          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1500          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1501          0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1502         {
1503          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1504          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1505          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1506          0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1507         {
1508          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1509          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1510          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1511          0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1512         {
1513          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1514          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1515          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1516          0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1517         {
1518          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1519          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1520          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1521          0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1522         {
1523          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1524          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1525          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1526          0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1527         {
1528          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1529          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1530          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1531          0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1532         {
1533          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1534          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1535          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1536          0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1537 };
1538
1539 static chan_info_nphy_radio205x_t chan_info_nphyrev4_2056_A1[] = {
1540         {
1541          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1542          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1543          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1544          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1545         {
1546          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1547          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1548          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1549          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1550         {
1551          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1552          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1553          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1554          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1555         {
1556          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1557          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1558          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1559          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1560         {
1561          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1562          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1563          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1564          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1565         {
1566          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1567          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1568          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1569          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1570         {
1571          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1572          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1573          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1574          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1575         {
1576          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1577          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1578          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1579          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1580         {
1581          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1582          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1583          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1584          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1585         {
1586          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1587          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1588          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1589          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1590         {
1591          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1592          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1593          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1594          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1595         {
1596          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1597          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1598          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1599          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1600         {
1601          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1602          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1603          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1604          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1605         {
1606          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1607          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1608          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1609          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1610         {
1611          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1612          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1613          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1614          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1615         {
1616          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1617          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1618          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1619          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1620         {
1621          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1622          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1623          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1624          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1625         {
1626          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1627          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1628          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1629          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1630         {
1631          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1632          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1633          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1634          0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1635         {
1636          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1637          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1638          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1639          0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1640         {
1641          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1642          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1643          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1644          0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1645         {
1646          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1647          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1648          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1649          0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1650         {
1651          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1652          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1653          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1654          0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1655         {
1656          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1657          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1658          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1659          0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1660         {
1661          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1662          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1663          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1664          0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1665         {
1666          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1667          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1668          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1669          0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1670         {
1671          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1672          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1673          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1674          0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1675         {
1676          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1677          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1678          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1679          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1680         {
1681          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1682          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1683          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1684          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1685         {
1686          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1687          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1688          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1689          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1690         {
1691          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1692          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1693          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1694          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1695         {
1696          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1697          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1698          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1699          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1700         {
1701          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1702          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1703          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1704          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1705         {
1706          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1707          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1708          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1709          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1710         {
1711          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1712          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1713          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1714          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1715         {
1716          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1717          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1718          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1719          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1720         {
1721          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1722          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1723          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1724          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1725         {
1726          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1727          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1728          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1729          0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1730         {
1731          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1732          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1733          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1734          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1735         {
1736          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1737          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1738          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1739          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1740         {
1741          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1742          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1743          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1744          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1745         {
1746          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1747          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1748          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1749          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1750         {
1751          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1752          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1753          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1754          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1755         {
1756          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1757          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1758          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1759          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1760         {
1761          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1762          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1763          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1764          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1765         {
1766          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1767          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1768          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1769          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1770         {
1771          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1772          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1773          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1774          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1775         {
1776          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1777          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1778          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1779          0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1780         {
1781          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1782          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1783          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1784          0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1785         {
1786          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1787          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1788          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1789          0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1790         {
1791          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1792          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1793          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1794          0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1795         {
1796          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1797          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1798          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1799          0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1800         {
1801          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1802          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1803          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1804          0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1805         {
1806          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1807          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1808          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1809          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1810         {
1811          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1812          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1813          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1814          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1815         {
1816          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1817          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1818          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1819          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1820         {
1821          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1822          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1823          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1824          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1825         {
1826          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1827          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1828          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1829          0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1830         {
1831          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1832          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1833          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1834          0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1835         {
1836          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1837          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1838          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1839          0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1840         {
1841          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1842          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1843          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1844          0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1845         {
1846          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1847          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1848          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1849          0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1850         {
1851          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1852          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1853          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1854          0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1855         {
1856          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1857          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1858          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1859          0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1860         {
1861          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1862          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1863          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1864          0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1865         {
1866          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1867          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1868          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1869          0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1870         {
1871          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1872          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1873          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1874          0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1875         {
1876          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1877          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1878          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1879          0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1880         {
1881          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1882          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1883          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1884          0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1885         {
1886          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1887          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1888          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1889          0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1890         {
1891          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1892          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1893          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1894          0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1895         {
1896          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1897          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1898          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1899          0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1900         {
1901          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1902          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1903          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1904          0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1905         {
1906          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1907          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1908          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1909          0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1910         {
1911          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1912          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1913          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1914          0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1915         {
1916          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1917          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1918          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1919          0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1920         {
1921          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1922          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1923          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1924          0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1925         {
1926          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1927          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1928          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1929          0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1930         {
1931          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1932          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1933          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1934          0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1935         {
1936          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1937          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1938          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1939          0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1940         {
1941          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1942          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1943          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1944          0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1945         {
1946          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1947          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1948          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1949          0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1950         {
1951          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1952          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1953          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1954          0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1955         {
1956          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1957          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1958          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1959          0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1960         {
1961          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1962          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1963          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1964          0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1965         {
1966          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1967          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1968          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1969          0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1970         {
1971          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1972          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1973          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1974          0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1975         {
1976          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1977          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1978          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1979          0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1980         {
1981          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1982          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1983          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1984          0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1985         {
1986          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1987          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1988          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1989          0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1990         {
1991          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1992          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1993          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1994          0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1995         {
1996          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1997          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1998          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1999          0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2000         {
2001          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2002          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2003          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2004          0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2005         {
2006          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2007          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2008          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2009          0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2010         {
2011          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2012          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2013          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2014          0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2015         {
2016          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2017          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2018          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2019          0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2020         {
2021          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2022          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2023          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2024          0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2025         {
2026          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2027          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2028          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2029          0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2030         {
2031          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2032          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2033          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2034          0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2035         {
2036          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2037          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2038          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2039          0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2040         {
2041          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2042          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2043          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2044          0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2045         {
2046          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2047          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2048          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2049          0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2050         {
2051          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2052          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2053          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2054          0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2055         {
2056          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2057          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2058          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2059          0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2060         {
2061          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2062          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2063          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2064          0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2065         {
2066          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2067          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2068          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2069          0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2070         {
2071          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2072          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2073          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2074          0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2075         {
2076          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2077          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2078          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2079          0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2080         {
2081          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2082          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2083          0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2084          0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2085         {
2086          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2087          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2088          0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2089          0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2090         {
2091          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2092          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2093          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2094          0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2095         {
2096          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2097          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2098          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2099          0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2100         {
2101          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2102          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2103          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2104          0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2105         {
2106          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2107          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2108          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2109          0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2110         {
2111          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2112          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2113          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2114          0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2115         {
2116          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2117          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2118          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2119          0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2120         {
2121          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2122          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2123          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2124          0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2125         {
2126          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2127          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2128          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2129          0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2130         {
2131          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2132          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2133          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2134          0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2135         {
2136          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2137          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2138          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2139          0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2140         {
2141          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2142          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2143          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2144          0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2145         {
2146          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2147          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2148          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2149          0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2150         {
2151          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2152          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2153          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2154          0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2155         {
2156          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2157          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2158          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2159          0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2160 };
2161
2162 static chan_info_nphy_radio205x_t chan_info_nphyrev5_2056v5[] = {
2163         {
2164          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2165          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2166          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2167          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2168         {
2169          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2170          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2171          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2172          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2173         {
2174          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2175          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2176          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2177          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2178         {
2179          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2180          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2181          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2182          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2183         {
2184          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2185          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2186          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2187          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2188         {
2189          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2190          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2191          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2192          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2193         {
2194          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2195          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2196          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2197          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2198         {
2199          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2200          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2201          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2202          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2203         {
2204          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2205          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2206          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2207          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2208         {
2209          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2210          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2211          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2212          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2213         {
2214          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2215          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2216          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2217          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2218         {
2219          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2220          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2221          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2222          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2223         {
2224          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2225          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2226          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2227          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2228         {
2229          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2230          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2231          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2232          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2233         {
2234          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2235          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2236          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2237          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2238         {
2239          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2240          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2241          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2242          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2243         {
2244          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2245          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2246          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2247          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2248         {
2249          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2250          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2251          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2252          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2253         {
2254          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2255          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2256          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2257          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2258         {
2259          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2260          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2261          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2262          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2263         {
2264          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2265          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2266          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2267          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2268         {
2269          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2270          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2271          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2272          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2273         {
2274          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2275          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2276          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2277          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2278         {
2279          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2280          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2281          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2282          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2283         {
2284          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2285          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2286          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2287          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2288         {
2289          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2290          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2291          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2292          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2293         {
2294          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2295          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2296          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2297          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2298         {
2299          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2300          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2301          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2302          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2303         {
2304          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2305          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2306          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2307          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2308         {
2309          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2310          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2311          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2312          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2313         {
2314          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2315          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2316          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2317          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2318         {
2319          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2320          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2321          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2322          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2323         {
2324          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2325          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2326          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2327          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2328         {
2329          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2330          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2331          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2332          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2333         {
2334          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2335          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2336          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2337          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2338         {
2339          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2340          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2341          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2342          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2343         {
2344          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2345          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2346          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2347          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2348         {
2349          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2350          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2351          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2352          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2353         {
2354          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2355          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2356          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2357          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2358         {
2359          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2360          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2361          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2362          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2363         {
2364          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2365          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2366          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2367          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2368         {
2369          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2370          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2371          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2372          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2373         {
2374          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2375          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2376          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2377          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2378         {
2379          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2380          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2381          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2382          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2383         {
2384          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2385          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2386          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2387          0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2388         {
2389          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2390          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2391          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2392          0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2393         {
2394          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2395          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2396          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2397          0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2398         {
2399          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2400          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2401          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2402          0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2403         {
2404          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2405          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2406          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2407          0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2408         {
2409          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2410          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2411          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2412          0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2413         {
2414          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2415          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2416          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2417          0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2418         {
2419          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2420          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2421          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2422          0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2423         {
2424          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2425          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2426          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2427          0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2428         {
2429          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2430          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2431          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2432          0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2433         {
2434          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2435          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2436          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2437          0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2438         {
2439          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2440          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2441          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2442          0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2443         {
2444          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2445          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2446          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2447          0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2448         {
2449          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2450          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2451          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2452          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2453         {
2454          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2455          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2456          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2457          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2458         {
2459          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2460          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2461          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2462          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2463         {
2464          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2465          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2466          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2467          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2468         {
2469          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2470          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2471          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2472          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2473         {
2474          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2475          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2476          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2477          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2478         {
2479          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2480          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2481          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2482          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2483         {
2484          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2485          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2486          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2487          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2488         {
2489          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2490          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2491          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2492          0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2493         {
2494          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2495          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2496          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2497          0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2498         {
2499          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2500          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2501          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2502          0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2503         {
2504          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2505          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2506          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2507          0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2508         {
2509          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2510          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2511          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2512          0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2513         {
2514          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2515          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2516          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2517          0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2518         {
2519          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2520          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2521          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2522          0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2523         {
2524          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2525          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2526          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2527          0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2528         {
2529          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2530          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2531          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2532          0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2533         {
2534          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2535          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2536          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2537          0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2538         {
2539          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2540          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2541          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2542          0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2543         {
2544          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2545          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2546          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2547          0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2548         {
2549          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2550          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2551          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2552          0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2553         {
2554          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2555          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2556          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2557          0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2558         {
2559          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2560          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2561          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2562          0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2563         {
2564          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2565          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2566          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2567          0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2568         {
2569          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2570          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2571          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2572          0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2573         {
2574          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2575          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2576          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2577          0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2578         {
2579          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2580          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2581          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2582          0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2583         {
2584          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2585          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2586          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2587          0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2588         {
2589          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2590          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2591          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2592          0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2593         {
2594          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2595          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2596          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2597          0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2598         {
2599          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2600          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2601          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2602          0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2603         {
2604          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2605          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2606          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2607          0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2608         {
2609          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2610          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2611          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2612          0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2613         {
2614          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2615          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2616          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2617          0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2618         {
2619          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2620          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2621          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2622          0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2623         {
2624          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2625          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2626          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2627          0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2628         {
2629          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2630          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2631          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2632          0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2633         {
2634          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2635          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2636          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2637          0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2638         {
2639          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2640          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2641          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2642          0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2643         {
2644          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2645          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2646          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2647          0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2648         {
2649          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2650          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2651          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2652          0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2653         {
2654          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2655          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2656          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2657          0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2658         {
2659          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2660          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2661          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2662          0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2663         {
2664          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2665          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2666          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2667          0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2668         {
2669          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2670          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2671          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2672          0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2673         {
2674          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2675          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2676          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2677          0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2678         {
2679          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2680          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2681          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2682          0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2683         {
2684          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2685          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2686          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2687          0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2688         {
2689          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2690          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2691          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2692          0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2693         {
2694          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2695          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2696          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2697          0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2698         {
2699          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2700          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2701          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2702          0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2703         {
2704          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2705          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2706          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2707          0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2708         {
2709          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2710          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2711          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2712          0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2713         {
2714          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2715          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2716          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2717          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2718         {
2719          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2720          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2721          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2722          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2723         {
2724          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2725          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2726          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2727          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2728         {
2729          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2730          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2731          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2732          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2733         {
2734          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2735          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2736          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2737          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2738         {
2739          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2740          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2741          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2742          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2743         {
2744          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2745          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2746          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2747          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2748         {
2749          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2750          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2751          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2752          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2753         {
2754          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2755          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2756          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2757          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2758         {
2759          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2760          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2761          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2762          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2763         {
2764          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2765          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2766          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2767          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2768         {
2769          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2770          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2771          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2772          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2773         {
2774          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2775          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2776          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2777          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2778         {
2779          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2780          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2781          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2782          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2783 };
2784
2785 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v6[] = {
2786         {
2787          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2788          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2789          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2790          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2791         {
2792          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2793          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2794          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2795          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2796         {
2797          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2798          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2799          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2800          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2801         {
2802          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2803          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2804          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2805          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2806         {
2807          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2808          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2809          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2810          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2811         {
2812          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2813          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2814          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2815          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2816         {
2817          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2818          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2819          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2820          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2821         {
2822          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2823          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2824          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2825          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2826         {
2827          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2828          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2829          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2830          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2831         {
2832          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2833          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2834          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2835          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2836         {
2837          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2838          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2839          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2840          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2841         {
2842          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2843          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2844          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2845          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2846         {
2847          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2848          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2849          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2850          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2851         {
2852          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2853          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2854          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2855          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2856         {
2857          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2858          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2859          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2860          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2861         {
2862          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2863          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2864          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2865          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2866         {
2867          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2868          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2869          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2870          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2871         {
2872          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2873          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2874          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2875          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2876         {
2877          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2878          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2879          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2880          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2881         {
2882          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2883          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2884          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2885          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2886         {
2887          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2888          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2889          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2890          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2891         {
2892          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2893          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2894          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2895          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2896         {
2897          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2898          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2899          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2900          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2901         {
2902          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2903          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2904          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2905          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2906         {
2907          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2908          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2909          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2910          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2911         {
2912          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2913          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2914          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2915          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2916         {
2917          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2918          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2919          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2920          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2921         {
2922          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2923          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2924          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2925          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2926         {
2927          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2928          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2929          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2930          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2931         {
2932          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2933          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2934          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2935          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2936         {
2937          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2938          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2939          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2940          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2941         {
2942          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2943          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2944          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2945          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2946         {
2947          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2948          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2949          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2950          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2951         {
2952          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2953          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2954          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2955          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2956         {
2957          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2958          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2959          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2960          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2961         {
2962          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2963          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2964          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2965          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2966         {
2967          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2968          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2969          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2970          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2971         {
2972          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2973          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2974          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2975          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2976         {
2977          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2978          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2979          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2980          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2981         {
2982          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2983          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
2984          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2985          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2986         {
2987          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2988          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
2989          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
2990          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2991         {
2992          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2993          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
2994          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
2995          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2996         {
2997          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2998          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
2999          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3000          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3001         {
3002          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3003          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3004          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3005          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3006         {
3007          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3008          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3009          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3010          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3011         {
3012          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3013          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3014          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3015          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3016         {
3017          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3018          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3019          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3020          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3021         {
3022          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3023          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3024          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3025          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3026         {
3027          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3028          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3029          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3030          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3031         {
3032          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3033          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3034          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3035          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3036         {
3037          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3038          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3039          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3040          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3041         {
3042          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3043          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3044          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3045          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3046         {
3047          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3048          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3049          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3050          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3051         {
3052          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3053          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3054          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3055          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3056         {
3057          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3058          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3059          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3060          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3061         {
3062          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3063          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3064          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3065          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3066         {
3067          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3068          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3069          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3070          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3071         {
3072          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3073          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3074          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3075          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3076         {
3077          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3078          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3079          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3080          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3081         {
3082          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3083          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3084          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3085          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3086         {
3087          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3088          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3089          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3090          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3091         {
3092          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3093          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3094          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3095          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3096         {
3097          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3098          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3099          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3100          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3101         {
3102          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3103          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3104          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3105          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3106         {
3107          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3108          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3109          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3110          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3111         {
3112          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3113          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3114          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3115          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3116         {
3117          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3118          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3119          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3120          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3121         {
3122          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3123          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3124          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3125          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3126         {
3127          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3128          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3129          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3130          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3131         {
3132          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3133          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3134          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3135          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3136         {
3137          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3138          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3139          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3140          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3141         {
3142          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3143          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3144          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3145          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3146         {
3147          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3148          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3149          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3150          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3151         {
3152          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3153          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3154          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3155          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3156         {
3157          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3158          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3159          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3160          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3161         {
3162          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3163          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3164          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3165          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3166         {
3167          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3168          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3169          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3170          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3171         {
3172          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3173          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3174          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3175          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3176         {
3177          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3178          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3179          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3180          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3181         {
3182          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3183          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3184          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3185          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3186         {
3187          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3188          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3189          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3190          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3191         {
3192          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3193          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3194          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3195          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3196         {
3197          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3198          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3199          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3200          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3201         {
3202          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3203          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3204          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3205          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3206         {
3207          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3208          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3209          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3210          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3211         {
3212          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3213          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3214          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3215          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3216         {
3217          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3218          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3219          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3220          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3221         {
3222          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3223          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3224          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3225          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3226         {
3227          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3228          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3229          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3230          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3231         {
3232          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3233          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3234          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3235          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3236         {
3237          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3238          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3239          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3240          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3241         {
3242          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3243          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3244          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3245          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3246         {
3247          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3248          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3249          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3250          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3251         {
3252          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3253          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3254          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3255          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3256         {
3257          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3258          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3259          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3260          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3261         {
3262          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3263          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3264          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3265          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3266         {
3267          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3268          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3269          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3270          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3271         {
3272          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3273          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3274          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3275          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3276         {
3277          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3278          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3279          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3280          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3281         {
3282          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3283          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3284          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3285          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3286         {
3287          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3288          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3289          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3290          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3291         {
3292          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3293          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3294          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3295          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3296         {
3297          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3298          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3299          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3300          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3301         {
3302          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3303          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3304          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3305          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3306         {
3307          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3308          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3309          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3310          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3311         {
3312          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3313          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3314          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3315          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3316         {
3317          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3318          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3319          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3320          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3321         {
3322          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3323          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3324          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3325          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3326         {
3327          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3328          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3329          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3330          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3331         {
3332          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3333          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3334          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3335          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3336         {
3337          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3338          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3339          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3340          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3341         {
3342          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3343          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3344          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3345          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3346         {
3347          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3348          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3349          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3350          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3351         {
3352          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3353          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3354          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3355          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3356         {
3357          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3358          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3359          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3360          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3361         {
3362          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3363          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3364          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3365          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3366         {
3367          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3368          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3369          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3370          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3371         {
3372          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3373          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3374          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3375          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3376         {
3377          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3378          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3379          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3380          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3381         {
3382          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3383          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3384          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3385          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3386         {
3387          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3388          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3389          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3390          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3391         {
3392          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3393          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3394          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3395          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3396         {
3397          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3398          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3399          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3400          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3401         {
3402          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3403          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3404          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3405          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3406 };
3407
3408 static chan_info_nphy_radio205x_t chan_info_nphyrev5n6_2056v7[] = {
3409         {
3410          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3411          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3412          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3413          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3414         {
3415          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3416          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3417          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3418          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3419         {
3420          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3421          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3422          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3423          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3424         {
3425          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3426          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3427          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3428          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3429         {
3430          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3431          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3432          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3433          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3434         {
3435          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3436          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3437          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3438          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3439         {
3440          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3441          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3442          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3443          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3444         {
3445          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3446          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3447          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3448          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3449         {
3450          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3451          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3452          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3453          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3454         {
3455          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3456          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3457          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3458          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3459         {
3460          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3461          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3462          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3463          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3464         {
3465          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3466          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3467          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3468          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3469         {
3470          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3471          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3472          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3473          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3474         {
3475          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3476          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3477          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3478          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3479         {
3480          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3481          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3482          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3483          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3484         {
3485          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3486          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3487          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3488          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3489         {
3490          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3491          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3492          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3493          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3494         {
3495          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3496          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3497          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3498          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3499         {
3500          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3501          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3502          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3503          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3504         {
3505          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3506          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3507          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3508          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3509         {
3510          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3511          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3512          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3513          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3514         {
3515          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3516          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3517          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3518          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3519         {
3520          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3521          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3522          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3523          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3524         {
3525          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3526          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3527          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3528          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3529         {
3530          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3531          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3532          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3533          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3534         {
3535          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3536          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3537          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3538          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3539         {
3540          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3541          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3542          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3543          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3544         {
3545          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3546          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3547          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3548          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3549         {
3550          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3551          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3552          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3553          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3554         {
3555          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3556          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3557          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3558          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3559         {
3560          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3561          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3562          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3563          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3564         {
3565          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3566          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3567          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3568          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3569         {
3570          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3571          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3572          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3573          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3574         {
3575          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3576          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3577          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3578          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3579         {
3580          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3581          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3582          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3583          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3584         {
3585          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3586          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3587          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3588          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3589         {
3590          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3591          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3592          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3593          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3594         {
3595          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3596          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3597          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3598          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3599         {
3600          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3601          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3602          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3603          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3604         {
3605          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3606          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3607          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3608          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3609         {
3610          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3611          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3612          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3613          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3614         {
3615          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3616          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3617          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3618          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3619         {
3620          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3621          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3622          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3623          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3624         {
3625          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3626          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3627          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3628          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3629         {
3630          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3631          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3632          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3633          0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3634         {
3635          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3636          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3637          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3638          0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3639         {
3640          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3641          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3642          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3643          0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3644         {
3645          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3646          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3647          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3648          0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3649         {
3650          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3651          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3652          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3653          0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3654         {
3655          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3656          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3657          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3658          0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3659         {
3660          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3661          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3662          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3663          0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3664         {
3665          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3666          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3667          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3668          0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3669         {
3670          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3671          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3672          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3673          0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3674         {
3675          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3676          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3677          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3678          0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3679         {
3680          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3681          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3682          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3683          0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3684         {
3685          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3686          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3687          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3688          0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3689         {
3690          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3691          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3692          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3693          0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3694         {
3695          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3696          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3697          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3698          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3699         {
3700          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3701          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3702          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3703          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3704         {
3705          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3706          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3707          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3708          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3709         {
3710          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3711          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3712          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3713          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3714         {
3715          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3716          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3717          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3718          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3719         {
3720          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3721          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3722          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3723          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3724         {
3725          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3726          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3727          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3728          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3729         {
3730          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3731          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3732          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3733          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3734         {
3735          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3736          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3737          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3738          0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3739         {
3740          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3741          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3742          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3743          0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3744         {
3745          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3746          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3747          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3748          0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3749         {
3750          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3751          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3752          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3753          0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3754         {
3755          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3756          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3757          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3758          0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3759         {
3760          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3761          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3762          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3763          0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3764         {
3765          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3766          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3767          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3768          0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3769         {
3770          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3771          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3772          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3773          0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3774         {
3775          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3776          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3777          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3778          0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3779         {
3780          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3781          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3782          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3783          0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3784         {
3785          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3786          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3787          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3788          0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3789         {
3790          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3791          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3792          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3793          0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3794         {
3795          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3796          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3797          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3798          0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3799         {
3800          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3801          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3802          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3803          0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3804         {
3805          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3806          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3807          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3808          0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3809         {
3810          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3811          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3812          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3813          0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3814         {
3815          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3816          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3817          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3818          0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3819         {
3820          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3821          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3822          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3823          0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3824         {
3825          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3826          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3827          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3828          0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3829         {
3830          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3831          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3832          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3833          0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3834         {
3835          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3836          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3837          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3838          0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3839         {
3840          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3841          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3842          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3843          0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3844         {
3845          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3846          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3847          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3848          0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3849         {
3850          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3851          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3852          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3853          0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3854         {
3855          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3856          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3857          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3858          0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3859         {
3860          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3861          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3862          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3863          0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3864         {
3865          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3866          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3867          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3868          0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3869         {
3870          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3871          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3872          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3873          0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3874         {
3875          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3876          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3877          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3878          0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3879         {
3880          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3881          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3882          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3883          0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3884         {
3885          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3886          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3887          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3888          0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3889         {
3890          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3891          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3892          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3893          0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3894         {
3895          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3896          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3897          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3898          0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3899         {
3900          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3901          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3902          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3903          0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3904         {
3905          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3906          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3907          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3908          0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3909         {
3910          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3911          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3912          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3913          0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3914         {
3915          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3916          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3917          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3918          0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3919         {
3920          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3921          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3922          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3923          0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3924         {
3925          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3926          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3927          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3928          0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3929         {
3930          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3931          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3932          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3933          0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3934         {
3935          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3936          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3937          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3938          0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3939         {
3940          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3941          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3942          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3943          0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3944         {
3945          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3946          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3947          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3948          0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3949         {
3950          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3951          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3952          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3953          0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3954         {
3955          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3956          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3957          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3958          0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3959         {
3960          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3961          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3962          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3963          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3964         {
3965          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3966          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3967          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3968          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3969         {
3970          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3971          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3972          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3973          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3974         {
3975          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3976          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3977          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3978          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3979         {
3980          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3981          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
3982          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
3983          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3984         {
3985          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3986          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
3987          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
3988          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3989         {
3990          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3991          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
3992          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
3993          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3994         {
3995          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3996          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
3997          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
3998          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3999         {
4000          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4001          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4002          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4003          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4004         {
4005          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4006          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4007          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4008          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4009         {
4010          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4011          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4012          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4013          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4014         {
4015          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4016          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4017          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4018          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4019         {
4020          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4021          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4022          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4023          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4024         {
4025          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4026          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4027          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4028          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4029 };
4030
4031 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v8[] = {
4032         {
4033          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4034          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4035          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4036          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4037         {
4038          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4039          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4040          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4041          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4042         {
4043          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4044          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4045          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4046          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4047         {
4048          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4049          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4050          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4051          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4052         {
4053          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4054          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4055          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4056          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4057         {
4058          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4059          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4060          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4061          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4062         {
4063          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4064          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4065          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4066          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4067         {
4068          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4069          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4070          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4071          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4072         {
4073          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4074          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4075          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4076          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4077         {
4078          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4079          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4080          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4081          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4082         {
4083          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4084          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4085          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4086          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4087         {
4088          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4089          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4090          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4091          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4092         {
4093          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4094          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4095          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4096          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4097         {
4098          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4099          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4100          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4101          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4102         {
4103          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4104          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4105          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4106          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4107         {
4108          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4109          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4110          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4111          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4112         {
4113          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4114          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4115          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4116          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4117         {
4118          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4119          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4120          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4121          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4122         {
4123          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4124          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4125          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4126          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4127         {
4128          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4129          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4130          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4131          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4132         {
4133          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4134          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4135          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4136          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4137         {
4138          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4139          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4140          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4141          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4142         {
4143          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4144          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4145          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4146          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4147         {
4148          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4149          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4150          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4151          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4152         {
4153          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4154          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4155          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4156          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4157         {
4158          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4159          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4160          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4161          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4162         {
4163          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4164          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4165          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4166          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4167         {
4168          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4169          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4170          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4171          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4172         {
4173          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4174          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4175          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4176          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4177         {
4178          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4179          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4180          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4181          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4182         {
4183          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4184          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4185          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4186          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4187         {
4188          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4189          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4190          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4191          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4192         {
4193          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4194          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4195          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4196          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4197         {
4198          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4199          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4200          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4201          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4202         {
4203          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4204          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4205          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4206          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4207         {
4208          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4209          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4210          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4211          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4212         {
4213          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4214          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4215          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4216          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4217         {
4218          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4219          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4220          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4221          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4222         {
4223          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4224          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4225          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4226          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4227         {
4228          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4229          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4230          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4231          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4232         {
4233          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4234          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4235          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4236          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4237         {
4238          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4239          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4240          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4241          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4242         {
4243          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4244          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4245          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4246          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4247         {
4248          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4249          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4250          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4251          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4252         {
4253          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4254          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4255          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4256          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4257         {
4258          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4259          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4260          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4261          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4262         {
4263          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4264          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4265          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4266          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4267         {
4268          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4269          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4270          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4271          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4272         {
4273          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4274          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4275          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4276          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4277         {
4278          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4279          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4280          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4281          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4282         {
4283          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4284          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4285          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4286          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4287         {
4288          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4289          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4290          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4291          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4292         {
4293          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4294          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4295          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4296          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4297         {
4298          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4299          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4300          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4301          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4302         {
4303          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4304          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4305          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4306          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4307         {
4308          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4309          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4310          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4311          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4312         {
4313          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4314          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4315          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4316          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4317         {
4318          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4319          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4320          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4321          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4322         {
4323          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4324          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4325          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4326          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4327         {
4328          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4329          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4330          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4331          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4332         {
4333          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4334          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4335          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4336          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4337         {
4338          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4339          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4340          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4341          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4342         {
4343          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4344          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4345          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4346          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4347         {
4348          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4349          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4350          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4351          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4352         {
4353          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4354          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4355          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4356          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4357         {
4358          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4359          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4360          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4361          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4362         {
4363          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4364          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4365          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4366          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4367         {
4368          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4369          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4370          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4371          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4372         {
4373          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4374          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4375          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4376          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4377         {
4378          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4379          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4380          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4381          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4382         {
4383          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4384          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4385          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4386          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4387         {
4388          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4389          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4390          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4391          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4392         {
4393          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4394          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4395          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4396          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4397         {
4398          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4399          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4400          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4401          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4402         {
4403          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4404          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4405          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4406          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4407         {
4408          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4409          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4410          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4411          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4412         {
4413          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4414          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4415          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4416          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4417         {
4418          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4419          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4420          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4421          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4422         {
4423          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4424          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4425          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4426          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4427         {
4428          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4429          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4430          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4431          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4432         {
4433          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4434          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4435          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4436          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4437         {
4438          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4439          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4440          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4441          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4442         {
4443          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4444          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4445          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4446          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4447         {
4448          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4449          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4450          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4451          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4452         {
4453          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4454          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4455          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4456          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4457         {
4458          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4459          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4460          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4461          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4462         {
4463          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4464          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4465          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4466          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4467         {
4468          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4469          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4470          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4471          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4472         {
4473          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4474          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4475          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4476          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4477         {
4478          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4479          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4480          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4481          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4482         {
4483          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4484          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4485          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4486          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4487         {
4488          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4489          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4490          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4491          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4492         {
4493          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4494          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4495          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4496          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4497         {
4498          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4499          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4500          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4501          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4502         {
4503          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4504          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4505          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4506          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4507         {
4508          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4509          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4510          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4511          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4512         {
4513          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4514          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4515          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4516          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4517         {
4518          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4519          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4520          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4521          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4522         {
4523          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4524          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4525          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4526          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4527         {
4528          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4529          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4530          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4531          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4532         {
4533          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4534          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4535          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4536          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4537         {
4538          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4539          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4540          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4541          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4542         {
4543          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4544          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4545          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4546          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4547         {
4548          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4549          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4550          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4551          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4552         {
4553          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4554          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4555          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4556          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4557         {
4558          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4559          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4560          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4561          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4562         {
4563          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4564          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4565          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4566          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4567         {
4568          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4569          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4570          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4571          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4572         {
4573          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4574          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4575          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4576          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4577         {
4578          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4579          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4580          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4581          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4582         {
4583          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4584          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4585          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4586          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4587         {
4588          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4589          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4590          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4591          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4592         {
4593          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4594          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4595          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4596          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4597         {
4598          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4599          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4600          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4601          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4602         {
4603          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4604          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4605          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4606          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4607         {
4608          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4609          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4610          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4611          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4612         {
4613          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4614          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4615          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4616          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4617         {
4618          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4619          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4620          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4621          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4622         {
4623          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4624          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4625          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4626          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4627         {
4628          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4629          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4630          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4631          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4632         {
4633          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4634          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4635          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4636          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4637         {
4638          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4639          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4640          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4641          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4642         {
4643          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4644          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4645          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4646          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4647         {
4648          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4649          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4650          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4651          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4652 };
4653
4654 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v11[] = {
4655         {
4656          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4657          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4658          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4659          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4660         {
4661          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4662          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4663          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4664          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4665         {
4666          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4667          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4668          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4669          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4670         {
4671          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4672          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4673          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4674          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4675         {
4676          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4677          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4678          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4679          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4680         {
4681          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4682          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4683          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4684          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4685         {
4686          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4687          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4688          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4689          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4690         {
4691          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4692          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4693          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4694          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4695         {
4696          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4697          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4698          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4699          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4700         {
4701          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4702          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4703          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4704          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4705         {
4706          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4707          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4708          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4709          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4710         {
4711          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4712          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4713          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4714          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4715         {
4716          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4717          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4718          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4719          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4720         {
4721          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4722          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4723          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4724          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4725         {
4726          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4727          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4728          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4729          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4730         {
4731          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4732          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4733          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4734          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4735         {
4736          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4737          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4738          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4739          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4740         {
4741          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4742          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4743          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4744          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4745         {
4746          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4747          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4748          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4749          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4750         {
4751          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4752          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4753          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4754          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4755         {
4756          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4757          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4758          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4759          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4760         {
4761          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4762          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4763          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4764          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4765         {
4766          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4767          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4768          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4769          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4770         {
4771          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4772          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4773          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4774          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4775         {
4776          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4777          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4778          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4779          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4780         {
4781          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4782          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4783          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4784          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4785         {
4786          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4787          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4788          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4789          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4790         {
4791          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4792          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4793          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4794          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4795         {
4796          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4797          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4798          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4799          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4800         {
4801          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4802          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4803          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4804          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4805         {
4806          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4807          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4808          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4809          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4810         {
4811          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4812          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4813          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4814          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4815         {
4816          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4817          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4818          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4819          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4820         {
4821          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4822          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4823          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4824          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4825         {
4826          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4827          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4828          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4829          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4830         {
4831          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4832          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4833          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4834          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4835         {
4836          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4837          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4838          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4839          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4840         {
4841          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4842          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4843          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4844          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4845         {
4846          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4847          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4848          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4849          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4850         {
4851          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4852          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4853          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4854          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4855         {
4856          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4857          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4858          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4859          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4860         {
4861          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4862          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4863          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4864          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4865         {
4866          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4867          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4868          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4869          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4870         {
4871          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4872          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4873          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4874          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4875         {
4876          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4877          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4878          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4879          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4880         {
4881          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4882          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4883          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4884          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4885         {
4886          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4887          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4888          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4889          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4890         {
4891          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4892          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4893          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4894          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4895         {
4896          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4897          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4898          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4899          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4900         {
4901          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4902          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4903          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4904          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4905         {
4906          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4907          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4908          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4909          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4910         {
4911          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4912          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4913          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4914          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4915         {
4916          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4917          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4918          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4919          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4920         {
4921          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4922          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4923          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4924          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4925         {
4926          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4927          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4928          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4929          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4930         {
4931          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4932          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4933          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4934          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4935         {
4936          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4937          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4938          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4939          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4940         {
4941          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4942          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4943          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4944          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4945         {
4946          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4947          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4948          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4949          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4950         {
4951          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4952          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4953          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4954          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4955         {
4956          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4957          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4958          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4959          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4960         {
4961          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4962          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4963          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4964          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4965         {
4966          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4967          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4968          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4969          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4970         {
4971          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4972          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4973          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4974          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4975         {
4976          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4977          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4978          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4979          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4980         {
4981          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4982          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4983          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4984          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4985         {
4986          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4987          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4988          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4989          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4990         {
4991          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
4992          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4993          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4994          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4995         {
4996          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
4997          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4998          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4999          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5000         {
5001          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5002          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5003          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5004          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5005         {
5006          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5007          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5008          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5009          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5010         {
5011          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5012          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5013          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5014          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5015         {
5016          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5017          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5018          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5019          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5020         {
5021          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5022          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5023          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5024          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5025         {
5026          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5027          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5028          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5029          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5030         {
5031          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5032          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5033          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5034          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5035         {
5036          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5037          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5038          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5039          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5040         {
5041          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5042          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5043          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5044          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5045         {
5046          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5047          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5048          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5049          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5050         {
5051          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5052          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5053          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5054          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5055         {
5056          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5057          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5058          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5059          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5060         {
5061          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5062          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5063          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5064          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5065         {
5066          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5067          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5068          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5069          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5070         {
5071          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5072          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5073          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5074          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5075         {
5076          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5077          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5078          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5079          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5080         {
5081          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5082          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5083          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5084          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5085         {
5086          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5087          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5088          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5089          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5090         {
5091          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5092          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5093          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5094          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5095         {
5096          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5097          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5098          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5099          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5100         {
5101          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5102          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5103          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5104          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5105         {
5106          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5107          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5108          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5109          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5110         {
5111          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5112          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5113          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5114          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5115         {
5116          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5117          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5118          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5119          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5120         {
5121          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5122          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5123          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5124          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5125         {
5126          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5127          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5128          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5129          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5130         {
5131          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5132          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5133          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5134          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5135         {
5136          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5137          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5138          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5139          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5140         {
5141          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5142          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5143          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5144          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5145         {
5146          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5147          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5148          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5149          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5150         {
5151          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5152          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5153          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5154          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5155         {
5156          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5157          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5158          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5159          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5160         {
5161          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5162          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5163          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5164          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5165         {
5166          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5167          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5168          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5169          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5170         {
5171          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5172          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5173          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5174          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5175         {
5176          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5177          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5178          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5179          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5180         {
5181          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5182          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5183          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5184          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5185         {
5186          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5187          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5188          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5189          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5190         {
5191          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5192          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5193          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5194          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5195         {
5196          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5197          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5198          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5199          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5200         {
5201          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5202          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5203          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5204          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5205         {
5206          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5207          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5208          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5209          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5210         {
5211          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5212          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5213          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5214          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5215         {
5216          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5217          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5218          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5219          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5220         {
5221          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5222          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5223          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5224          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5225         {
5226          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5227          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5228          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5229          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5230         {
5231          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5232          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5233          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5234          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5235         {
5236          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5237          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5238          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5239          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5240         {
5241          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5242          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5243          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5244          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5245         {
5246          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5247          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5248          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5249          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5250         {
5251          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5252          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5253          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5254          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5255         {
5256          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5257          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5258          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5259          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5260         {
5261          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5262          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5263          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5264          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5265         {
5266          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5267          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5268          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5269          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5270         {
5271          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5272          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5273          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5274          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5275 };
5276
5277 static chan_info_nphy_radio2057_t chan_info_nphyrev7_2057_rev4[] = {
5278         {
5279          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5280          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5281          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5282          0x0215,
5283          0x0216,
5284          },
5285         {
5286          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5287          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5288          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5289          0x0214,
5290          0x0215,
5291          },
5292         {
5293          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5294          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5295          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5296          0x0213,
5297          0x0214,
5298          },
5299         {
5300          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5301          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5302          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5303          0x0212,
5304          0x0213,
5305          },
5306         {
5307          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5308          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5309          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5310          0x0211,
5311          0x0212,
5312          },
5313         {
5314          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5315          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5316          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5317          0x020f,
5318          0x0211,
5319          },
5320         {
5321          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5322          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5323          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5324          0x020e,
5325          0x020f,
5326          },
5327         {
5328          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5329          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5330          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5331          0x020d,
5332          0x020e,
5333          },
5334         {
5335          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5336          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5337          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5338          0x020c,
5339          0x020d,
5340          },
5341         {
5342          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5343          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5344          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5345          0x020b,
5346          0x020c,
5347          },
5348         {
5349          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5350          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5351          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5352          0x020a,
5353          0x020b,
5354          },
5355         {
5356          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5357          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5358          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5359          0x0209,
5360          0x020a,
5361          },
5362         {
5363          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5364          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5365          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5366          0x0208,
5367          0x0209,
5368          },
5369         {
5370          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5371          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5372          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5373          0x0207,
5374          0x0208,
5375          },
5376         {
5377          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5378          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5379          0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5380          0x0206,
5381          0x0207,
5382          },
5383         {
5384          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5385          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5386          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5387          0x0205,
5388          0x0206,
5389          },
5390         {
5391          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5392          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5393          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5394          0x0204,
5395          0x0205,
5396          },
5397         {
5398          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5399          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5400          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5401          0x0203,
5402          0x0204,
5403          },
5404         {
5405          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5406          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5407          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5408          0x0202,
5409          0x0203,
5410          },
5411         {
5412          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5413          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5414          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5415          0x0201,
5416          0x0202,
5417          },
5418         {
5419          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5420          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5421          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5422          0x0200,
5423          0x0201,
5424          },
5425         {
5426          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5427          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5428          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5429          0x01ff,
5430          0x0200,
5431          },
5432         {
5433          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5434          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5435          0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5436          0x01fe,
5437          0x01ff,
5438          },
5439         {
5440          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5441          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5442          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5443          0x01fc,
5444          0x01fd,
5445          },
5446         {
5447          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5448          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5449          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5450          0x01fb,
5451          0x01fc,
5452          },
5453         {
5454          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5455          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5456          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5457          0x01fa,
5458          0x01fb,
5459          },
5460         {
5461          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5462          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5463          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5464          0x01f9,
5465          0x01fa,
5466          },
5467         {
5468          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5469          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5470          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5471          0x01f8,
5472          0x01f9,
5473          },
5474         {
5475          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5476          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5477          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5478          0x01f7,
5479          0x01f8,
5480          },
5481         {
5482          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5483          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5484          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5485          0x01f6,
5486          0x01f7,
5487          },
5488         {
5489          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5490          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5491          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5492          0x01f5,
5493          0x01f6,
5494          },
5495         {
5496          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5497          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5498          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5499          0x01f4,
5500          0x01f5,
5501          },
5502         {
5503          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5504          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5505          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5506          0x01f3,
5507          0x01f4,
5508          },
5509         {
5510          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5511          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5512          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5513          0x01f2,
5514          0x01f3,
5515          },
5516         {
5517          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5518          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5519          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5520          0x01f1,
5521          0x01f2,
5522          },
5523         {
5524          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5525          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5526          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5527          0x01f0,
5528          0x01f1,
5529          },
5530         {
5531          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5532          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5533          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5534          0x01f0,
5535          0x01f0,
5536          },
5537         {
5538          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5539          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5540          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5541          0x01ef,
5542          0x01f0,
5543          },
5544         {
5545          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5546          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5547          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5548          0x01ee,
5549          0x01ef,
5550          },
5551         {
5552          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5553          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5554          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5555          0x01ed,
5556          0x01ee,
5557          },
5558         {
5559          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5560          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5561          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5562          0x01ec,
5563          0x01ed,
5564          },
5565         {
5566          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5567          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5568          0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5569          0x01eb,
5570          0x01ec,
5571          },
5572         {
5573          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5574          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5575          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5576          0x01ea,
5577          0x01eb,
5578          },
5579         {
5580          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5581          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5582          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5583          0x01e9,
5584          0x01ea,
5585          },
5586         {
5587          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5588          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5589          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5590          0x01e8,
5591          0x01e9,
5592          },
5593         {
5594          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5595          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5596          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5597          0x01e7,
5598          0x01e8,
5599          },
5600         {
5601          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5602          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5603          0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5604          0x01e6,
5605          0x01e7,
5606          },
5607         {
5608          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5609          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5610          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5611          0x01e5,
5612          0x01e6,
5613          },
5614         {
5615          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5616          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5617          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5618          0x01e5,
5619          0x01e5,
5620          },
5621         {
5622          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5623          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5624          0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5625          0x01e4,
5626          0x01e5,
5627          },
5628         {
5629          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5630          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5631          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5632          0x01e3,
5633          0x01e4,
5634          },
5635         {
5636          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5637          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5638          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5639          0x01e2,
5640          0x01e3,
5641          },
5642         {
5643          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5644          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5645          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5646          0x01e1,
5647          0x01e2,
5648          },
5649         {
5650          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5651          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5652          0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5653          0x01e0,
5654          0x01e1,
5655          },
5656         {
5657          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5658          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5659          0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5660          0x01df,
5661          0x01e0,
5662          },
5663         {
5664          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5665          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5666          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5667          0x01de,
5668          0x01df,
5669          },
5670         {
5671          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5672          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5673          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5674          0x01dd,
5675          0x01de,
5676          },
5677         {
5678          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5679          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5680          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5681          0x01dd,
5682          0x01dd,
5683          },
5684         {
5685          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5686          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5687          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5688          0x01dc,
5689          0x01dd,
5690          },
5691         {
5692          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5693          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5694          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5695          0x01db,
5696          0x01dc,
5697          },
5698         {
5699          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5700          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5701          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5702          0x01da,
5703          0x01db,
5704          },
5705         {
5706          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5707          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5708          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5709          0x01d9,
5710          0x01da,
5711          },
5712         {
5713          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5714          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5715          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5716          0x01d8,
5717          0x01d9,
5718          },
5719         {
5720          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5721          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5722          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5723          0x01d7,
5724          0x01d8,
5725          },
5726         {
5727          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5728          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5729          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5730          0x01d7,
5731          0x01d7,
5732          },
5733         {
5734          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5735          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5736          0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5737          0x01d6,
5738          0x01d7,
5739          },
5740         {
5741          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5742          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5743          0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5744          0x01d5,
5745          0x01d6,
5746          },
5747         {
5748          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5749          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5750          0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5751          0x01d4,
5752          0x01d5,
5753          },
5754         {
5755          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5756          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5757          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5758          0x01d3,
5759          0x01d4,
5760          },
5761         {
5762          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5763          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5764          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5765          0x01d2,
5766          0x01d3,
5767          },
5768         {
5769          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5770          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5771          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5772          0x01d2,
5773          0x01d2,
5774          },
5775         {
5776          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5777          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5778          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5779          0x01d1,
5780          0x01d2,
5781          },
5782         {
5783          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5784          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5785          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5786          0x01d0,
5787          0x01d1,
5788          },
5789         {
5790          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5791          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5792          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5793          0x01cf,
5794          0x01d0,
5795          },
5796         {
5797          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5798          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5799          0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5800          0x01ce,
5801          0x01cf,
5802          },
5803         {
5804          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5805          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5806          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5807          0x01ce,
5808          0x01ce,
5809          },
5810         {
5811          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5812          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5813          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5814          0x01cd,
5815          0x01ce,
5816          },
5817         {
5818          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5819          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5820          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5821          0x01cc,
5822          0x01cd,
5823          },
5824         {
5825          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5826          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5827          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5828          0x01cb,
5829          0x01cc,
5830          },
5831         {
5832          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5833          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5834          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5835          0x01ca,
5836          0x01cb,
5837          },
5838         {
5839          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5840          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5841          0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5842          0x01ca,
5843          0x01cb,
5844          },
5845         {
5846          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5847          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5848          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5849          0x01c9,
5850          0x01ca,
5851          },
5852         {
5853          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5854          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5855          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5856          0x01c9,
5857          0x01ca,
5858          },
5859         {
5860          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5861          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5862          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5863          0x01c9,
5864          0x01c9,
5865          },
5866         {
5867          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5868          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5869          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5870          0x01c8,
5871          0x01c9,
5872          },
5873         {
5874          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5875          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5876          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5877          0x01c8,
5878          0x01c9,
5879          },
5880         {
5881          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5882          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5883          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5884          0x01c8,
5885          0x01c8,
5886          },
5887         {
5888          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5889          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5890          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5891          0x01c7,
5892          0x01c8,
5893          },
5894         {
5895          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5896          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5897          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5898          0x01c7,
5899          0x01c8,
5900          },
5901         {
5902          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5903          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5904          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5905          0x01c6,
5906          0x01c7,
5907          },
5908         {
5909          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5910          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5911          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5912          0x01c6,
5913          0x01c7,
5914          },
5915         {
5916          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5917          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5918          0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5919          0x01c6,
5920          0x01c6,
5921          },
5922         {
5923          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5924          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5925          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5926          0x01c5,
5927          0x01c6,
5928          },
5929         {
5930          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5931          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5932          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5933          0x01c5,
5934          0x01c6,
5935          },
5936         {
5937          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5938          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5939          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5940          0x01c4,
5941          0x01c5,
5942          },
5943         {
5944          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5945          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5946          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5947          0x01c4,
5948          0x01c5,
5949          },
5950         {
5951          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5952          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5953          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5954          0x01c4,
5955          0x01c4,
5956          },
5957         {
5958          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5959          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5960          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5961          0x01c3,
5962          0x01c4,
5963          },
5964         {
5965          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5966          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5967          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
5968          0x01c3,
5969          0x01c4,
5970          },
5971         {
5972          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
5973          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5974          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
5975          0x01c2,
5976          0x01c3,
5977          },
5978         {
5979          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
5980          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5981          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
5982          0x01c2,
5983          0x01c3,
5984          },
5985         {
5986          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
5987          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5988          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
5989          0x01c2,
5990          0x01c2,
5991          },
5992         {
5993          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
5994          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5995          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
5996          0x01c1,
5997          0x01c2,
5998          },
5999         {
6000          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6001          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6002          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6003          0x01c0,
6004          0x01c1,
6005          },
6006         {
6007          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6008          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6009          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6010          0x01bf,
6011          0x01c0,
6012          },
6013         {
6014          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6015          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6016          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6017          0x01bf,
6018          0x01bf,
6019          },
6020         {
6021          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6022          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6023          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6024          0x01be,
6025          0x01bf,
6026          },
6027         {
6028          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6029          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6030          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6031          0x01bd,
6032          0x01be,
6033          },
6034         {
6035          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6036          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6037          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6038          0x01bc,
6039          0x01bd,
6040          },
6041         {
6042          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6043          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6044          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6045          0x043f,
6046          0x0443,
6047          },
6048         {
6049          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6050          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6051          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6052          0x043d,
6053          0x0441,
6054          },
6055         {
6056          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6057          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6058          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6059          0x043a,
6060          0x043f,
6061          },
6062         {
6063          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6064          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6065          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6066          0x0438,
6067          0x043d,
6068          },
6069         {
6070          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6071          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6072          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6073          0x0436,
6074          0x043a,
6075          },
6076         {
6077          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6078          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6079          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6080          0x0434,
6081          0x0438,
6082          },
6083         {
6084          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6085          0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6086          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6087          0x0431,
6088          0x0436,
6089          },
6090         {
6091          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6092          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6093          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6094          0x042f,
6095          0x0434,
6096          },
6097         {
6098          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6099          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6100          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6101          0x042d,
6102          0x0431,
6103          },
6104         {
6105          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6106          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6107          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6108          0x042b,
6109          0x042f,
6110          },
6111         {
6112          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6113          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6114          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6115          0x0429,
6116          0x042d,
6117          },
6118         {
6119          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6120          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6121          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6122          0x0427,
6123          0x042b,
6124          },
6125         {
6126          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6127          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6128          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6129          0x0424,
6130          0x0429,
6131          },
6132         {
6133          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6134          0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6135          0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6136          0x041f,
6137          0x0424}
6138 };
6139
6140 static chan_info_nphy_radio2057_rev5_t chan_info_nphyrev8_2057_rev5[] = {
6141         {
6142          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6143          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6144          0x043a, 0x043f, 0x0443},
6145         {
6146          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6147          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6148          0x0438, 0x043d, 0x0441},
6149         {
6150          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6151          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6152          0x0436, 0x043a, 0x043f},
6153         {
6154          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6155          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6156          0x0434, 0x0438, 0x043d},
6157         {
6158          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6159          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6160          0x0431, 0x0436, 0x043a},
6161         {
6162          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6163          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6164          0x042f, 0x0434, 0x0438},
6165         {
6166          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6167          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6168          0x042d, 0x0431, 0x0436},
6169         {
6170          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6171          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6172          0x042b, 0x042f, 0x0434},
6173         {
6174          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6175          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6176          0x0429, 0x042d, 0x0431},
6177         {
6178          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6179          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6180          0x0427, 0x042b, 0x042f},
6181         {
6182          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6183          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6184          0x0424, 0x0429, 0x042d},
6185         {
6186          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6187          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6188          0x0422, 0x0427, 0x042b},
6189         {
6190          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6191          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6192          0x0420, 0x0424, 0x0429},
6193         {
6194          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6195          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6196          0x041b, 0x041f, 0x0424}
6197 };
6198
6199 static chan_info_nphy_radio2057_rev5_t chan_info_nphyrev9_2057_rev5v1[] = {
6200         {
6201          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6202          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6203          0x043a, 0x043f, 0x0443},
6204         {
6205          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6206          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6207          0x0438, 0x043d, 0x0441},
6208         {
6209          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6210          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6211          0x0436, 0x043a, 0x043f},
6212         {
6213          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6214          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6215          0x0434, 0x0438, 0x043d},
6216         {
6217          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6218          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6219          0x0431, 0x0436, 0x043a},
6220         {
6221          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6222          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6223          0x042f, 0x0434, 0x0438},
6224         {
6225          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6226          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6227          0x042d, 0x0431, 0x0436},
6228         {
6229          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6230          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6231          0x042b, 0x042f, 0x0434},
6232         {
6233          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6234          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6235          0x0429, 0x042d, 0x0431},
6236         {
6237          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6238          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6239          0x0427, 0x042b, 0x042f},
6240         {
6241          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6242          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6243          0x0424, 0x0429, 0x042d},
6244         {
6245          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6246          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6247          0x0422, 0x0427, 0x042b},
6248         {
6249          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6250          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6251          0x0420, 0x0424, 0x0429},
6252         {
6253          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6254          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6255          0x041b, 0x041f, 0x0424}
6256 };
6257
6258 static chan_info_nphy_radio2057_t chan_info_nphyrev8_2057_rev7[] = {
6259         {
6260          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6261          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6262          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6263          0x0215,
6264          0x0216},
6265         {
6266          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6267          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6268          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6269          0x0214,
6270          0x0215},
6271         {
6272          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6273          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6274          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6275          0x0213,
6276          0x0214},
6277         {
6278          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6279          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6280          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6281          0x0212,
6282          0x0213},
6283         {
6284          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6285          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6286          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6287          0x0211,
6288          0x0212},
6289         {
6290          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6291          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6292          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6293          0x020f,
6294          0x0211},
6295         {
6296          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6297          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6298          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6299          0x020e,
6300          0x020f},
6301         {
6302          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6303          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6304          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6305          0x020d,
6306          0x020e},
6307         {
6308          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6309          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6310          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6311          0x020c,
6312          0x020d},
6313         {
6314          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6315          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6316          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6317          0x020b,
6318          0x020c},
6319         {
6320          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6321          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6322          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6323          0x020a,
6324          0x020b},
6325         {
6326          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6327          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6328          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6329          0x0209,
6330          0x020a},
6331         {
6332          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6333          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6334          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6335          0x0208,
6336          0x0209},
6337         {
6338          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6339          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6340          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6341          0x0207,
6342          0x0208},
6343         {
6344          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6345          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6346          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6347          0x0206,
6348          0x0207},
6349         {
6350          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6351          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6352          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6353          0x0205,
6354          0x0206},
6355         {
6356          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6357          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6358          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6359          0x0204,
6360          0x0205},
6361         {
6362          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6363          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6364          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6365          0x0203,
6366          0x0204},
6367         {
6368          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6369          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6370          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6371          0x0202,
6372          0x0203},
6373         {
6374          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6375          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6376          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6377          0x0201,
6378          0x0202},
6379         {
6380          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6381          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6382          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6383          0x0200,
6384          0x0201},
6385         {
6386          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6387          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6388          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6389          0x01ff,
6390          0x0200},
6391         {
6392          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6393          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6394          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6395          0x01fe,
6396          0x01ff},
6397         {
6398          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6399          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6400          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6401          0x01fc,
6402          0x01fd},
6403         {
6404          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6405          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6406          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6407          0x01fb,
6408          0x01fc},
6409         {
6410          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6411          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6412          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6413          0x01fa,
6414          0x01fb},
6415         {
6416          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6417          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6418          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6419          0x01f9,
6420          0x01fa},
6421         {
6422          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6423          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6424          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6425          0x01f8,
6426          0x01f9},
6427         {
6428          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6429          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6430          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6431          0x01f7,
6432          0x01f8},
6433         {
6434          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6435          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6436          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6437          0x01f6,
6438          0x01f7},
6439         {
6440          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6441          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6442          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6443          0x01f5,
6444          0x01f6},
6445         {
6446          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6447          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6448          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6449          0x01f4,
6450          0x01f5},
6451         {
6452          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6453          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6454          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6455          0x01f3,
6456          0x01f4},
6457         {
6458          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6459          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6460          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6461          0x01f2,
6462          0x01f3},
6463         {
6464          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6465          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6466          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6467          0x01f1,
6468          0x01f2},
6469         {
6470          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6471          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6472          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6473          0x01f0,
6474          0x01f1},
6475         {
6476          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6477          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6478          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6479          0x01f0,
6480          0x01f0},
6481         {
6482          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6483          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6484          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6485          0x01ef,
6486          0x01f0},
6487         {
6488          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6489          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6490          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6491          0x01ee,
6492          0x01ef},
6493         {
6494          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6495          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6496          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6497          0x01ed,
6498          0x01ee},
6499         {
6500          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6501          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6502          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6503          0x01ec,
6504          0x01ed},
6505         {
6506          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6507          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6508          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6509          0x01eb,
6510          0x01ec},
6511         {
6512          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6513          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6514          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6515          0x01ea,
6516          0x01eb},
6517         {
6518          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6519          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6520          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6521          0x01e9,
6522          0x01ea},
6523         {
6524          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6525          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6526          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6527          0x01e8,
6528          0x01e9},
6529         {
6530          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6531          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6532          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6533          0x01e7,
6534          0x01e8},
6535         {
6536          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6537          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6538          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6539          0x01e6,
6540          0x01e7},
6541         {
6542          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6543          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6544          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6545          0x01e5,
6546          0x01e6},
6547         {
6548          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6549          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6550          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6551          0x01e5,
6552          0x01e5},
6553         {
6554          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6555          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6556          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6557          0x01e4,
6558          0x01e5},
6559         {
6560          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6561          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6562          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6563          0x01e3,
6564          0x01e4},
6565         {
6566          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6567          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6568          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6569          0x01e2,
6570          0x01e3},
6571         {
6572          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6573          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6574          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6575          0x01e1,
6576          0x01e2},
6577         {
6578          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6579          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6580          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6581          0x01e0,
6582          0x01e1},
6583         {
6584          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6585          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6586          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6587          0x01df,
6588          0x01e0},
6589         {
6590          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6591          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6592          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6593          0x01de,
6594          0x01df},
6595         {
6596          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6597          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6598          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6599          0x01dd,
6600          0x01de},
6601         {
6602          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6603          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6604          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6605          0x01dd,
6606          0x01dd},
6607         {
6608          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6609          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6610          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6611          0x01dc,
6612          0x01dd},
6613         {
6614          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6615          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6616          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6617          0x01db,
6618          0x01dc},
6619         {
6620          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6621          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6622          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6623          0x01da,
6624          0x01db},
6625         {
6626          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6627          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6628          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6629          0x01d9,
6630          0x01da},
6631         {
6632          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6633          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6634          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6635          0x01d8,
6636          0x01d9},
6637         {
6638          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6639          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6640          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6641          0x01d7,
6642          0x01d8},
6643         {
6644          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6645          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6646          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6647          0x01d7,
6648          0x01d7},
6649         {
6650          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6651          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6652          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6653          0x01d6,
6654          0x01d7},
6655         {
6656          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6657          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6658          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6659          0x01d5,
6660          0x01d6},
6661         {
6662          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6663          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6664          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6665          0x01d4,
6666          0x01d5},
6667         {
6668          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6669          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6670          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6671          0x01d3,
6672          0x01d4},
6673         {
6674          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6675          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6676          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6677          0x01d2,
6678          0x01d3},
6679         {
6680          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6681          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6682          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6683          0x01d2,
6684          0x01d2},
6685         {
6686          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6687          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6688          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6689          0x01d1,
6690          0x01d2},
6691         {
6692          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6693          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6694          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6695          0x01d0,
6696          0x01d1},
6697         {
6698          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6699          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6700          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6701          0x01cf,
6702          0x01d0},
6703         {
6704          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6705          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6706          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6707          0x01ce,
6708          0x01cf},
6709         {
6710          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6711          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6712          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6713          0x01ce,
6714          0x01ce},
6715         {
6716          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6717          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6718          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6719          0x01cd,
6720          0x01ce},
6721         {
6722          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6723          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6724          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6725          0x01cc,
6726          0x01cd},
6727         {
6728          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6729          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6730          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6731          0x01cb,
6732          0x01cc},
6733         {
6734          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6735          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6736          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6737          0x01ca,
6738          0x01cb},
6739         {
6740          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6741          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6742          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6743          0x01ca,
6744          0x01cb},
6745         {
6746          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6747          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6748          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6749          0x01c9,
6750          0x01ca},
6751         {
6752          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6753          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6754          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6755          0x01c9,
6756          0x01ca},
6757         {
6758          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6759          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6760          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6761          0x01c9,
6762          0x01c9},
6763         {
6764          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6765          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6766          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6767          0x01c8,
6768          0x01c9},
6769         {
6770          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6771          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6772          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6773          0x01c8,
6774          0x01c9},
6775         {
6776          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6777          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6778          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6779          0x01c8,
6780          0x01c8},
6781         {
6782          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6783          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6784          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6785          0x01c7,
6786          0x01c8},
6787         {
6788          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6789          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6790          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6791          0x01c7,
6792          0x01c8},
6793         {
6794          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6795          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6796          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6797          0x01c6,
6798          0x01c7},
6799         {
6800          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6801          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6802          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6803          0x01c6,
6804          0x01c7},
6805         {
6806          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6807          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6808          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6809          0x01c6,
6810          0x01c6},
6811         {
6812          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6813          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6814          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6815          0x01c5,
6816          0x01c6},
6817         {
6818          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6819          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6820          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6821          0x01c5,
6822          0x01c6},
6823         {
6824          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6825          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6826          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6827          0x01c4,
6828          0x01c5},
6829         {
6830          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6831          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6832          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6833          0x01c4,
6834          0x01c5},
6835         {
6836          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6837          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6838          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6839          0x01c4,
6840          0x01c4},
6841         {
6842          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6843          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6844          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6845          0x01c3,
6846          0x01c4},
6847         {
6848          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6849          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6850          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6851          0x01c3,
6852          0x01c4},
6853         {
6854          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6855          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6856          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6857          0x01c2,
6858          0x01c3},
6859         {
6860          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6861          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6862          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6863          0x01c2,
6864          0x01c3},
6865         {
6866          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6867          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6868          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6869          0x01c2,
6870          0x01c2},
6871         {
6872          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6873          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6874          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6875          0x01c1,
6876          0x01c2},
6877         {
6878          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6879          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6880          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6881          0x01c0,
6882          0x01c1},
6883         {
6884          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6885          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6886          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6887          0x01bf,
6888          0x01c0},
6889         {
6890          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6891          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6892          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6893          0x01bf,
6894          0x01bf},
6895         {
6896          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6897          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6898          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6899          0x01be,
6900          0x01bf},
6901         {
6902          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6903          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6904          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6905          0x01bd,
6906          0x01be},
6907         {
6908          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6909          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6910          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6911          0x01bc,
6912          0x01bd},
6913         {
6914          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6915          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6916          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6917          0x043f,
6918          0x0443},
6919         {
6920          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6921          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6922          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6923          0x043d,
6924          0x0441},
6925         {
6926          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6927          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6928          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6929          0x043a,
6930          0x043f},
6931         {
6932          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6933          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6934          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6935          0x0438,
6936          0x043d},
6937         {
6938          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6939          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6940          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6941          0x0436,
6942          0x043a},
6943         {
6944          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6945          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6946          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6947          0x0434,
6948          0x0438},
6949         {
6950          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6951          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6952          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6953          0x0431,
6954          0x0436},
6955         {
6956          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6957          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6958          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6959          0x042f,
6960          0x0434},
6961         {
6962          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6963          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6964          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6965          0x042d,
6966          0x0431},
6967         {
6968          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6969          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6970          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6971          0x042b,
6972          0x042f},
6973         {
6974          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6975          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6976          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6977          0x0429,
6978          0x042d},
6979         {
6980          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6981          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6982          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6983          0x0427,
6984          0x042b},
6985         {
6986          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6987          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6988          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6989          0x0424,
6990          0x0429},
6991         {
6992          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6993          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
6994          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6995          0x041f,
6996          0x0424}
6997 };
6998
6999 static chan_info_nphy_radio2057_t chan_info_nphyrev8_2057_rev8[] = {
7000         {
7001          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7002          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7003          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7004          0x0214,
7005          0x0215},
7006         {
7007          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7008          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7009          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7010          0x0213,
7011          0x0214},
7012         {
7013          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7014          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7015          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7016          0x0212,
7017          0x0213},
7018         {
7019          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7020          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7021          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7022          0x0211,
7023          0x0212},
7024         {
7025          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7026          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7027          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7028          0x020f,
7029          0x0211},
7030         {
7031          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7032          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7033          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7034          0x020e,
7035          0x020f},
7036         {
7037          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7038          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7039          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7040          0x020d,
7041          0x020e},
7042         {
7043          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7044          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7045          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7046          0x020c,
7047          0x020d},
7048         {
7049          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7050          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7051          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7052          0x020b,
7053          0x020c},
7054         {
7055          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7056          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7057          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7058          0x020a,
7059          0x020b},
7060         {
7061          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7062          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7063          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7064          0x0209,
7065          0x020a},
7066         {
7067          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7068          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7069          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7070          0x0208,
7071          0x0209},
7072         {
7073          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7074          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7075          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7076          0x0207,
7077          0x0208},
7078         {
7079          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7080          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7081          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7082          0x0206,
7083          0x0207},
7084         {
7085          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7086          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7087          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7088          0x0205,
7089          0x0206},
7090         {
7091          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7092          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7093          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7094          0x0204,
7095          0x0205},
7096         {
7097          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7098          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7099          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7100          0x0203,
7101          0x0204},
7102         {
7103          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7104          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7105          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7106          0x0202,
7107          0x0203},
7108         {
7109          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7110          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7111          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7112          0x0201,
7113          0x0202},
7114         {
7115          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7116          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7117          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7118          0x0200,
7119          0x0201},
7120         {
7121          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7122          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7123          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7124          0x01ff,
7125          0x0200},
7126         {
7127          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7128          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7129          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7130          0x01fe,
7131          0x01ff},
7132         {
7133          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7134          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7135          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7136          0x01fc,
7137          0x01fd},
7138         {
7139          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7140          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7141          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7142          0x01fb,
7143          0x01fc},
7144         {
7145          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7146          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7147          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7148          0x01fa,
7149          0x01fb},
7150         {
7151          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7152          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7153          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7154          0x01f9,
7155          0x01fa},
7156         {
7157          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7158          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7159          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7160          0x01f8,
7161          0x01f9},
7162         {
7163          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7164          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7165          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7166          0x01f7,
7167          0x01f8},
7168         {
7169          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7170          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7171          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7172          0x01f6,
7173          0x01f7},
7174         {
7175          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7176          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7177          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7178          0x01f5,
7179          0x01f6},
7180         {
7181          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7182          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7183          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7184          0x01f4,
7185          0x01f5},
7186         {
7187          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7188          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7189          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7190          0x01f3,
7191          0x01f4},
7192         {
7193          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7194          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7195          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7196          0x01f2,
7197          0x01f3},
7198         {
7199          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7200          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7201          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7202          0x01f1,
7203          0x01f2},
7204         {
7205          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7206          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7207          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7208          0x01f0,
7209          0x01f1},
7210         {
7211          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7212          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7213          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7214          0x01f0,
7215          0x01f0},
7216         {
7217          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7218          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7219          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7220          0x01ef,
7221          0x01f0},
7222         {
7223          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7224          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7225          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7226          0x01ee,
7227          0x01ef},
7228         {
7229          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7230          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7231          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7232          0x01ed,
7233          0x01ee},
7234         {
7235          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7236          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7237          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7238          0x01ec,
7239          0x01ed},
7240         {
7241          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7242          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7243          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7244          0x01eb,
7245          0x01ec},
7246         {
7247          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7248          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7249          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7250          0x01ea,
7251          0x01eb},
7252         {
7253          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7254          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7255          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7256          0x01e9,
7257          0x01ea},
7258         {
7259          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7260          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7261          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7262          0x01e8,
7263          0x01e9},
7264         {
7265          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7266          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7267          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7268          0x01e7,
7269          0x01e8},
7270         {
7271          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7272          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7273          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7274          0x01e6,
7275          0x01e7},
7276         {
7277          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7278          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7279          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7280          0x01e5,
7281          0x01e6},
7282         {
7283          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7284          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7285          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7286          0x01e5,
7287          0x01e5},
7288         {
7289          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7290          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7291          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7292          0x01e4,
7293          0x01e5},
7294         {
7295          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7296          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7297          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7298          0x01e3,
7299          0x01e4},
7300         {
7301          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7302          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7303          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7304          0x01e2,
7305          0x01e3},
7306         {
7307          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7308          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7309          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7310          0x01e1,
7311          0x01e2},
7312         {
7313          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7314          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7315          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7316          0x01e0,
7317          0x01e1},
7318         {
7319          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7320          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7321          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7322          0x01df,
7323          0x01e0},
7324         {
7325          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7326          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7327          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7328          0x01de,
7329          0x01df},
7330         {
7331          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7332          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7333          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7334          0x01dd,
7335          0x01de},
7336         {
7337          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7338          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7339          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7340          0x01dd,
7341          0x01dd},
7342         {
7343          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7344          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7345          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7346          0x01dc,
7347          0x01dd},
7348         {
7349          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7350          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7351          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7352          0x01db,
7353          0x01dc},
7354         {
7355          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7356          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7357          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7358          0x01da,
7359          0x01db},
7360         {
7361          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7362          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7363          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7364          0x01d9,
7365          0x01da},
7366         {
7367          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7368          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7369          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7370          0x01d8,
7371          0x01d9},
7372         {
7373          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7374          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7375          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7376          0x01d7,
7377          0x01d8},
7378         {
7379          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7380          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7381          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7382          0x01d7,
7383          0x01d7},
7384         {
7385          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7386          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7387          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7388          0x01d6,
7389          0x01d7},
7390         {
7391          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7392          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7393          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7394          0x01d5,
7395          0x01d6},
7396         {
7397          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7398          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7399          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7400          0x01d4,
7401          0x01d5},
7402         {
7403          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7404          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7405          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7406          0x01d3,
7407          0x01d4},
7408         {
7409          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7410          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7411          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7412          0x01d2,
7413          0x01d3},
7414         {
7415          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7416          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7417          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7418          0x01d2,
7419          0x01d2},
7420         {
7421          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7422          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7423          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7424          0x01d1,
7425          0x01d2},
7426         {
7427          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7428          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7429          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7430          0x01d0,
7431          0x01d1},
7432         {
7433          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7434          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7435          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7436          0x01cf,
7437          0x01d0},
7438         {
7439          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7440          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7441          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7442          0x01ce,
7443          0x01cf},
7444         {
7445          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7446          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7447          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7448          0x01ce,
7449          0x01ce},
7450         {
7451          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7452          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7453          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7454          0x01cd,
7455          0x01ce},
7456         {
7457          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7458          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7459          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7460          0x01cc,
7461          0x01cd},
7462         {
7463          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7464          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7465          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7466          0x01cb,
7467          0x01cc},
7468         {
7469          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7470          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7471          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7472          0x01ca,
7473          0x01cb},
7474         {
7475          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7476          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7477          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7478          0x01ca,
7479          0x01cb},
7480         {
7481          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7482          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7483          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7484          0x01c9,
7485          0x01ca},
7486         {
7487          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7488          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7489          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7490          0x01c9,
7491          0x01ca},
7492         {
7493          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7494          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7495          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7496          0x01c9,
7497          0x01c9},
7498         {
7499          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7500          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7501          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7502          0x01c8,
7503          0x01c9},
7504         {
7505          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7506          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7507          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7508          0x01c8,
7509          0x01c9},
7510         {
7511          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7512          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7513          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7514          0x01c8,
7515          0x01c8},
7516         {
7517          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7518          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7519          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7520          0x01c7,
7521          0x01c8},
7522         {
7523          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7524          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7525          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7526          0x01c7,
7527          0x01c8},
7528         {
7529          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7530          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7531          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7532          0x01c6,
7533          0x01c7},
7534         {
7535          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7536          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7537          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7538          0x01c6,
7539          0x01c7},
7540         {
7541          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7542          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7543          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7544          0x01c6,
7545          0x01c6},
7546         {
7547          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7548          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7549          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7550          0x01c5,
7551          0x01c6},
7552         {
7553          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7554          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7555          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7556          0x01c5,
7557          0x01c6},
7558         {
7559          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7560          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7561          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7562          0x01c4,
7563          0x01c5},
7564         {
7565          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7566          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7567          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7568          0x01c4,
7569          0x01c5},
7570         {
7571          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7572          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7573          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7574          0x01c4,
7575          0x01c4},
7576         {
7577          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7578          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7579          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7580          0x01c3,
7581          0x01c4},
7582         {
7583          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7584          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7585          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7586          0x01c3,
7587          0x01c4},
7588         {
7589          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7590          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7591          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7592          0x01c2,
7593          0x01c3},
7594         {
7595          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7596          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7597          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7598          0x01c2,
7599          0x01c3},
7600         {
7601          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7602          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7603          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7604          0x01c2,
7605          0x01c2},
7606         {
7607          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7608          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7609          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7610          0x01c1,
7611          0x01c2},
7612         {
7613          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7614          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7615          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7616          0x01c0,
7617          0x01c1},
7618         {
7619          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7620          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7621          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7622          0x01bf,
7623          0x01c0},
7624         {
7625          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7626          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7627          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7628          0x01bf,
7629          0x01bf},
7630         {
7631          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7632          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7633          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7634          0x01be,
7635          0x01bf},
7636         {
7637          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7638          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7639          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7640          0x01bd,
7641          0x01be},
7642         {
7643          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7644          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7645          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7646          0x01bc,
7647          0x01bd},
7648         {
7649          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7650          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7651          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7652          0x043f,
7653          0x0443},
7654         {
7655          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7656          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7657          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7658          0x043d,
7659          0x0441},
7660         {
7661          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7662          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7663          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7664          0x043a,
7665          0x043f},
7666         {
7667          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7668          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7669          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7670          0x0438,
7671          0x043d},
7672         {
7673          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7674          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7675          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7676          0x0436,
7677          0x043a},
7678         {
7679          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7680          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7681          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7682          0x0434,
7683          0x0438},
7684         {
7685          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7686          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7687          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7688          0x0431,
7689          0x0436},
7690         {
7691          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7692          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7693          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7694          0x042f,
7695          0x0434},
7696         {
7697          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7698          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7699          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7700          0x042d,
7701          0x0431},
7702         {
7703          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7704          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7705          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7706          0x042b,
7707          0x042f},
7708         {
7709          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7710          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7711          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7712          0x0429,
7713          0x042d},
7714         {
7715          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7716          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7717          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7718          0x0427,
7719          0x042b},
7720         {
7721          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7722          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7723          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7724          0x0424,
7725          0x0429},
7726         {
7727          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7728          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7729          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7730          0x041f,
7731          0x0424}
7732 };
7733
7734 radio_regs_t regs_2055[] = {
7735         {0x02, 0x80, 0x80, 0, 0},
7736         {0x03, 0, 0, 0, 0},
7737         {0x04, 0x27, 0x27, 0, 0},
7738         {0x05, 0, 0, 0, 0},
7739         {0x06, 0x27, 0x27, 0, 0},
7740         {0x07, 0x7f, 0x7f, 1, 1},
7741         {0x08, 0x7, 0x7, 1, 1},
7742         {0x09, 0x7f, 0x7f, 1, 1},
7743         {0x0A, 0x7, 0x7, 1, 1},
7744         {0x0B, 0x15, 0x15, 0, 0},
7745         {0x0C, 0x15, 0x15, 0, 0},
7746         {0x0D, 0x4f, 0x4f, 1, 1},
7747         {0x0E, 0x5, 0x5, 1, 1},
7748         {0x0F, 0x4f, 0x4f, 1, 1},
7749         {0x10, 0x5, 0x5, 1, 1},
7750         {0x11, 0xd0, 0xd0, 0, 0},
7751         {0x12, 0x2, 0x2, 0, 0},
7752         {0x13, 0, 0, 0, 0},
7753         {0x14, 0x40, 0x40, 0, 0},
7754         {0x15, 0, 0, 0, 0},
7755         {0x16, 0, 0, 0, 0},
7756         {0x17, 0, 0, 0, 0},
7757         {0x18, 0, 0, 0, 0},
7758         {0x19, 0, 0, 0, 0},
7759         {0x1A, 0, 0, 0, 0},
7760         {0x1B, 0, 0, 0, 0},
7761         {0x1C, 0, 0, 0, 0},
7762         {0x1D, 0xc0, 0xc0, 0, 0},
7763         {0x1E, 0xff, 0xff, 0, 0},
7764         {0x1F, 0xc0, 0xc0, 0, 0},
7765         {0x20, 0xff, 0xff, 0, 0},
7766         {0x21, 0xc0, 0xc0, 0, 0},
7767         {0x22, 0, 0, 0, 0},
7768         {0x23, 0x2c, 0x2c, 0, 0},
7769         {0x24, 0, 0, 0, 0},
7770         {0x25, 0, 0, 0, 0},
7771         {0x26, 0, 0, 0, 0},
7772         {0x27, 0, 0, 0, 0},
7773         {0x28, 0, 0, 0, 0},
7774         {0x29, 0, 0, 0, 0},
7775         {0x2A, 0, 0, 0, 0},
7776         {0x2B, 0, 0, 0, 0},
7777         {0x2C, 0, 0, 0, 0},
7778         {0x2D, 0xa4, 0xa4, 0, 0},
7779         {0x2E, 0x38, 0x38, 0, 0},
7780         {0x2F, 0, 0, 0, 0},
7781         {0x30, 0x4, 0x4, 1, 1},
7782         {0x31, 0, 0, 0, 0},
7783         {0x32, 0xa, 0xa, 0, 0},
7784         {0x33, 0x87, 0x87, 0, 0},
7785         {0x34, 0x9, 0x9, 0, 0},
7786         {0x35, 0x70, 0x70, 0, 0},
7787         {0x36, 0x11, 0x11, 0, 0},
7788         {0x37, 0x18, 0x18, 1, 1},
7789         {0x38, 0x6, 0x6, 0, 0},
7790         {0x39, 0x4, 0x4, 1, 1},
7791         {0x3A, 0x6, 0x6, 0, 0},
7792         {0x3B, 0x9e, 0x9e, 0, 0},
7793         {0x3C, 0x9, 0x9, 0, 0},
7794         {0x3D, 0xc8, 0xc8, 1, 1},
7795         {0x3E, 0x88, 0x88, 0, 0},
7796         {0x3F, 0, 0, 0, 0},
7797         {0x40, 0, 0, 0, 0},
7798         {0x41, 0, 0, 0, 0},
7799         {0x42, 0x1, 0x1, 0, 0},
7800         {0x43, 0x2, 0x2, 0, 0},
7801         {0x44, 0x96, 0x96, 0, 0},
7802         {0x45, 0x3e, 0x3e, 0, 0},
7803         {0x46, 0x3e, 0x3e, 0, 0},
7804         {0x47, 0x13, 0x13, 0, 0},
7805         {0x48, 0x2, 0x2, 0, 0},
7806         {0x49, 0x15, 0x15, 0, 0},
7807         {0x4A, 0x7, 0x7, 0, 0},
7808         {0x4B, 0, 0, 0, 0},
7809         {0x4C, 0, 0, 0, 0},
7810         {0x4D, 0, 0, 0, 0},
7811         {0x4E, 0, 0, 0, 0},
7812         {0x4F, 0, 0, 0, 0},
7813         {0x50, 0x8, 0x8, 0, 0},
7814         {0x51, 0x8, 0x8, 0, 0},
7815         {0x52, 0x6, 0x6, 0, 0},
7816         {0x53, 0x84, 0x84, 1, 1},
7817         {0x54, 0xc3, 0xc3, 0, 0},
7818         {0x55, 0x8f, 0x8f, 0, 0},
7819         {0x56, 0xff, 0xff, 0, 0},
7820         {0x57, 0xff, 0xff, 0, 0},
7821         {0x58, 0x88, 0x88, 0, 0},
7822         {0x59, 0x88, 0x88, 0, 0},
7823         {0x5A, 0, 0, 0, 0},
7824         {0x5B, 0xcc, 0xcc, 0, 0},
7825         {0x5C, 0x6, 0x6, 0, 0},
7826         {0x5D, 0x80, 0x80, 0, 0},
7827         {0x5E, 0x80, 0x80, 0, 0},
7828         {0x5F, 0xf8, 0xf8, 0, 0},
7829         {0x60, 0x88, 0x88, 0, 0},
7830         {0x61, 0x88, 0x88, 0, 0},
7831         {0x62, 0x88, 0x8, 1, 1},
7832         {0x63, 0x88, 0x88, 0, 0},
7833         {0x64, 0, 0, 0, 0},
7834         {0x65, 0x1, 0x1, 1, 1},
7835         {0x66, 0x8a, 0x8a, 0, 0},
7836         {0x67, 0x8, 0x8, 0, 0},
7837         {0x68, 0x83, 0x83, 0, 0},
7838         {0x69, 0x6, 0x6, 0, 0},
7839         {0x6A, 0xa0, 0xa0, 0, 0},
7840         {0x6B, 0xa, 0xa, 0, 0},
7841         {0x6C, 0x87, 0x87, 1, 1},
7842         {0x6D, 0x2a, 0x2a, 0, 0},
7843         {0x6E, 0x2a, 0x2a, 0, 0},
7844         {0x6F, 0x2a, 0x2a, 0, 0},
7845         {0x70, 0x2a, 0x2a, 0, 0},
7846         {0x71, 0x18, 0x18, 0, 0},
7847         {0x72, 0x6a, 0x6a, 1, 1},
7848         {0x73, 0xab, 0xab, 1, 1},
7849         {0x74, 0x13, 0x13, 1, 1},
7850         {0x75, 0xc1, 0xc1, 1, 1},
7851         {0x76, 0xaa, 0xaa, 1, 1},
7852         {0x77, 0x87, 0x87, 1, 1},
7853         {0x78, 0, 0, 0, 0},
7854         {0x79, 0x6, 0x6, 0, 0},
7855         {0x7A, 0x7, 0x7, 0, 0},
7856         {0x7B, 0x7, 0x7, 0, 0},
7857         {0x7C, 0x15, 0x15, 0, 0},
7858         {0x7D, 0x55, 0x55, 0, 0},
7859         {0x7E, 0x97, 0x97, 1, 1},
7860         {0x7F, 0x8, 0x8, 0, 0},
7861         {0x80, 0x14, 0x14, 1, 1},
7862         {0x81, 0x33, 0x33, 0, 0},
7863         {0x82, 0x88, 0x88, 0, 0},
7864         {0x83, 0x6, 0x6, 0, 0},
7865         {0x84, 0x3, 0x3, 1, 1},
7866         {0x85, 0xa, 0xa, 0, 0},
7867         {0x86, 0x3, 0x3, 1, 1},
7868         {0x87, 0x2a, 0x2a, 0, 0},
7869         {0x88, 0xa4, 0xa4, 0, 0},
7870         {0x89, 0x18, 0x18, 0, 0},
7871         {0x8A, 0x28, 0x28, 0, 0},
7872         {0x8B, 0, 0, 0, 0},
7873         {0x8C, 0x4a, 0x4a, 0, 0},
7874         {0x8D, 0, 0, 0, 0},
7875         {0x8E, 0xf8, 0xf8, 0, 0},
7876         {0x8F, 0x88, 0x88, 0, 0},
7877         {0x90, 0x88, 0x88, 0, 0},
7878         {0x91, 0x88, 0x8, 1, 1},
7879         {0x92, 0x88, 0x88, 0, 0},
7880         {0x93, 0, 0, 0, 0},
7881         {0x94, 0x1, 0x1, 1, 1},
7882         {0x95, 0x8a, 0x8a, 0, 0},
7883         {0x96, 0x8, 0x8, 0, 0},
7884         {0x97, 0x83, 0x83, 0, 0},
7885         {0x98, 0x6, 0x6, 0, 0},
7886         {0x99, 0xa0, 0xa0, 0, 0},
7887         {0x9A, 0xa, 0xa, 0, 0},
7888         {0x9B, 0x87, 0x87, 1, 1},
7889         {0x9C, 0x2a, 0x2a, 0, 0},
7890         {0x9D, 0x2a, 0x2a, 0, 0},
7891         {0x9E, 0x2a, 0x2a, 0, 0},
7892         {0x9F, 0x2a, 0x2a, 0, 0},
7893         {0xA0, 0x18, 0x18, 0, 0},
7894         {0xA1, 0x6a, 0x6a, 1, 1},
7895         {0xA2, 0xab, 0xab, 1, 1},
7896         {0xA3, 0x13, 0x13, 1, 1},
7897         {0xA4, 0xc1, 0xc1, 1, 1},
7898         {0xA5, 0xaa, 0xaa, 1, 1},
7899         {0xA6, 0x87, 0x87, 1, 1},
7900         {0xA7, 0, 0, 0, 0},
7901         {0xA8, 0x6, 0x6, 0, 0},
7902         {0xA9, 0x7, 0x7, 0, 0},
7903         {0xAA, 0x7, 0x7, 0, 0},
7904         {0xAB, 0x15, 0x15, 0, 0},
7905         {0xAC, 0x55, 0x55, 0, 0},
7906         {0xAD, 0x97, 0x97, 1, 1},
7907         {0xAE, 0x8, 0x8, 0, 0},
7908         {0xAF, 0x14, 0x14, 1, 1},
7909         {0xB0, 0x33, 0x33, 0, 0},
7910         {0xB1, 0x88, 0x88, 0, 0},
7911         {0xB2, 0x6, 0x6, 0, 0},
7912         {0xB3, 0x3, 0x3, 1, 1},
7913         {0xB4, 0xa, 0xa, 0, 0},
7914         {0xB5, 0x3, 0x3, 1, 1},
7915         {0xB6, 0x2a, 0x2a, 0, 0},
7916         {0xB7, 0xa4, 0xa4, 0, 0},
7917         {0xB8, 0x18, 0x18, 0, 0},
7918         {0xB9, 0x28, 0x28, 0, 0},
7919         {0xBA, 0, 0, 0, 0},
7920         {0xBB, 0x4a, 0x4a, 0, 0},
7921         {0xBC, 0, 0, 0, 0},
7922         {0xBD, 0x71, 0x71, 0, 0},
7923         {0xBE, 0x72, 0x72, 0, 0},
7924         {0xBF, 0x73, 0x73, 0, 0},
7925         {0xC0, 0x74, 0x74, 0, 0},
7926         {0xC1, 0x75, 0x75, 0, 0},
7927         {0xC2, 0x76, 0x76, 0, 0},
7928         {0xC3, 0x77, 0x77, 0, 0},
7929         {0xC4, 0x78, 0x78, 0, 0},
7930         {0xC5, 0x79, 0x79, 0, 0},
7931         {0xC6, 0x7a, 0x7a, 0, 0},
7932         {0xC7, 0, 0, 0, 0},
7933         {0xC8, 0, 0, 0, 0},
7934         {0xC9, 0, 0, 0, 0},
7935         {0xCA, 0, 0, 0, 0},
7936         {0xCB, 0, 0, 0, 0},
7937         {0xCC, 0, 0, 0, 0},
7938         {0xCD, 0, 0, 0, 0},
7939         {0xCE, 0x6, 0x6, 0, 0},
7940         {0xCF, 0, 0, 0, 0},
7941         {0xD0, 0, 0, 0, 0},
7942         {0xD1, 0x18, 0x18, 0, 0},
7943         {0xD2, 0x88, 0x88, 0, 0},
7944         {0xD3, 0, 0, 0, 0},
7945         {0xD4, 0, 0, 0, 0},
7946         {0xD5, 0, 0, 0, 0},
7947         {0xD6, 0, 0, 0, 0},
7948         {0xD7, 0, 0, 0, 0},
7949         {0xD8, 0, 0, 0, 0},
7950         {0xD9, 0, 0, 0, 0},
7951         {0xDA, 0x6, 0x6, 0, 0},
7952         {0xDB, 0, 0, 0, 0},
7953         {0xDC, 0, 0, 0, 0},
7954         {0xDD, 0x18, 0x18, 0, 0},
7955         {0xDE, 0x88, 0x88, 0, 0},
7956         {0xDF, 0, 0, 0, 0},
7957         {0xE0, 0, 0, 0, 0},
7958         {0xE1, 0, 0, 0, 0},
7959         {0xE2, 0, 0, 0, 0},
7960         {0xFFFF, 0, 0, 0, 0},
7961 };
7962
7963 radio_regs_t regs_SYN_2056[] = {
7964         {0x02, 0, 0, 0, 0},
7965         {0x03, 0, 0, 0, 0},
7966         {0x04, 0, 0, 0, 0},
7967         {0x05, 0, 0, 0, 0},
7968         {0x06, 0, 0, 0, 0},
7969         {0x07, 0, 0, 0, 0},
7970         {0x08, 0, 0, 0, 0},
7971         {0x09, 0x1, 0x1, 0, 0},
7972         {0x0A, 0, 0, 0, 0},
7973         {0x0B, 0, 0, 0, 0},
7974         {0x0C, 0, 0, 0, 0},
7975         {0x0D, 0, 0, 0, 0},
7976         {0x0E, 0, 0, 0, 0},
7977         {0x0F, 0, 0, 0, 0},
7978         {0x10, 0, 0, 0, 0},
7979         {0x11, 0, 0, 0, 0},
7980         {0x12, 0, 0, 0, 0},
7981         {0x13, 0, 0, 0, 0},
7982         {0x14, 0, 0, 0, 0},
7983         {0x15, 0, 0, 0, 0},
7984         {0x16, 0, 0, 0, 0},
7985         {0x17, 0, 0, 0, 0},
7986         {0x18, 0, 0, 0, 0},
7987         {0x19, 0, 0, 0, 0},
7988         {0x1A, 0, 0, 0, 0},
7989         {0x1B, 0, 0, 0, 0},
7990         {0x1C, 0, 0, 0, 0},
7991         {0x1D, 0, 0, 0, 0},
7992         {0x1E, 0, 0, 0, 0},
7993         {0x1F, 0, 0, 0, 0},
7994         {0x20, 0, 0, 0, 0},
7995         {0x21, 0, 0, 0, 0},
7996         {0x22, 0x60, 0x60, 0, 0},
7997         {0x23, 0x6, 0x6, 0, 0},
7998         {0x24, 0xc, 0xc, 0, 0},
7999         {0x25, 0, 0, 0, 0},
8000         {0x26, 0, 0, 0, 0},
8001         {0x27, 0, 0, 0, 0},
8002         {0x28, 0x1, 0x1, 0, 0},
8003         {0x29, 0, 0, 0, 0},
8004         {0x2A, 0, 0, 0, 0},
8005         {0x2B, 0, 0, 0, 0},
8006         {0x2C, 0, 0, 0, 0},
8007         {0x2D, 0, 0, 0, 0},
8008         {0x2E, 0xd, 0xd, 0, 0},
8009         {0x2F, 0x1f, 0x1f, 0, 0},
8010         {0x30, 0x15, 0x15, 0, 0},
8011         {0x31, 0xf, 0xf, 0, 0},
8012         {0x32, 0, 0, 0, 0},
8013         {0x33, 0, 0, 0, 0},
8014         {0x34, 0, 0, 0, 0},
8015         {0x35, 0, 0, 0, 0},
8016         {0x36, 0, 0, 0, 0},
8017         {0x37, 0, 0, 0, 0},
8018         {0x38, 0, 0, 0, 0},
8019         {0x39, 0, 0, 0, 0},
8020         {0x3A, 0, 0, 0, 0},
8021         {0x3B, 0, 0, 0, 0},
8022         {0x3C, 0x13, 0x13, 0, 0},
8023         {0x3D, 0xf, 0xf, 0, 0},
8024         {0x3E, 0x18, 0x18, 0, 0},
8025         {0x3F, 0, 0, 0, 0},
8026         {0x40, 0, 0, 0, 0},
8027         {0x41, 0x20, 0x20, 0, 0},
8028         {0x42, 0x20, 0x20, 0, 0},
8029         {0x43, 0, 0, 0, 0},
8030         {0x44, 0x77, 0x77, 0, 0},
8031         {0x45, 0x7, 0x7, 0, 0},
8032         {0x46, 0x1, 0x1, 0, 0},
8033         {0x47, 0x4, 0x4, 0, 0},
8034         {0x48, 0xf, 0xf, 0, 0},
8035         {0x49, 0x30, 0x30, 0, 0},
8036         {0x4A, 0x32, 0x32, 0, 0},
8037         {0x4B, 0xd, 0xd, 0, 0},
8038         {0x4C, 0xd, 0xd, 0, 0},
8039         {0x4D, 0x4, 0x4, 0, 0},
8040         {0x4E, 0x6, 0x6, 0, 0},
8041         {0x4F, 0x1, 0x1, 0, 0},
8042         {0x50, 0x1c, 0x1c, 0, 0},
8043         {0x51, 0x2, 0x2, 0, 0},
8044         {0x52, 0x2, 0x2, 0, 0},
8045         {0x53, 0xf7, 0xf7, 1, 1},
8046         {0x54, 0xb4, 0xb4, 0, 0},
8047         {0x55, 0xd2, 0xd2, 0, 0},
8048         {0x56, 0, 0, 0, 0},
8049         {0x57, 0, 0, 0, 0},
8050         {0x58, 0x4, 0x4, 0, 0},
8051         {0x59, 0x96, 0x96, 0, 0},
8052         {0x5A, 0x3e, 0x3e, 0, 0},
8053         {0x5B, 0x3e, 0x3e, 0, 0},
8054         {0x5C, 0x13, 0x13, 0, 0},
8055         {0x5D, 0x2, 0x2, 0, 0},
8056         {0x5E, 0, 0, 0, 0},
8057         {0x5F, 0x7, 0x7, 0, 0},
8058         {0x60, 0x7, 0x7, 1, 1},
8059         {0x61, 0x8, 0x8, 0, 0},
8060         {0x62, 0x3, 0x3, 0, 0},
8061         {0x63, 0, 0, 0, 0},
8062         {0x64, 0, 0, 0, 0},
8063         {0x65, 0, 0, 0, 0},
8064         {0x66, 0, 0, 0, 0},
8065         {0x67, 0, 0, 0, 0},
8066         {0x68, 0x40, 0x40, 0, 0},
8067         {0x69, 0, 0, 0, 0},
8068         {0x6A, 0, 0, 0, 0},
8069         {0x6B, 0, 0, 0, 0},
8070         {0x6C, 0, 0, 0, 0},
8071         {0x6D, 0x1, 0x1, 0, 0},
8072         {0x6E, 0, 0, 0, 0},
8073         {0x6F, 0, 0, 0, 0},
8074         {0x70, 0x60, 0x60, 0, 0},
8075         {0x71, 0x66, 0x66, 0, 0},
8076         {0x72, 0xc, 0xc, 0, 0},
8077         {0x73, 0x66, 0x66, 0, 0},
8078         {0x74, 0x8f, 0x8f, 1, 1},
8079         {0x75, 0, 0, 0, 0},
8080         {0x76, 0xcc, 0xcc, 0, 0},
8081         {0x77, 0x1, 0x1, 0, 0},
8082         {0x78, 0x66, 0x66, 0, 0},
8083         {0x79, 0x66, 0x66, 0, 0},
8084         {0x7A, 0, 0, 0, 0},
8085         {0x7B, 0, 0, 0, 0},
8086         {0x7C, 0, 0, 0, 0},
8087         {0x7D, 0, 0, 0, 0},
8088         {0x7E, 0, 0, 0, 0},
8089         {0x7F, 0, 0, 0, 0},
8090         {0x80, 0, 0, 0, 0},
8091         {0x81, 0, 0, 0, 0},
8092         {0x82, 0, 0, 0, 0},
8093         {0x83, 0, 0, 0, 0},
8094         {0x84, 0, 0, 0, 0},
8095         {0x85, 0xff, 0xff, 0, 0},
8096         {0x86, 0, 0, 0, 0},
8097         {0x87, 0, 0, 0, 0},
8098         {0x88, 0, 0, 0, 0},
8099         {0x89, 0, 0, 0, 0},
8100         {0x8A, 0, 0, 0, 0},
8101         {0x8B, 0, 0, 0, 0},
8102         {0x8C, 0, 0, 0, 0},
8103         {0x8D, 0, 0, 0, 0},
8104         {0x8E, 0, 0, 0, 0},
8105         {0x8F, 0, 0, 0, 0},
8106         {0x90, 0, 0, 0, 0},
8107         {0x91, 0, 0, 0, 0},
8108         {0x92, 0, 0, 0, 0},
8109         {0x93, 0, 0, 0, 0},
8110         {0x94, 0, 0, 0, 0},
8111         {0x95, 0, 0, 0, 0},
8112         {0x96, 0, 0, 0, 0},
8113         {0x97, 0, 0, 0, 0},
8114         {0x98, 0, 0, 0, 0},
8115         {0x99, 0, 0, 0, 0},
8116         {0x9A, 0, 0, 0, 0},
8117         {0x9B, 0, 0, 0, 0},
8118         {0x9C, 0, 0, 0, 0},
8119         {0x9D, 0, 0, 0, 0},
8120         {0x9E, 0, 0, 0, 0},
8121         {0x9F, 0x6, 0x6, 0, 0},
8122         {0xA0, 0x66, 0x66, 0, 0},
8123         {0xA1, 0x66, 0x66, 0, 0},
8124         {0xA2, 0x66, 0x66, 0, 0},
8125         {0xA3, 0x66, 0x66, 0, 0},
8126         {0xA4, 0x66, 0x66, 0, 0},
8127         {0xA5, 0x66, 0x66, 0, 0},
8128         {0xA6, 0x66, 0x66, 0, 0},
8129         {0xA7, 0x66, 0x66, 0, 0},
8130         {0xA8, 0x66, 0x66, 0, 0},
8131         {0xA9, 0x66, 0x66, 0, 0},
8132         {0xAA, 0x66, 0x66, 0, 0},
8133         {0xAB, 0x66, 0x66, 0, 0},
8134         {0xAC, 0x66, 0x66, 0, 0},
8135         {0xAD, 0x66, 0x66, 0, 0},
8136         {0xAE, 0x66, 0x66, 0, 0},
8137         {0xAF, 0x66, 0x66, 0, 0},
8138         {0xB0, 0x66, 0x66, 0, 0},
8139         {0xB1, 0x66, 0x66, 0, 0},
8140         {0xB2, 0x66, 0x66, 0, 0},
8141         {0xB3, 0xa, 0xa, 0, 0},
8142         {0xB4, 0, 0, 0, 0},
8143         {0xB5, 0, 0, 0, 0},
8144         {0xB6, 0, 0, 0, 0},
8145         {0xFFFF, 0, 0, 0, 0}
8146 };
8147
8148 radio_regs_t regs_TX_2056[] = {
8149         {0x02, 0, 0, 0, 0},
8150         {0x03, 0, 0, 0, 0},
8151         {0x04, 0, 0, 0, 0},
8152         {0x05, 0, 0, 0, 0},
8153         {0x06, 0, 0, 0, 0},
8154         {0x07, 0, 0, 0, 0},
8155         {0x08, 0, 0, 0, 0},
8156         {0x09, 0, 0, 0, 0},
8157         {0x0A, 0, 0, 0, 0},
8158         {0x0B, 0, 0, 0, 0},
8159         {0x0C, 0, 0, 0, 0},
8160         {0x0D, 0, 0, 0, 0},
8161         {0x0E, 0, 0, 0, 0},
8162         {0x0F, 0, 0, 0, 0},
8163         {0x10, 0, 0, 0, 0},
8164         {0x11, 0, 0, 0, 0},
8165         {0x12, 0, 0, 0, 0},
8166         {0x13, 0, 0, 0, 0},
8167         {0x14, 0, 0, 0, 0},
8168         {0x15, 0, 0, 0, 0},
8169         {0x16, 0, 0, 0, 0},
8170         {0x17, 0, 0, 0, 0},
8171         {0x18, 0, 0, 0, 0},
8172         {0x19, 0, 0, 0, 0},
8173         {0x1A, 0, 0, 0, 0},
8174         {0x1B, 0, 0, 0, 0},
8175         {0x1C, 0, 0, 0, 0},
8176         {0x1D, 0, 0, 0, 0},
8177         {0x1E, 0, 0, 0, 0},
8178         {0x1F, 0, 0, 0, 0},
8179         {0x20, 0, 0, 0, 0},
8180         {0x21, 0x88, 0x88, 0, 0},
8181         {0x22, 0x88, 0x88, 0, 0},
8182         {0x23, 0x88, 0x88, 0, 0},
8183         {0x24, 0x88, 0x88, 0, 0},
8184         {0x25, 0xc, 0xc, 0, 0},
8185         {0x26, 0, 0, 0, 0},
8186         {0x27, 0x3, 0x3, 0, 0},
8187         {0x28, 0, 0, 0, 0},
8188         {0x29, 0x3, 0x3, 0, 0},
8189         {0x2A, 0x37, 0x37, 0, 0},
8190         {0x2B, 0x3, 0x3, 0, 0},
8191         {0x2C, 0, 0, 0, 0},
8192         {0x2D, 0, 0, 0, 0},
8193         {0x2E, 0x1, 0x1, 0, 0},
8194         {0x2F, 0x1, 0x1, 0, 0},
8195         {0x30, 0, 0, 0, 0},
8196         {0x31, 0, 0, 0, 0},
8197         {0x32, 0, 0, 0, 0},
8198         {0x33, 0x11, 0x11, 0, 0},
8199         {0x34, 0x11, 0x11, 0, 0},
8200         {0x35, 0, 0, 0, 0},
8201         {0x36, 0, 0, 0, 0},
8202         {0x37, 0x3, 0x3, 0, 0},
8203         {0x38, 0xf, 0xf, 0, 0},
8204         {0x39, 0, 0, 0, 0},
8205         {0x3A, 0x2d, 0x2d, 0, 0},
8206         {0x3B, 0, 0, 0, 0},
8207         {0x3C, 0x6e, 0x6e, 0, 0},
8208         {0x3D, 0xf0, 0xf0, 1, 1},
8209         {0x3E, 0, 0, 0, 0},
8210         {0x3F, 0, 0, 0, 0},
8211         {0x40, 0, 0, 0, 0},
8212         {0x41, 0x3, 0x3, 0, 0},
8213         {0x42, 0x3, 0x3, 0, 0},
8214         {0x43, 0, 0, 0, 0},
8215         {0x44, 0x1e, 0x1e, 0, 0},
8216         {0x45, 0, 0, 0, 0},
8217         {0x46, 0x6e, 0x6e, 0, 0},
8218         {0x47, 0xf0, 0xf0, 1, 1},
8219         {0x48, 0, 0, 0, 0},
8220         {0x49, 0x2, 0x2, 0, 0},
8221         {0x4A, 0xff, 0xff, 1, 1},
8222         {0x4B, 0xc, 0xc, 0, 0},
8223         {0x4C, 0, 0, 0, 0},
8224         {0x4D, 0x38, 0x38, 0, 0},
8225         {0x4E, 0x70, 0x70, 1, 1},
8226         {0x4F, 0x2, 0x2, 0, 0},
8227         {0x50, 0x88, 0x88, 0, 0},
8228         {0x51, 0xc, 0xc, 0, 0},
8229         {0x52, 0, 0, 0, 0},
8230         {0x53, 0x8, 0x8, 0, 0},
8231         {0x54, 0x70, 0x70, 1, 1},
8232         {0x55, 0x2, 0x2, 0, 0},
8233         {0x56, 0xff, 0xff, 1, 1},
8234         {0x57, 0, 0, 0, 0},
8235         {0x58, 0x83, 0x83, 0, 0},
8236         {0x59, 0x77, 0x77, 1, 1},
8237         {0x5A, 0, 0, 0, 0},
8238         {0x5B, 0x2, 0x2, 0, 0},
8239         {0x5C, 0x88, 0x88, 0, 0},
8240         {0x5D, 0, 0, 0, 0},
8241         {0x5E, 0x8, 0x8, 0, 0},
8242         {0x5F, 0x77, 0x77, 1, 1},
8243         {0x60, 0x1, 0x1, 0, 0},
8244         {0x61, 0, 0, 0, 0},
8245         {0x62, 0x7, 0x7, 0, 0},
8246         {0x63, 0, 0, 0, 0},
8247         {0x64, 0x7, 0x7, 0, 0},
8248         {0x65, 0, 0, 0, 0},
8249         {0x66, 0, 0, 0, 0},
8250         {0x67, 0x74, 0x74, 1, 1},
8251         {0x68, 0, 0, 0, 0},
8252         {0x69, 0xa, 0xa, 0, 0},
8253         {0x6A, 0, 0, 0, 0},
8254         {0x6B, 0, 0, 0, 0},
8255         {0x6C, 0, 0, 0, 0},
8256         {0x6D, 0, 0, 0, 0},
8257         {0x6E, 0, 0, 0, 0},
8258         {0x6F, 0, 0, 0, 0},
8259         {0x70, 0, 0, 0, 0},
8260         {0x71, 0x2, 0x2, 0, 0},
8261         {0x72, 0, 0, 0, 0},
8262         {0x73, 0, 0, 0, 0},
8263         {0x74, 0xe, 0xe, 0, 0},
8264         {0x75, 0xe, 0xe, 0, 0},
8265         {0x76, 0xe, 0xe, 0, 0},
8266         {0x77, 0x13, 0x13, 0, 0},
8267         {0x78, 0x13, 0x13, 0, 0},
8268         {0x79, 0x1b, 0x1b, 0, 0},
8269         {0x7A, 0x1b, 0x1b, 0, 0},
8270         {0x7B, 0x55, 0x55, 0, 0},
8271         {0x7C, 0x5b, 0x5b, 0, 0},
8272         {0x7D, 0, 0, 0, 0},
8273         {0x7E, 0, 0, 0, 0},
8274         {0x7F, 0, 0, 0, 0},
8275         {0x80, 0, 0, 0, 0},
8276         {0x81, 0, 0, 0, 0},
8277         {0x82, 0, 0, 0, 0},
8278         {0x83, 0, 0, 0, 0},
8279         {0x84, 0, 0, 0, 0},
8280         {0x85, 0, 0, 0, 0},
8281         {0x86, 0, 0, 0, 0},
8282         {0x87, 0, 0, 0, 0},
8283         {0x88, 0, 0, 0, 0},
8284         {0x89, 0, 0, 0, 0},
8285         {0x8A, 0, 0, 0, 0},
8286         {0x8B, 0, 0, 0, 0},
8287         {0x8C, 0, 0, 0, 0},
8288         {0x8D, 0, 0, 0, 0},
8289         {0x8E, 0, 0, 0, 0},
8290         {0x8F, 0, 0, 0, 0},
8291         {0x90, 0, 0, 0, 0},
8292         {0x91, 0, 0, 0, 0},
8293         {0x92, 0, 0, 0, 0},
8294         {0xFFFF, 0, 0, 0, 0}
8295 };
8296
8297 radio_regs_t regs_RX_2056[] = {
8298         {0x02, 0, 0, 0, 0},
8299         {0x03, 0, 0, 0, 0},
8300         {0x04, 0, 0, 0, 0},
8301         {0x05, 0, 0, 0, 0},
8302         {0x06, 0, 0, 0, 0},
8303         {0x07, 0, 0, 0, 0},
8304         {0x08, 0, 0, 0, 0},
8305         {0x09, 0, 0, 0, 0},
8306         {0x0A, 0, 0, 0, 0},
8307         {0x0B, 0, 0, 0, 0},
8308         {0x0C, 0, 0, 0, 0},
8309         {0x0D, 0, 0, 0, 0},
8310         {0x0E, 0, 0, 0, 0},
8311         {0x0F, 0, 0, 0, 0},
8312         {0x10, 0, 0, 0, 0},
8313         {0x11, 0, 0, 0, 0},
8314         {0x12, 0, 0, 0, 0},
8315         {0x13, 0, 0, 0, 0},
8316         {0x14, 0, 0, 0, 0},
8317         {0x15, 0, 0, 0, 0},
8318         {0x16, 0, 0, 0, 0},
8319         {0x17, 0, 0, 0, 0},
8320         {0x18, 0, 0, 0, 0},
8321         {0x19, 0, 0, 0, 0},
8322         {0x1A, 0, 0, 0, 0},
8323         {0x1B, 0, 0, 0, 0},
8324         {0x1C, 0, 0, 0, 0},
8325         {0x1D, 0, 0, 0, 0},
8326         {0x1E, 0, 0, 0, 0},
8327         {0x1F, 0, 0, 0, 0},
8328         {0x20, 0x3, 0x3, 0, 0},
8329         {0x21, 0, 0, 0, 0},
8330         {0x22, 0, 0, 0, 0},
8331         {0x23, 0x90, 0x90, 0, 0},
8332         {0x24, 0x55, 0x55, 0, 0},
8333         {0x25, 0x15, 0x15, 0, 0},
8334         {0x26, 0x5, 0x5, 0, 0},
8335         {0x27, 0x15, 0x15, 0, 0},
8336         {0x28, 0x5, 0x5, 0, 0},
8337         {0x29, 0x20, 0x20, 0, 0},
8338         {0x2A, 0x11, 0x11, 0, 0},
8339         {0x2B, 0x90, 0x90, 0, 0},
8340         {0x2C, 0, 0, 0, 0},
8341         {0x2D, 0x88, 0x88, 0, 0},
8342         {0x2E, 0x32, 0x32, 0, 0},
8343         {0x2F, 0x77, 0x77, 0, 0},
8344         {0x30, 0x17, 0x17, 1, 1},
8345         {0x31, 0xff, 0xff, 1, 1},
8346         {0x32, 0x20, 0x20, 0, 0},
8347         {0x33, 0, 0, 0, 0},
8348         {0x34, 0x88, 0x88, 0, 0},
8349         {0x35, 0x32, 0x32, 0, 0},
8350         {0x36, 0x77, 0x77, 0, 0},
8351         {0x37, 0x17, 0x17, 1, 1},
8352         {0x38, 0xf0, 0xf0, 1, 1},
8353         {0x39, 0x20, 0x20, 0, 0},
8354         {0x3A, 0x8, 0x8, 0, 0},
8355         {0x3B, 0x99, 0x99, 0, 0},
8356         {0x3C, 0, 0, 0, 0},
8357         {0x3D, 0x44, 0x44, 1, 1},
8358         {0x3E, 0, 0, 0, 0},
8359         {0x3F, 0x44, 0x44, 0, 0},
8360         {0x40, 0xf, 0xf, 1, 1},
8361         {0x41, 0x6, 0x6, 0, 0},
8362         {0x42, 0x4, 0x4, 0, 0},
8363         {0x43, 0x50, 0x50, 1, 1},
8364         {0x44, 0x8, 0x8, 0, 0},
8365         {0x45, 0x99, 0x99, 0, 0},
8366         {0x46, 0, 0, 0, 0},
8367         {0x47, 0x11, 0x11, 0, 0},
8368         {0x48, 0, 0, 0, 0},
8369         {0x49, 0x44, 0x44, 0, 0},
8370         {0x4A, 0x7, 0x7, 0, 0},
8371         {0x4B, 0x6, 0x6, 0, 0},
8372         {0x4C, 0x4, 0x4, 0, 0},
8373         {0x4D, 0, 0, 0, 0},
8374         {0x4E, 0, 0, 0, 0},
8375         {0x4F, 0x66, 0x66, 0, 0},
8376         {0x50, 0x66, 0x66, 0, 0},
8377         {0x51, 0x57, 0x57, 0, 0},
8378         {0x52, 0x57, 0x57, 0, 0},
8379         {0x53, 0x44, 0x44, 0, 0},
8380         {0x54, 0, 0, 0, 0},
8381         {0x55, 0, 0, 0, 0},
8382         {0x56, 0x8, 0x8, 0, 0},
8383         {0x57, 0x8, 0x8, 0, 0},
8384         {0x58, 0x7, 0x7, 0, 0},
8385         {0x59, 0x22, 0x22, 0, 0},
8386         {0x5A, 0x22, 0x22, 0, 0},
8387         {0x5B, 0x2, 0x2, 0, 0},
8388         {0x5C, 0x23, 0x23, 0, 0},
8389         {0x5D, 0x7, 0x7, 0, 0},
8390         {0x5E, 0x55, 0x55, 0, 0},
8391         {0x5F, 0x23, 0x23, 0, 0},
8392         {0x60, 0x41, 0x41, 0, 0},
8393         {0x61, 0x1, 0x1, 0, 0},
8394         {0x62, 0xa, 0xa, 0, 0},
8395         {0x63, 0, 0, 0, 0},
8396         {0x64, 0, 0, 0, 0},
8397         {0x65, 0, 0, 0, 0},
8398         {0x66, 0, 0, 0, 0},
8399         {0x67, 0, 0, 0, 0},
8400         {0x68, 0, 0, 0, 0},
8401         {0x69, 0, 0, 0, 0},
8402         {0x6A, 0, 0, 0, 0},
8403         {0x6B, 0xc, 0xc, 0, 0},
8404         {0x6C, 0, 0, 0, 0},
8405         {0x6D, 0, 0, 0, 0},
8406         {0x6E, 0, 0, 0, 0},
8407         {0x6F, 0, 0, 0, 0},
8408         {0x70, 0, 0, 0, 0},
8409         {0x71, 0, 0, 0, 0},
8410         {0x72, 0x22, 0x22, 0, 0},
8411         {0x73, 0x22, 0x22, 0, 0},
8412         {0x74, 0x2, 0x2, 0, 0},
8413         {0x75, 0xa, 0xa, 0, 0},
8414         {0x76, 0x1, 0x1, 0, 0},
8415         {0x77, 0x22, 0x22, 0, 0},
8416         {0x78, 0x30, 0x30, 0, 0},
8417         {0x79, 0, 0, 0, 0},
8418         {0x7A, 0, 0, 0, 0},
8419         {0x7B, 0, 0, 0, 0},
8420         {0x7C, 0, 0, 0, 0},
8421         {0x7D, 0, 0, 0, 0},
8422         {0x7E, 0, 0, 0, 0},
8423         {0x7F, 0, 0, 0, 0},
8424         {0x80, 0, 0, 0, 0},
8425         {0x81, 0, 0, 0, 0},
8426         {0x82, 0, 0, 0, 0},
8427         {0x83, 0, 0, 0, 0},
8428         {0x84, 0, 0, 0, 0},
8429         {0x85, 0, 0, 0, 0},
8430         {0x86, 0, 0, 0, 0},
8431         {0x87, 0, 0, 0, 0},
8432         {0x88, 0, 0, 0, 0},
8433         {0x89, 0, 0, 0, 0},
8434         {0x8A, 0, 0, 0, 0},
8435         {0x8B, 0, 0, 0, 0},
8436         {0x8C, 0, 0, 0, 0},
8437         {0x8D, 0, 0, 0, 0},
8438         {0x8E, 0, 0, 0, 0},
8439         {0x8F, 0, 0, 0, 0},
8440         {0x90, 0, 0, 0, 0},
8441         {0x91, 0, 0, 0, 0},
8442         {0x92, 0, 0, 0, 0},
8443         {0x93, 0, 0, 0, 0},
8444         {0x94, 0, 0, 0, 0},
8445         {0xFFFF, 0, 0, 0, 0}
8446 };
8447
8448 radio_regs_t regs_SYN_2056_A1[] = {
8449         {0x02, 0, 0, 0, 0},
8450         {0x03, 0, 0, 0, 0},
8451         {0x04, 0, 0, 0, 0},
8452         {0x05, 0, 0, 0, 0},
8453         {0x06, 0, 0, 0, 0},
8454         {0x07, 0, 0, 0, 0},
8455         {0x08, 0, 0, 0, 0},
8456         {0x09, 0x1, 0x1, 0, 0},
8457         {0x0A, 0, 0, 0, 0},
8458         {0x0B, 0, 0, 0, 0},
8459         {0x0C, 0, 0, 0, 0},
8460         {0x0D, 0, 0, 0, 0},
8461         {0x0E, 0, 0, 0, 0},
8462         {0x0F, 0, 0, 0, 0},
8463         {0x10, 0, 0, 0, 0},
8464         {0x11, 0, 0, 0, 0},
8465         {0x12, 0, 0, 0, 0},
8466         {0x13, 0, 0, 0, 0},
8467         {0x14, 0, 0, 0, 0},
8468         {0x15, 0, 0, 0, 0},
8469         {0x16, 0, 0, 0, 0},
8470         {0x17, 0, 0, 0, 0},
8471         {0x18, 0, 0, 0, 0},
8472         {0x19, 0, 0, 0, 0},
8473         {0x1A, 0, 0, 0, 0},
8474         {0x1B, 0, 0, 0, 0},
8475         {0x1C, 0, 0, 0, 0},
8476         {0x1D, 0, 0, 0, 0},
8477         {0x1E, 0, 0, 0, 0},
8478         {0x1F, 0, 0, 0, 0},
8479         {0x20, 0, 0, 0, 0},
8480         {0x21, 0, 0, 0, 0},
8481         {0x22, 0x60, 0x60, 0, 0},
8482         {0x23, 0x6, 0x6, 0, 0},
8483         {0x24, 0xc, 0xc, 0, 0},
8484         {0x25, 0, 0, 0, 0},
8485         {0x26, 0, 0, 0, 0},
8486         {0x27, 0, 0, 0, 0},
8487         {0x28, 0x1, 0x1, 0, 0},
8488         {0x29, 0, 0, 0, 0},
8489         {0x2A, 0, 0, 0, 0},
8490         {0x2B, 0, 0, 0, 0},
8491         {0x2C, 0, 0, 0, 0},
8492         {0x2D, 0, 0, 0, 0},
8493         {0x2E, 0xd, 0xd, 0, 0},
8494         {0x2F, 0x1f, 0x1f, 0, 0},
8495         {0x30, 0x15, 0x15, 0, 0},
8496         {0x31, 0xf, 0xf, 0, 0},
8497         {0x32, 0, 0, 0, 0},
8498         {0x33, 0, 0, 0, 0},
8499         {0x34, 0, 0, 0, 0},
8500         {0x35, 0, 0, 0, 0},
8501         {0x36, 0, 0, 0, 0},
8502         {0x37, 0, 0, 0, 0},
8503         {0x38, 0, 0, 0, 0},
8504         {0x39, 0, 0, 0, 0},
8505         {0x3A, 0, 0, 0, 0},
8506         {0x3B, 0, 0, 0, 0},
8507         {0x3C, 0x13, 0x13, 0, 0},
8508         {0x3D, 0xf, 0xf, 0, 0},
8509         {0x3E, 0x18, 0x18, 0, 0},
8510         {0x3F, 0, 0, 0, 0},
8511         {0x40, 0, 0, 0, 0},
8512         {0x41, 0x20, 0x20, 0, 0},
8513         {0x42, 0x20, 0x20, 0, 0},
8514         {0x43, 0, 0, 0, 0},
8515         {0x44, 0x77, 0x77, 0, 0},
8516         {0x45, 0x7, 0x7, 0, 0},
8517         {0x46, 0x1, 0x1, 0, 0},
8518         {0x47, 0x4, 0x4, 0, 0},
8519         {0x48, 0xf, 0xf, 0, 0},
8520         {0x49, 0x30, 0x30, 0, 0},
8521         {0x4A, 0x32, 0x32, 0, 0},
8522         {0x4B, 0xd, 0xd, 0, 0},
8523         {0x4C, 0xd, 0xd, 0, 0},
8524         {0x4D, 0x4, 0x4, 0, 0},
8525         {0x4E, 0x6, 0x6, 0, 0},
8526         {0x4F, 0x1, 0x1, 0, 0},
8527         {0x50, 0x1c, 0x1c, 0, 0},
8528         {0x51, 0x2, 0x2, 0, 0},
8529         {0x52, 0x2, 0x2, 0, 0},
8530         {0x53, 0xf7, 0xf7, 1, 1},
8531         {0x54, 0xb4, 0xb4, 0, 0},
8532         {0x55, 0xd2, 0xd2, 0, 0},
8533         {0x56, 0, 0, 0, 0},
8534         {0x57, 0, 0, 0, 0},
8535         {0x58, 0x4, 0x4, 0, 0},
8536         {0x59, 0x96, 0x96, 0, 0},
8537         {0x5A, 0x3e, 0x3e, 0, 0},
8538         {0x5B, 0x3e, 0x3e, 0, 0},
8539         {0x5C, 0x13, 0x13, 0, 0},
8540         {0x5D, 0x2, 0x2, 0, 0},
8541         {0x5E, 0, 0, 0, 0},
8542         {0x5F, 0x7, 0x7, 0, 0},
8543         {0x60, 0x7, 0x7, 1, 1},
8544         {0x61, 0x8, 0x8, 0, 0},
8545         {0x62, 0x3, 0x3, 0, 0},
8546         {0x63, 0, 0, 0, 0},
8547         {0x64, 0, 0, 0, 0},
8548         {0x65, 0, 0, 0, 0},
8549         {0x66, 0, 0, 0, 0},
8550         {0x67, 0, 0, 0, 0},
8551         {0x68, 0x40, 0x40, 0, 0},
8552         {0x69, 0, 0, 0, 0},
8553         {0x6A, 0, 0, 0, 0},
8554         {0x6B, 0, 0, 0, 0},
8555         {0x6C, 0, 0, 0, 0},
8556         {0x6D, 0x1, 0x1, 0, 0},
8557         {0x6E, 0, 0, 0, 0},
8558         {0x6F, 0, 0, 0, 0},
8559         {0x70, 0x60, 0x60, 0, 0},
8560         {0x71, 0x66, 0x66, 0, 0},
8561         {0x72, 0xc, 0xc, 0, 0},
8562         {0x73, 0x66, 0x66, 0, 0},
8563         {0x74, 0x8f, 0x8f, 1, 1},
8564         {0x75, 0, 0, 0, 0},
8565         {0x76, 0xcc, 0xcc, 0, 0},
8566         {0x77, 0x1, 0x1, 0, 0},
8567         {0x78, 0x66, 0x66, 0, 0},
8568         {0x79, 0x66, 0x66, 0, 0},
8569         {0x7A, 0, 0, 0, 0},
8570         {0x7B, 0, 0, 0, 0},
8571         {0x7C, 0, 0, 0, 0},
8572         {0x7D, 0, 0, 0, 0},
8573         {0x7E, 0, 0, 0, 0},
8574         {0x7F, 0, 0, 0, 0},
8575         {0x80, 0, 0, 0, 0},
8576         {0x81, 0, 0, 0, 0},
8577         {0x82, 0, 0, 0, 0},
8578         {0x83, 0, 0, 0, 0},
8579         {0x84, 0, 0, 0, 0},
8580         {0x85, 0xff, 0xff, 0, 0},
8581         {0x86, 0, 0, 0, 0},
8582         {0x87, 0, 0, 0, 0},
8583         {0x88, 0, 0, 0, 0},
8584         {0x89, 0, 0, 0, 0},
8585         {0x8A, 0, 0, 0, 0},
8586         {0x8B, 0, 0, 0, 0},
8587         {0x8C, 0, 0, 0, 0},
8588         {0x8D, 0, 0, 0, 0},
8589         {0x8E, 0, 0, 0, 0},
8590         {0x8F, 0, 0, 0, 0},
8591         {0x90, 0, 0, 0, 0},
8592         {0x91, 0, 0, 0, 0},
8593         {0x92, 0, 0, 0, 0},
8594         {0x93, 0, 0, 0, 0},
8595         {0x94, 0, 0, 0, 0},
8596         {0x95, 0, 0, 0, 0},
8597         {0x96, 0, 0, 0, 0},
8598         {0x97, 0, 0, 0, 0},
8599         {0x98, 0, 0, 0, 0},
8600         {0x99, 0, 0, 0, 0},
8601         {0x9A, 0, 0, 0, 0},
8602         {0x9B, 0, 0, 0, 0},
8603         {0x9C, 0, 0, 0, 0},
8604         {0x9D, 0, 0, 0, 0},
8605         {0x9E, 0, 0, 0, 0},
8606         {0x9F, 0x6, 0x6, 0, 0},
8607         {0xA0, 0x66, 0x66, 0, 0},
8608         {0xA1, 0x66, 0x66, 0, 0},
8609         {0xA2, 0x66, 0x66, 0, 0},
8610         {0xA3, 0x66, 0x66, 0, 0},
8611         {0xA4, 0x66, 0x66, 0, 0},
8612         {0xA5, 0x66, 0x66, 0, 0},
8613         {0xA6, 0x66, 0x66, 0, 0},
8614         {0xA7, 0x66, 0x66, 0, 0},
8615         {0xA8, 0x66, 0x66, 0, 0},
8616         {0xA9, 0x66, 0x66, 0, 0},
8617         {0xAA, 0x66, 0x66, 0, 0},
8618         {0xAB, 0x66, 0x66, 0, 0},
8619         {0xAC, 0x66, 0x66, 0, 0},
8620         {0xAD, 0x66, 0x66, 0, 0},
8621         {0xAE, 0x66, 0x66, 0, 0},
8622         {0xAF, 0x66, 0x66, 0, 0},
8623         {0xB0, 0x66, 0x66, 0, 0},
8624         {0xB1, 0x66, 0x66, 0, 0},
8625         {0xB2, 0x66, 0x66, 0, 0},
8626         {0xB3, 0xa, 0xa, 0, 0},
8627         {0xB4, 0, 0, 0, 0},
8628         {0xB5, 0, 0, 0, 0},
8629         {0xB6, 0, 0, 0, 0},
8630         {0xFFFF, 0, 0, 0, 0}
8631 };
8632
8633 radio_regs_t regs_TX_2056_A1[] = {
8634         {0x02, 0, 0, 0, 0},
8635         {0x03, 0, 0, 0, 0},
8636         {0x04, 0, 0, 0, 0},
8637         {0x05, 0, 0, 0, 0},
8638         {0x06, 0, 0, 0, 0},
8639         {0x07, 0, 0, 0, 0},
8640         {0x08, 0, 0, 0, 0},
8641         {0x09, 0, 0, 0, 0},
8642         {0x0A, 0, 0, 0, 0},
8643         {0x0B, 0, 0, 0, 0},
8644         {0x0C, 0, 0, 0, 0},
8645         {0x0D, 0, 0, 0, 0},
8646         {0x0E, 0, 0, 0, 0},
8647         {0x0F, 0, 0, 0, 0},
8648         {0x10, 0, 0, 0, 0},
8649         {0x11, 0, 0, 0, 0},
8650         {0x12, 0, 0, 0, 0},
8651         {0x13, 0, 0, 0, 0},
8652         {0x14, 0, 0, 0, 0},
8653         {0x15, 0, 0, 0, 0},
8654         {0x16, 0, 0, 0, 0},
8655         {0x17, 0, 0, 0, 0},
8656         {0x18, 0, 0, 0, 0},
8657         {0x19, 0, 0, 0, 0},
8658         {0x1A, 0, 0, 0, 0},
8659         {0x1B, 0, 0, 0, 0},
8660         {0x1C, 0, 0, 0, 0},
8661         {0x1D, 0, 0, 0, 0},
8662         {0x1E, 0, 0, 0, 0},
8663         {0x1F, 0, 0, 0, 0},
8664         {0x20, 0, 0, 0, 0},
8665         {0x21, 0x88, 0x88, 0, 0},
8666         {0x22, 0x88, 0x88, 0, 0},
8667         {0x23, 0x88, 0x88, 0, 0},
8668         {0x24, 0x88, 0x88, 0, 0},
8669         {0x25, 0xc, 0xc, 0, 0},
8670         {0x26, 0, 0, 0, 0},
8671         {0x27, 0x3, 0x3, 0, 0},
8672         {0x28, 0, 0, 0, 0},
8673         {0x29, 0x3, 0x3, 0, 0},
8674         {0x2A, 0x37, 0x37, 0, 0},
8675         {0x2B, 0x3, 0x3, 0, 0},
8676         {0x2C, 0, 0, 0, 0},
8677         {0x2D, 0, 0, 0, 0},
8678         {0x2E, 0x1, 0x1, 0, 0},
8679         {0x2F, 0x1, 0x1, 0, 0},
8680         {0x30, 0, 0, 0, 0},
8681         {0x31, 0, 0, 0, 0},
8682         {0x32, 0, 0, 0, 0},
8683         {0x33, 0x11, 0x11, 0, 0},
8684         {0x34, 0x11, 0x11, 0, 0},
8685         {0x35, 0, 0, 0, 0},
8686         {0x36, 0, 0, 0, 0},
8687         {0x37, 0x3, 0x3, 0, 0},
8688         {0x38, 0xf, 0xf, 0, 0},
8689         {0x39, 0, 0, 0, 0},
8690         {0x3A, 0x2d, 0x2d, 0, 0},
8691         {0x3B, 0, 0, 0, 0},
8692         {0x3C, 0x6e, 0x6e, 0, 0},
8693         {0x3D, 0xf0, 0xf0, 1, 1},
8694         {0x3E, 0, 0, 0, 0},
8695         {0x3F, 0, 0, 0, 0},
8696         {0x40, 0, 0, 0, 0},
8697         {0x41, 0x3, 0x3, 0, 0},
8698         {0x42, 0x3, 0x3, 0, 0},
8699         {0x43, 0, 0, 0, 0},
8700         {0x44, 0x1e, 0x1e, 0, 0},
8701         {0x45, 0, 0, 0, 0},
8702         {0x46, 0x6e, 0x6e, 0, 0},
8703         {0x47, 0xf0, 0xf0, 1, 1},
8704         {0x48, 0, 0, 0, 0},
8705         {0x49, 0x2, 0x2, 0, 0},
8706         {0x4A, 0xff, 0xff, 1, 1},
8707         {0x4B, 0xc, 0xc, 0, 0},
8708         {0x4C, 0, 0, 0, 0},
8709         {0x4D, 0x38, 0x38, 0, 0},
8710         {0x4E, 0x70, 0x70, 1, 1},
8711         {0x4F, 0x2, 0x2, 0, 0},
8712         {0x50, 0x88, 0x88, 0, 0},
8713         {0x51, 0xc, 0xc, 0, 0},
8714         {0x52, 0, 0, 0, 0},
8715         {0x53, 0x8, 0x8, 0, 0},
8716         {0x54, 0x70, 0x70, 1, 1},
8717         {0x55, 0x2, 0x2, 0, 0},
8718         {0x56, 0xff, 0xff, 1, 1},
8719         {0x57, 0, 0, 0, 0},
8720         {0x58, 0x83, 0x83, 0, 0},
8721         {0x59, 0x77, 0x77, 1, 1},
8722         {0x5A, 0, 0, 0, 0},
8723         {0x5B, 0x2, 0x2, 0, 0},
8724         {0x5C, 0x88, 0x88, 0, 0},
8725         {0x5D, 0, 0, 0, 0},
8726         {0x5E, 0x8, 0x8, 0, 0},
8727         {0x5F, 0x77, 0x77, 1, 1},
8728         {0x60, 0x1, 0x1, 0, 0},
8729         {0x61, 0, 0, 0, 0},
8730         {0x62, 0x7, 0x7, 0, 0},
8731         {0x63, 0, 0, 0, 0},
8732         {0x64, 0x7, 0x7, 0, 0},
8733         {0x65, 0, 0, 0, 0},
8734         {0x66, 0, 0, 0, 0},
8735         {0x67, 0x72, 0x72, 1, 1},
8736         {0x68, 0, 0, 0, 0},
8737         {0x69, 0xa, 0xa, 0, 0},
8738         {0x6A, 0, 0, 0, 0},
8739         {0x6B, 0, 0, 0, 0},
8740         {0x6C, 0, 0, 0, 0},
8741         {0x6D, 0, 0, 0, 0},
8742         {0x6E, 0, 0, 0, 0},
8743         {0x6F, 0, 0, 0, 0},
8744         {0x70, 0, 0, 0, 0},
8745         {0x71, 0x2, 0x2, 0, 0},
8746         {0x72, 0, 0, 0, 0},
8747         {0x73, 0, 0, 0, 0},
8748         {0x74, 0xe, 0xe, 0, 0},
8749         {0x75, 0xe, 0xe, 0, 0},
8750         {0x76, 0xe, 0xe, 0, 0},
8751         {0x77, 0x13, 0x13, 0, 0},
8752         {0x78, 0x13, 0x13, 0, 0},
8753         {0x79, 0x1b, 0x1b, 0, 0},
8754         {0x7A, 0x1b, 0x1b, 0, 0},
8755         {0x7B, 0x55, 0x55, 0, 0},
8756         {0x7C, 0x5b, 0x5b, 0, 0},
8757         {0x7D, 0, 0, 0, 0},
8758         {0x7E, 0, 0, 0, 0},
8759         {0x7F, 0, 0, 0, 0},
8760         {0x80, 0, 0, 0, 0},
8761         {0x81, 0, 0, 0, 0},
8762         {0x82, 0, 0, 0, 0},
8763         {0x83, 0, 0, 0, 0},
8764         {0x84, 0, 0, 0, 0},
8765         {0x85, 0, 0, 0, 0},
8766         {0x86, 0, 0, 0, 0},
8767         {0x87, 0, 0, 0, 0},
8768         {0x88, 0, 0, 0, 0},
8769         {0x89, 0, 0, 0, 0},
8770         {0x8A, 0, 0, 0, 0},
8771         {0x8B, 0, 0, 0, 0},
8772         {0x8C, 0, 0, 0, 0},
8773         {0x8D, 0, 0, 0, 0},
8774         {0x8E, 0, 0, 0, 0},
8775         {0x8F, 0, 0, 0, 0},
8776         {0x90, 0, 0, 0, 0},
8777         {0x91, 0, 0, 0, 0},
8778         {0x92, 0, 0, 0, 0},
8779         {0xFFFF, 0, 0, 0, 0}
8780 };
8781
8782 radio_regs_t regs_RX_2056_A1[] = {
8783         {0x02, 0, 0, 0, 0},
8784         {0x03, 0, 0, 0, 0},
8785         {0x04, 0, 0, 0, 0},
8786         {0x05, 0, 0, 0, 0},
8787         {0x06, 0, 0, 0, 0},
8788         {0x07, 0, 0, 0, 0},
8789         {0x08, 0, 0, 0, 0},
8790         {0x09, 0, 0, 0, 0},
8791         {0x0A, 0, 0, 0, 0},
8792         {0x0B, 0, 0, 0, 0},
8793         {0x0C, 0, 0, 0, 0},
8794         {0x0D, 0, 0, 0, 0},
8795         {0x0E, 0, 0, 0, 0},
8796         {0x0F, 0, 0, 0, 0},
8797         {0x10, 0, 0, 0, 0},
8798         {0x11, 0, 0, 0, 0},
8799         {0x12, 0, 0, 0, 0},
8800         {0x13, 0, 0, 0, 0},
8801         {0x14, 0, 0, 0, 0},
8802         {0x15, 0, 0, 0, 0},
8803         {0x16, 0, 0, 0, 0},
8804         {0x17, 0, 0, 0, 0},
8805         {0x18, 0, 0, 0, 0},
8806         {0x19, 0, 0, 0, 0},
8807         {0x1A, 0, 0, 0, 0},
8808         {0x1B, 0, 0, 0, 0},
8809         {0x1C, 0, 0, 0, 0},
8810         {0x1D, 0, 0, 0, 0},
8811         {0x1E, 0, 0, 0, 0},
8812         {0x1F, 0, 0, 0, 0},
8813         {0x20, 0x3, 0x3, 0, 0},
8814         {0x21, 0, 0, 0, 0},
8815         {0x22, 0, 0, 0, 0},
8816         {0x23, 0x90, 0x90, 0, 0},
8817         {0x24, 0x55, 0x55, 0, 0},
8818         {0x25, 0x15, 0x15, 0, 0},
8819         {0x26, 0x5, 0x5, 0, 0},
8820         {0x27, 0x15, 0x15, 0, 0},
8821         {0x28, 0x5, 0x5, 0, 0},
8822         {0x29, 0x20, 0x20, 0, 0},
8823         {0x2A, 0x11, 0x11, 0, 0},
8824         {0x2B, 0x90, 0x90, 0, 0},
8825         {0x2C, 0, 0, 0, 0},
8826         {0x2D, 0x88, 0x88, 0, 0},
8827         {0x2E, 0x32, 0x32, 0, 0},
8828         {0x2F, 0x77, 0x77, 0, 0},
8829         {0x30, 0x17, 0x17, 1, 1},
8830         {0x31, 0xff, 0xff, 1, 1},
8831         {0x32, 0x20, 0x20, 0, 0},
8832         {0x33, 0, 0, 0, 0},
8833         {0x34, 0x88, 0x88, 0, 0},
8834         {0x35, 0x32, 0x32, 0, 0},
8835         {0x36, 0x77, 0x77, 0, 0},
8836         {0x37, 0x17, 0x17, 1, 1},
8837         {0x38, 0xf0, 0xf0, 1, 1},
8838         {0x39, 0x20, 0x20, 0, 0},
8839         {0x3A, 0x8, 0x8, 0, 0},
8840         {0x3B, 0x55, 0x55, 1, 1},
8841         {0x3C, 0, 0, 0, 0},
8842         {0x3D, 0x44, 0x44, 1, 1},
8843         {0x3E, 0, 0, 0, 0},
8844         {0x3F, 0x44, 0x44, 0, 0},
8845         {0x40, 0xf, 0xf, 1, 1},
8846         {0x41, 0x6, 0x6, 0, 0},
8847         {0x42, 0x4, 0x4, 0, 0},
8848         {0x43, 0x50, 0x50, 1, 1},
8849         {0x44, 0x8, 0x8, 0, 0},
8850         {0x45, 0x55, 0x55, 1, 1},
8851         {0x46, 0, 0, 0, 0},
8852         {0x47, 0x11, 0x11, 0, 0},
8853         {0x48, 0, 0, 0, 0},
8854         {0x49, 0x44, 0x44, 0, 0},
8855         {0x4A, 0x7, 0x7, 0, 0},
8856         {0x4B, 0x6, 0x6, 0, 0},
8857         {0x4C, 0x4, 0x4, 0, 0},
8858         {0x4D, 0, 0, 0, 0},
8859         {0x4E, 0, 0, 0, 0},
8860         {0x4F, 0x26, 0x26, 1, 1},
8861         {0x50, 0x26, 0x26, 1, 1},
8862         {0x51, 0xf, 0xf, 1, 1},
8863         {0x52, 0xf, 0xf, 1, 1},
8864         {0x53, 0x44, 0x44, 0, 0},
8865         {0x54, 0, 0, 0, 0},
8866         {0x55, 0, 0, 0, 0},
8867         {0x56, 0x8, 0x8, 0, 0},
8868         {0x57, 0x8, 0x8, 0, 0},
8869         {0x58, 0x7, 0x7, 0, 0},
8870         {0x59, 0x22, 0x22, 0, 0},
8871         {0x5A, 0x22, 0x22, 0, 0},
8872         {0x5B, 0x2, 0x2, 0, 0},
8873         {0x5C, 0x2f, 0x2f, 1, 1},
8874         {0x5D, 0x7, 0x7, 0, 0},
8875         {0x5E, 0x55, 0x55, 0, 0},
8876         {0x5F, 0x23, 0x23, 0, 0},
8877         {0x60, 0x41, 0x41, 0, 0},
8878         {0x61, 0x1, 0x1, 0, 0},
8879         {0x62, 0xa, 0xa, 0, 0},
8880         {0x63, 0, 0, 0, 0},
8881         {0x64, 0, 0, 0, 0},
8882         {0x65, 0, 0, 0, 0},
8883         {0x66, 0, 0, 0, 0},
8884         {0x67, 0, 0, 0, 0},
8885         {0x68, 0, 0, 0, 0},
8886         {0x69, 0, 0, 0, 0},
8887         {0x6A, 0, 0, 0, 0},
8888         {0x6B, 0xc, 0xc, 0, 0},
8889         {0x6C, 0, 0, 0, 0},
8890         {0x6D, 0, 0, 0, 0},
8891         {0x6E, 0, 0, 0, 0},
8892         {0x6F, 0, 0, 0, 0},
8893         {0x70, 0, 0, 0, 0},
8894         {0x71, 0, 0, 0, 0},
8895         {0x72, 0x22, 0x22, 0, 0},
8896         {0x73, 0x22, 0x22, 0, 0},
8897         {0x74, 0, 0, 1, 1},
8898         {0x75, 0xa, 0xa, 0, 0},
8899         {0x76, 0x1, 0x1, 0, 0},
8900         {0x77, 0x22, 0x22, 0, 0},
8901         {0x78, 0x30, 0x30, 0, 0},
8902         {0x79, 0, 0, 0, 0},
8903         {0x7A, 0, 0, 0, 0},
8904         {0x7B, 0, 0, 0, 0},
8905         {0x7C, 0, 0, 0, 0},
8906         {0x7D, 0, 0, 0, 0},
8907         {0x7E, 0, 0, 0, 0},
8908         {0x7F, 0, 0, 0, 0},
8909         {0x80, 0, 0, 0, 0},
8910         {0x81, 0, 0, 0, 0},
8911         {0x82, 0, 0, 0, 0},
8912         {0x83, 0, 0, 0, 0},
8913         {0x84, 0, 0, 0, 0},
8914         {0x85, 0, 0, 0, 0},
8915         {0x86, 0, 0, 0, 0},
8916         {0x87, 0, 0, 0, 0},
8917         {0x88, 0, 0, 0, 0},
8918         {0x89, 0, 0, 0, 0},
8919         {0x8A, 0, 0, 0, 0},
8920         {0x8B, 0, 0, 0, 0},
8921         {0x8C, 0, 0, 0, 0},
8922         {0x8D, 0, 0, 0, 0},
8923         {0x8E, 0, 0, 0, 0},
8924         {0x8F, 0, 0, 0, 0},
8925         {0x90, 0, 0, 0, 0},
8926         {0x91, 0, 0, 0, 0},
8927         {0x92, 0, 0, 0, 0},
8928         {0x93, 0, 0, 0, 0},
8929         {0x94, 0, 0, 0, 0},
8930         {0xFFFF, 0, 0, 0, 0}
8931 };
8932
8933 radio_regs_t regs_SYN_2056_rev5[] = {
8934         {0x02, 0, 0, 0, 0},
8935         {0x03, 0, 0, 0, 0},
8936         {0x04, 0, 0, 0, 0},
8937         {0x05, 0, 0, 0, 0},
8938         {0x06, 0, 0, 0, 0},
8939         {0x07, 0, 0, 0, 0},
8940         {0x08, 0, 0, 0, 0},
8941         {0x09, 0x1, 0x1, 0, 0},
8942         {0x0A, 0, 0, 0, 0},
8943         {0x0B, 0, 0, 0, 0},
8944         {0x0C, 0, 0, 0, 0},
8945         {0x0D, 0, 0, 0, 0},
8946         {0x0E, 0, 0, 0, 0},
8947         {0x0F, 0, 0, 0, 0},
8948         {0x10, 0, 0, 0, 0},
8949         {0x11, 0, 0, 0, 0},
8950         {0x12, 0, 0, 0, 0},
8951         {0x13, 0, 0, 0, 0},
8952         {0x14, 0, 0, 0, 0},
8953         {0x15, 0, 0, 0, 0},
8954         {0x16, 0, 0, 0, 0},
8955         {0x17, 0, 0, 0, 0},
8956         {0x18, 0, 0, 0, 0},
8957         {0x19, 0, 0, 0, 0},
8958         {0x1A, 0, 0, 0, 0},
8959         {0x1B, 0, 0, 0, 0},
8960         {0x1C, 0, 0, 0, 0},
8961         {0x1D, 0, 0, 0, 0},
8962         {0x1E, 0, 0, 0, 0},
8963         {0x1F, 0, 0, 0, 0},
8964         {0x20, 0, 0, 0, 0},
8965         {0x21, 0, 0, 0, 0},
8966         {0x22, 0x60, 0x60, 0, 0},
8967         {0x23, 0x6, 0x6, 0, 0},
8968         {0x24, 0xc, 0xc, 0, 0},
8969         {0x25, 0, 0, 0, 0},
8970         {0x26, 0, 0, 0, 0},
8971         {0x27, 0, 0, 0, 0},
8972         {0x28, 0x1, 0x1, 0, 0},
8973         {0x29, 0, 0, 0, 0},
8974         {0x2A, 0, 0, 0, 0},
8975         {0x2B, 0, 0, 0, 0},
8976         {0x2C, 0, 0, 0, 0},
8977         {0x2D, 0, 0, 0, 0},
8978         {0x2E, 0, 0, 0, 0},
8979         {0x2F, 0x1f, 0x1f, 0, 0},
8980         {0x30, 0x15, 0x15, 0, 0},
8981         {0x31, 0xf, 0xf, 0, 0},
8982         {0x32, 0, 0, 0, 0},
8983         {0x33, 0, 0, 0, 0},
8984         {0x34, 0, 0, 0, 0},
8985         {0x35, 0, 0, 0, 0},
8986         {0x36, 0, 0, 0, 0},
8987         {0x37, 0, 0, 0, 0},
8988         {0x38, 0, 0, 0, 0},
8989         {0x39, 0, 0, 0, 0},
8990         {0x3A, 0, 0, 0, 0},
8991         {0x3B, 0, 0, 0, 0},
8992         {0x3C, 0x13, 0x13, 0, 0},
8993         {0x3D, 0xf, 0xf, 0, 0},
8994         {0x3E, 0x18, 0x18, 0, 0},
8995         {0x3F, 0, 0, 0, 0},
8996         {0x40, 0, 0, 0, 0},
8997         {0x41, 0x20, 0x20, 0, 0},
8998         {0x42, 0x20, 0x20, 0, 0},
8999         {0x43, 0, 0, 0, 0},
9000         {0x44, 0x77, 0x77, 0, 0},
9001         {0x45, 0x7, 0x7, 0, 0},
9002         {0x46, 0x1, 0x1, 0, 0},
9003         {0x47, 0x4, 0x4, 0, 0},
9004         {0x48, 0xf, 0xf, 0, 0},
9005         {0x49, 0x30, 0x30, 0, 0},
9006         {0x4A, 0x32, 0x32, 0, 0},
9007         {0x4B, 0xd, 0xd, 0, 0},
9008         {0x4C, 0xd, 0xd, 0, 0},
9009         {0x4D, 0x4, 0x4, 0, 0},
9010         {0x4E, 0x6, 0x6, 0, 0},
9011         {0x4F, 0x1, 0x1, 0, 0},
9012         {0x50, 0x1c, 0x1c, 0, 0},
9013         {0x51, 0x2, 0x2, 0, 0},
9014         {0x52, 0x2, 0x2, 0, 0},
9015         {0x53, 0xf7, 0xf7, 1, 1},
9016         {0x54, 0xb4, 0xb4, 0, 0},
9017         {0x55, 0xd2, 0xd2, 0, 0},
9018         {0x56, 0, 0, 0, 0},
9019         {0x57, 0, 0, 0, 0},
9020         {0x58, 0x4, 0x4, 0, 0},
9021         {0x59, 0x96, 0x96, 0, 0},
9022         {0x5A, 0x3e, 0x3e, 0, 0},
9023         {0x5B, 0x3e, 0x3e, 0, 0},
9024         {0x5C, 0x13, 0x13, 0, 0},
9025         {0x5D, 0x2, 0x2, 0, 0},
9026         {0x5E, 0, 0, 0, 0},
9027         {0x5F, 0x7, 0x7, 0, 0},
9028         {0x60, 0x7, 0x7, 1, 1},
9029         {0x61, 0x8, 0x8, 0, 0},
9030         {0x62, 0x3, 0x3, 0, 0},
9031         {0x63, 0, 0, 0, 0},
9032         {0x64, 0, 0, 0, 0},
9033         {0x65, 0, 0, 0, 0},
9034         {0x66, 0, 0, 0, 0},
9035         {0x67, 0, 0, 0, 0},
9036         {0x68, 0x40, 0x40, 0, 0},
9037         {0x69, 0, 0, 0, 0},
9038         {0x6A, 0, 0, 0, 0},
9039         {0x6B, 0, 0, 0, 0},
9040         {0x6C, 0, 0, 0, 0},
9041         {0x6D, 0x1, 0x1, 0, 0},
9042         {0x6E, 0, 0, 0, 0},
9043         {0x6F, 0, 0, 0, 0},
9044         {0x70, 0x60, 0x60, 0, 0},
9045         {0x71, 0x66, 0x66, 0, 0},
9046         {0x72, 0xc, 0xc, 0, 0},
9047         {0x73, 0x66, 0x66, 0, 0},
9048         {0x74, 0x8f, 0x8f, 1, 1},
9049         {0x75, 0, 0, 0, 0},
9050         {0x76, 0xcc, 0xcc, 0, 0},
9051         {0x77, 0x1, 0x1, 0, 0},
9052         {0x78, 0x66, 0x66, 0, 0},
9053         {0x79, 0x66, 0x66, 0, 0},
9054         {0x7A, 0, 0, 0, 0},
9055         {0x7B, 0, 0, 0, 0},
9056         {0x7C, 0, 0, 0, 0},
9057         {0x7D, 0, 0, 0, 0},
9058         {0x7E, 0, 0, 0, 0},
9059         {0x7F, 0, 0, 0, 0},
9060         {0x80, 0, 0, 0, 0},
9061         {0x81, 0, 0, 0, 0},
9062         {0x82, 0, 0, 0, 0},
9063         {0x83, 0, 0, 0, 0},
9064         {0x84, 0, 0, 0, 0},
9065         {0x85, 0xff, 0xff, 0, 0},
9066         {0x86, 0, 0, 0, 0},
9067         {0x87, 0, 0, 0, 0},
9068         {0x88, 0, 0, 0, 0},
9069         {0x89, 0, 0, 0, 0},
9070         {0x8A, 0, 0, 0, 0},
9071         {0x8B, 0, 0, 0, 0},
9072         {0x8C, 0, 0, 0, 0},
9073         {0x8D, 0, 0, 0, 0},
9074         {0x8E, 0, 0, 0, 0},
9075         {0x8F, 0, 0, 0, 0},
9076         {0x90, 0, 0, 0, 0},
9077         {0x91, 0, 0, 0, 0},
9078         {0x92, 0, 0, 0, 0},
9079         {0x93, 0, 0, 0, 0},
9080         {0x94, 0, 0, 0, 0},
9081         {0x95, 0, 0, 0, 0},
9082         {0x96, 0, 0, 0, 0},
9083         {0x97, 0, 0, 0, 0},
9084         {0x98, 0, 0, 0, 0},
9085         {0x99, 0, 0, 0, 0},
9086         {0x9A, 0, 0, 0, 0},
9087         {0x9B, 0, 0, 0, 0},
9088         {0x9C, 0, 0, 0, 0},
9089         {0x9D, 0, 0, 0, 0},
9090         {0x9E, 0, 0, 0, 0},
9091         {0x9F, 0x6, 0x6, 0, 0},
9092         {0xA0, 0x66, 0x66, 0, 0},
9093         {0xA1, 0x66, 0x66, 0, 0},
9094         {0xA2, 0x66, 0x66, 0, 0},
9095         {0xA3, 0x66, 0x66, 0, 0},
9096         {0xA4, 0x66, 0x66, 0, 0},
9097         {0xA5, 0x66, 0x66, 0, 0},
9098         {0xA6, 0x66, 0x66, 0, 0},
9099         {0xA7, 0x66, 0x66, 0, 0},
9100         {0xA8, 0x66, 0x66, 0, 0},
9101         {0xA9, 0x66, 0x66, 0, 0},
9102         {0xAA, 0x66, 0x66, 0, 0},
9103         {0xAB, 0x66, 0x66, 0, 0},
9104         {0xAC, 0x66, 0x66, 0, 0},
9105         {0xAD, 0x66, 0x66, 0, 0},
9106         {0xAE, 0x66, 0x66, 0, 0},
9107         {0xAF, 0x66, 0x66, 0, 0},
9108         {0xB0, 0x66, 0x66, 0, 0},
9109         {0xB1, 0x66, 0x66, 0, 0},
9110         {0xB2, 0x66, 0x66, 0, 0},
9111         {0xB3, 0xa, 0xa, 0, 0},
9112         {0xB4, 0, 0, 0, 0},
9113         {0xB5, 0, 0, 0, 0},
9114         {0xB6, 0, 0, 0, 0},
9115         {0xFFFF, 0, 0, 0, 0}
9116 };
9117
9118 radio_regs_t regs_TX_2056_rev5[] = {
9119         {0x02, 0, 0, 0, 0},
9120         {0x03, 0, 0, 0, 0},
9121         {0x04, 0, 0, 0, 0},
9122         {0x05, 0, 0, 0, 0},
9123         {0x06, 0, 0, 0, 0},
9124         {0x07, 0, 0, 0, 0},
9125         {0x08, 0, 0, 0, 0},
9126         {0x09, 0, 0, 0, 0},
9127         {0x0A, 0, 0, 0, 0},
9128         {0x0B, 0, 0, 0, 0},
9129         {0x0C, 0, 0, 0, 0},
9130         {0x0D, 0, 0, 0, 0},
9131         {0x0E, 0, 0, 0, 0},
9132         {0x0F, 0, 0, 0, 0},
9133         {0x10, 0, 0, 0, 0},
9134         {0x11, 0, 0, 0, 0},
9135         {0x12, 0, 0, 0, 0},
9136         {0x13, 0, 0, 0, 0},
9137         {0x14, 0, 0, 0, 0},
9138         {0x15, 0, 0, 0, 0},
9139         {0x16, 0, 0, 0, 0},
9140         {0x17, 0, 0, 0, 0},
9141         {0x18, 0, 0, 0, 0},
9142         {0x19, 0, 0, 0, 0},
9143         {0x1A, 0, 0, 0, 0},
9144         {0x1B, 0, 0, 0, 0},
9145         {0x1C, 0, 0, 0, 0},
9146         {0x1D, 0, 0, 0, 0},
9147         {0x1E, 0, 0, 0, 0},
9148         {0x1F, 0, 0, 0, 0},
9149         {0x20, 0, 0, 0, 0},
9150         {0x21, 0x88, 0x88, 0, 0},
9151         {0x22, 0x88, 0x88, 0, 0},
9152         {0x23, 0x88, 0x88, 0, 0},
9153         {0x24, 0x88, 0x88, 0, 0},
9154         {0x25, 0xc, 0xc, 0, 0},
9155         {0x26, 0, 0, 0, 0},
9156         {0x27, 0x3, 0x3, 0, 0},
9157         {0x28, 0, 0, 0, 0},
9158         {0x29, 0x3, 0x3, 0, 0},
9159         {0x2A, 0x37, 0x37, 0, 0},
9160         {0x2B, 0x3, 0x3, 0, 0},
9161         {0x2C, 0, 0, 0, 0},
9162         {0x2D, 0, 0, 0, 0},
9163         {0x2E, 0x1, 0x1, 0, 0},
9164         {0x2F, 0x1, 0x1, 0, 0},
9165         {0x30, 0, 0, 0, 0},
9166         {0x31, 0, 0, 0, 0},
9167         {0x32, 0, 0, 0, 0},
9168         {0x33, 0x11, 0x11, 0, 0},
9169         {0x34, 0x11, 0x11, 0, 0},
9170         {0x35, 0, 0, 0, 0},
9171         {0x36, 0, 0, 0, 0},
9172         {0x37, 0x3, 0x3, 0, 0},
9173         {0x38, 0xf, 0xf, 0, 0},
9174         {0x39, 0, 0, 0, 0},
9175         {0x3A, 0x2d, 0x2d, 0, 0},
9176         {0x3B, 0, 0, 0, 0},
9177         {0x3C, 0x6e, 0x6e, 0, 0},
9178         {0x3D, 0xf0, 0xf0, 1, 1},
9179         {0x3E, 0, 0, 0, 0},
9180         {0x3F, 0, 0, 0, 0},
9181         {0x40, 0, 0, 0, 0},
9182         {0x41, 0x3, 0x3, 0, 0},
9183         {0x42, 0x3, 0x3, 0, 0},
9184         {0x43, 0, 0, 0, 0},
9185         {0x44, 0x1e, 0x1e, 0, 0},
9186         {0x45, 0, 0, 0, 0},
9187         {0x46, 0x6e, 0x6e, 0, 0},
9188         {0x47, 0xf0, 0xf0, 1, 1},
9189         {0x48, 0, 0, 0, 0},
9190         {0x49, 0x2, 0x2, 0, 0},
9191         {0x4A, 0xff, 0xff, 1, 1},
9192         {0x4B, 0xc, 0xc, 0, 0},
9193         {0x4C, 0, 0, 0, 0},
9194         {0x4D, 0x38, 0x38, 0, 0},
9195         {0x4E, 0x70, 0x70, 1, 1},
9196         {0x4F, 0x2, 0x2, 0, 0},
9197         {0x50, 0x88, 0x88, 0, 0},
9198         {0x51, 0xc, 0xc, 0, 0},
9199         {0x52, 0, 0, 0, 0},
9200         {0x53, 0x8, 0x8, 0, 0},
9201         {0x54, 0x70, 0x70, 1, 1},
9202         {0x55, 0x2, 0x2, 0, 0},
9203         {0x56, 0xff, 0xff, 1, 1},
9204         {0x57, 0, 0, 0, 0},
9205         {0x58, 0x83, 0x83, 0, 0},
9206         {0x59, 0x77, 0x77, 1, 1},
9207         {0x5A, 0, 0, 0, 0},
9208         {0x5B, 0x2, 0x2, 0, 0},
9209         {0x5C, 0x88, 0x88, 0, 0},
9210         {0x5D, 0, 0, 0, 0},
9211         {0x5E, 0x8, 0x8, 0, 0},
9212         {0x5F, 0x77, 0x77, 1, 1},
9213         {0x60, 0x1, 0x1, 0, 0},
9214         {0x61, 0, 0, 0, 0},
9215         {0x62, 0x7, 0x7, 0, 0},
9216         {0x63, 0, 0, 0, 0},
9217         {0x64, 0x7, 0x7, 0, 0},
9218         {0x65, 0, 0, 0, 0},
9219         {0x66, 0, 0, 0, 0},
9220         {0x67, 0, 0, 1, 1},
9221         {0x68, 0, 0, 0, 0},
9222         {0x69, 0xa, 0xa, 0, 0},
9223         {0x6A, 0, 0, 0, 0},
9224         {0x6B, 0, 0, 0, 0},
9225         {0x6C, 0, 0, 0, 0},
9226         {0x6D, 0, 0, 0, 0},
9227         {0x6E, 0, 0, 0, 0},
9228         {0x6F, 0, 0, 0, 0},
9229         {0x70, 0, 0, 0, 0},
9230         {0x71, 0x2, 0x2, 0, 0},
9231         {0x72, 0, 0, 0, 0},
9232         {0x73, 0, 0, 0, 0},
9233         {0x74, 0xe, 0xe, 0, 0},
9234         {0x75, 0xe, 0xe, 0, 0},
9235         {0x76, 0xe, 0xe, 0, 0},
9236         {0x77, 0x13, 0x13, 0, 0},
9237         {0x78, 0x13, 0x13, 0, 0},
9238         {0x79, 0x1b, 0x1b, 0, 0},
9239         {0x7A, 0x1b, 0x1b, 0, 0},
9240         {0x7B, 0x55, 0x55, 0, 0},
9241         {0x7C, 0x5b, 0x5b, 0, 0},
9242         {0x7D, 0, 0, 0, 0},
9243         {0x7E, 0, 0, 0, 0},
9244         {0x7F, 0, 0, 0, 0},
9245         {0x80, 0, 0, 0, 0},
9246         {0x81, 0, 0, 0, 0},
9247         {0x82, 0, 0, 0, 0},
9248         {0x83, 0, 0, 0, 0},
9249         {0x84, 0, 0, 0, 0},
9250         {0x85, 0, 0, 0, 0},
9251         {0x86, 0, 0, 0, 0},
9252         {0x87, 0, 0, 0, 0},
9253         {0x88, 0, 0, 0, 0},
9254         {0x89, 0, 0, 0, 0},
9255         {0x8A, 0, 0, 0, 0},
9256         {0x8B, 0, 0, 0, 0},
9257         {0x8C, 0, 0, 0, 0},
9258         {0x8D, 0, 0, 0, 0},
9259         {0x8E, 0, 0, 0, 0},
9260         {0x8F, 0, 0, 0, 0},
9261         {0x90, 0, 0, 0, 0},
9262         {0x91, 0, 0, 0, 0},
9263         {0x92, 0, 0, 0, 0},
9264         {0x93, 0x70, 0x70, 0, 0},
9265         {0x94, 0x70, 0x70, 0, 0},
9266         {0x95, 0x71, 0x71, 1, 1},
9267         {0x96, 0x71, 0x71, 1, 1},
9268         {0x97, 0x72, 0x72, 1, 1},
9269         {0x98, 0x73, 0x73, 1, 1},
9270         {0x99, 0x74, 0x74, 1, 1},
9271         {0x9A, 0x75, 0x75, 1, 1},
9272         {0xFFFF, 0, 0, 0, 0}
9273 };
9274
9275 radio_regs_t regs_RX_2056_rev5[] = {
9276         {0x02, 0, 0, 0, 0},
9277         {0x03, 0, 0, 0, 0},
9278         {0x04, 0, 0, 0, 0},
9279         {0x05, 0, 0, 0, 0},
9280         {0x06, 0, 0, 0, 0},
9281         {0x07, 0, 0, 0, 0},
9282         {0x08, 0, 0, 0, 0},
9283         {0x09, 0, 0, 0, 0},
9284         {0x0A, 0, 0, 0, 0},
9285         {0x0B, 0, 0, 0, 0},
9286         {0x0C, 0, 0, 0, 0},
9287         {0x0D, 0, 0, 0, 0},
9288         {0x0E, 0, 0, 0, 0},
9289         {0x0F, 0, 0, 0, 0},
9290         {0x10, 0, 0, 0, 0},
9291         {0x11, 0, 0, 0, 0},
9292         {0x12, 0, 0, 0, 0},
9293         {0x13, 0, 0, 0, 0},
9294         {0x14, 0, 0, 0, 0},
9295         {0x15, 0, 0, 0, 0},
9296         {0x16, 0, 0, 0, 0},
9297         {0x17, 0, 0, 0, 0},
9298         {0x18, 0, 0, 0, 0},
9299         {0x19, 0, 0, 0, 0},
9300         {0x1A, 0, 0, 0, 0},
9301         {0x1B, 0, 0, 0, 0},
9302         {0x1C, 0, 0, 0, 0},
9303         {0x1D, 0, 0, 0, 0},
9304         {0x1E, 0, 0, 0, 0},
9305         {0x1F, 0, 0, 0, 0},
9306         {0x20, 0x3, 0x3, 0, 0},
9307         {0x21, 0, 0, 0, 0},
9308         {0x22, 0, 0, 0, 0},
9309         {0x23, 0x90, 0x90, 0, 0},
9310         {0x24, 0x55, 0x55, 0, 0},
9311         {0x25, 0x15, 0x15, 0, 0},
9312         {0x26, 0x5, 0x5, 0, 0},
9313         {0x27, 0x15, 0x15, 0, 0},
9314         {0x28, 0x5, 0x5, 0, 0},
9315         {0x29, 0x20, 0x20, 0, 0},
9316         {0x2A, 0x11, 0x11, 0, 0},
9317         {0x2B, 0x90, 0x90, 0, 0},
9318         {0x2C, 0, 0, 0, 0},
9319         {0x2D, 0x88, 0x88, 0, 0},
9320         {0x2E, 0x32, 0x32, 0, 0},
9321         {0x2F, 0x77, 0x77, 0, 0},
9322         {0x30, 0x17, 0x17, 1, 1},
9323         {0x31, 0xff, 0xff, 1, 1},
9324         {0x32, 0x20, 0x20, 0, 0},
9325         {0x33, 0, 0, 0, 0},
9326         {0x34, 0x88, 0x88, 0, 0},
9327         {0x35, 0x32, 0x32, 0, 0},
9328         {0x36, 0x77, 0x77, 0, 0},
9329         {0x37, 0x17, 0x17, 1, 1},
9330         {0x38, 0xf0, 0xf0, 1, 1},
9331         {0x39, 0x20, 0x20, 0, 0},
9332         {0x3A, 0x8, 0x8, 0, 0},
9333         {0x3B, 0x55, 0x55, 1, 1},
9334         {0x3C, 0, 0, 0, 0},
9335         {0x3D, 0x88, 0x88, 1, 1},
9336         {0x3E, 0, 0, 0, 0},
9337         {0x3F, 0, 0, 1, 1},
9338         {0x40, 0x7, 0x7, 1, 1},
9339         {0x41, 0x6, 0x6, 0, 0},
9340         {0x42, 0x4, 0x4, 0, 0},
9341         {0x43, 0, 0, 0, 0},
9342         {0x44, 0x8, 0x8, 0, 0},
9343         {0x45, 0x55, 0x55, 1, 1},
9344         {0x46, 0, 0, 0, 0},
9345         {0x47, 0x11, 0x11, 0, 0},
9346         {0x48, 0, 0, 0, 0},
9347         {0x49, 0, 0, 1, 1},
9348         {0x4A, 0x7, 0x7, 0, 0},
9349         {0x4B, 0x6, 0x6, 0, 0},
9350         {0x4C, 0x4, 0x4, 0, 0},
9351         {0x4D, 0, 0, 0, 0},
9352         {0x4E, 0, 0, 0, 0},
9353         {0x4F, 0x26, 0x26, 1, 1},
9354         {0x50, 0x26, 0x26, 1, 1},
9355         {0x51, 0xf, 0xf, 1, 1},
9356         {0x52, 0xf, 0xf, 1, 1},
9357         {0x53, 0x44, 0x44, 0, 0},
9358         {0x54, 0, 0, 0, 0},
9359         {0x55, 0, 0, 0, 0},
9360         {0x56, 0x8, 0x8, 0, 0},
9361         {0x57, 0x8, 0x8, 0, 0},
9362         {0x58, 0x7, 0x7, 0, 0},
9363         {0x59, 0x22, 0x22, 0, 0},
9364         {0x5A, 0x22, 0x22, 0, 0},
9365         {0x5B, 0x2, 0x2, 0, 0},
9366         {0x5C, 0x4, 0x4, 1, 1},
9367         {0x5D, 0x7, 0x7, 0, 0},
9368         {0x5E, 0x55, 0x55, 0, 0},
9369         {0x5F, 0x23, 0x23, 0, 0},
9370         {0x60, 0x41, 0x41, 0, 0},
9371         {0x61, 0x1, 0x1, 0, 0},
9372         {0x62, 0xa, 0xa, 0, 0},
9373         {0x63, 0, 0, 0, 0},
9374         {0x64, 0, 0, 0, 0},
9375         {0x65, 0, 0, 0, 0},
9376         {0x66, 0, 0, 0, 0},
9377         {0x67, 0, 0, 0, 0},
9378         {0x68, 0, 0, 0, 0},
9379         {0x69, 0, 0, 0, 0},
9380         {0x6A, 0, 0, 0, 0},
9381         {0x6B, 0xc, 0xc, 0, 0},
9382         {0x6C, 0, 0, 0, 0},
9383         {0x6D, 0, 0, 0, 0},
9384         {0x6E, 0, 0, 0, 0},
9385         {0x6F, 0, 0, 0, 0},
9386         {0x70, 0, 0, 0, 0},
9387         {0x71, 0, 0, 0, 0},
9388         {0x72, 0x22, 0x22, 0, 0},
9389         {0x73, 0x22, 0x22, 0, 0},
9390         {0x74, 0, 0, 1, 1},
9391         {0x75, 0xa, 0xa, 0, 0},
9392         {0x76, 0x1, 0x1, 0, 0},
9393         {0x77, 0x22, 0x22, 0, 0},
9394         {0x78, 0x30, 0x30, 0, 0},
9395         {0x79, 0, 0, 0, 0},
9396         {0x7A, 0, 0, 0, 0},
9397         {0x7B, 0, 0, 0, 0},
9398         {0x7C, 0, 0, 0, 0},
9399         {0x7D, 0, 0, 0, 0},
9400         {0x7E, 0, 0, 0, 0},
9401         {0x7F, 0, 0, 0, 0},
9402         {0x80, 0, 0, 0, 0},
9403         {0x81, 0, 0, 0, 0},
9404         {0x82, 0, 0, 0, 0},
9405         {0x83, 0, 0, 0, 0},
9406         {0x84, 0, 0, 0, 0},
9407         {0x85, 0, 0, 0, 0},
9408         {0x86, 0, 0, 0, 0},
9409         {0x87, 0, 0, 0, 0},
9410         {0x88, 0, 0, 0, 0},
9411         {0x89, 0, 0, 0, 0},
9412         {0x8A, 0, 0, 0, 0},
9413         {0x8B, 0, 0, 0, 0},
9414         {0x8C, 0, 0, 0, 0},
9415         {0x8D, 0, 0, 0, 0},
9416         {0x8E, 0, 0, 0, 0},
9417         {0x8F, 0, 0, 0, 0},
9418         {0x90, 0, 0, 0, 0},
9419         {0x91, 0, 0, 0, 0},
9420         {0x92, 0, 0, 0, 0},
9421         {0x93, 0, 0, 0, 0},
9422         {0x94, 0, 0, 0, 0},
9423         {0xFFFF, 0, 0, 0, 0}
9424 };
9425
9426 radio_regs_t regs_SYN_2056_rev6[] = {
9427         {0x02, 0, 0, 0, 0},
9428         {0x03, 0, 0, 0, 0},
9429         {0x04, 0, 0, 0, 0},
9430         {0x05, 0, 0, 0, 0},
9431         {0x06, 0, 0, 0, 0},
9432         {0x07, 0, 0, 0, 0},
9433         {0x08, 0, 0, 0, 0},
9434         {0x09, 0x1, 0x1, 0, 0},
9435         {0x0A, 0, 0, 0, 0},
9436         {0x0B, 0, 0, 0, 0},
9437         {0x0C, 0, 0, 0, 0},
9438         {0x0D, 0, 0, 0, 0},
9439         {0x0E, 0, 0, 0, 0},
9440         {0x0F, 0, 0, 0, 0},
9441         {0x10, 0, 0, 0, 0},
9442         {0x11, 0, 0, 0, 0},
9443         {0x12, 0, 0, 0, 0},
9444         {0x13, 0, 0, 0, 0},
9445         {0x14, 0, 0, 0, 0},
9446         {0x15, 0, 0, 0, 0},
9447         {0x16, 0, 0, 0, 0},
9448         {0x17, 0, 0, 0, 0},
9449         {0x18, 0, 0, 0, 0},
9450         {0x19, 0, 0, 0, 0},
9451         {0x1A, 0, 0, 0, 0},
9452         {0x1B, 0, 0, 0, 0},
9453         {0x1C, 0, 0, 0, 0},
9454         {0x1D, 0, 0, 0, 0},
9455         {0x1E, 0, 0, 0, 0},
9456         {0x1F, 0, 0, 0, 0},
9457         {0x20, 0, 0, 0, 0},
9458         {0x21, 0, 0, 0, 0},
9459         {0x22, 0x60, 0x60, 0, 0},
9460         {0x23, 0x6, 0x6, 0, 0},
9461         {0x24, 0xc, 0xc, 0, 0},
9462         {0x25, 0, 0, 0, 0},
9463         {0x26, 0, 0, 0, 0},
9464         {0x27, 0, 0, 0, 0},
9465         {0x28, 0x1, 0x1, 0, 0},
9466         {0x29, 0, 0, 0, 0},
9467         {0x2A, 0, 0, 0, 0},
9468         {0x2B, 0, 0, 0, 0},
9469         {0x2C, 0, 0, 0, 0},
9470         {0x2D, 0, 0, 0, 0},
9471         {0x2E, 0, 0, 0, 0},
9472         {0x2F, 0x1f, 0x1f, 0, 0},
9473         {0x30, 0x15, 0x15, 0, 0},
9474         {0x31, 0xf, 0xf, 0, 0},
9475         {0x32, 0, 0, 0, 0},
9476         {0x33, 0, 0, 0, 0},
9477         {0x34, 0, 0, 0, 0},
9478         {0x35, 0, 0, 0, 0},
9479         {0x36, 0, 0, 0, 0},
9480         {0x37, 0, 0, 0, 0},
9481         {0x38, 0, 0, 0, 0},
9482         {0x39, 0, 0, 0, 0},
9483         {0x3A, 0, 0, 0, 0},
9484         {0x3B, 0, 0, 0, 0},
9485         {0x3C, 0x13, 0x13, 0, 0},
9486         {0x3D, 0xf, 0xf, 0, 0},
9487         {0x3E, 0x18, 0x18, 0, 0},
9488         {0x3F, 0, 0, 0, 0},
9489         {0x40, 0, 0, 0, 0},
9490         {0x41, 0x20, 0x20, 0, 0},
9491         {0x42, 0x20, 0x20, 0, 0},
9492         {0x43, 0, 0, 0, 0},
9493         {0x44, 0x77, 0x77, 0, 0},
9494         {0x45, 0x7, 0x7, 0, 0},
9495         {0x46, 0x1, 0x1, 0, 0},
9496         {0x47, 0x4, 0x4, 0, 0},
9497         {0x48, 0xf, 0xf, 0, 0},
9498         {0x49, 0x30, 0x30, 0, 0},
9499         {0x4A, 0x32, 0x32, 0, 0},
9500         {0x4B, 0xd, 0xd, 0, 0},
9501         {0x4C, 0xd, 0xd, 0, 0},
9502         {0x4D, 0x4, 0x4, 0, 0},
9503         {0x4E, 0x6, 0x6, 0, 0},
9504         {0x4F, 0x1, 0x1, 0, 0},
9505         {0x50, 0x1c, 0x1c, 0, 0},
9506         {0x51, 0x2, 0x2, 0, 0},
9507         {0x52, 0x2, 0x2, 0, 0},
9508         {0x53, 0xf7, 0xf7, 1, 1},
9509         {0x54, 0xb4, 0xb4, 0, 0},
9510         {0x55, 0xd2, 0xd2, 0, 0},
9511         {0x56, 0, 0, 0, 0},
9512         {0x57, 0, 0, 0, 0},
9513         {0x58, 0x4, 0x4, 0, 0},
9514         {0x59, 0x96, 0x96, 0, 0},
9515         {0x5A, 0x3e, 0x3e, 0, 0},
9516         {0x5B, 0x3e, 0x3e, 0, 0},
9517         {0x5C, 0x13, 0x13, 0, 0},
9518         {0x5D, 0x2, 0x2, 0, 0},
9519         {0x5E, 0, 0, 0, 0},
9520         {0x5F, 0x7, 0x7, 0, 0},
9521         {0x60, 0x7, 0x7, 1, 1},
9522         {0x61, 0x8, 0x8, 0, 0},
9523         {0x62, 0x3, 0x3, 0, 0},
9524         {0x63, 0, 0, 0, 0},
9525         {0x64, 0, 0, 0, 0},
9526         {0x65, 0, 0, 0, 0},
9527         {0x66, 0, 0, 0, 0},
9528         {0x67, 0, 0, 0, 0},
9529         {0x68, 0x40, 0x40, 0, 0},
9530         {0x69, 0, 0, 0, 0},
9531         {0x6A, 0, 0, 0, 0},
9532         {0x6B, 0, 0, 0, 0},
9533         {0x6C, 0, 0, 0, 0},
9534         {0x6D, 0x1, 0x1, 0, 0},
9535         {0x6E, 0, 0, 0, 0},
9536         {0x6F, 0, 0, 0, 0},
9537         {0x70, 0x60, 0x60, 0, 0},
9538         {0x71, 0x66, 0x66, 0, 0},
9539         {0x72, 0xc, 0xc, 0, 0},
9540         {0x73, 0x66, 0x66, 0, 0},
9541         {0x74, 0x8f, 0x8f, 1, 1},
9542         {0x75, 0, 0, 0, 0},
9543         {0x76, 0xcc, 0xcc, 0, 0},
9544         {0x77, 0x1, 0x1, 0, 0},
9545         {0x78, 0x66, 0x66, 0, 0},
9546         {0x79, 0x66, 0x66, 0, 0},
9547         {0x7A, 0, 0, 0, 0},
9548         {0x7B, 0, 0, 0, 0},
9549         {0x7C, 0, 0, 0, 0},
9550         {0x7D, 0, 0, 0, 0},
9551         {0x7E, 0, 0, 0, 0},
9552         {0x7F, 0, 0, 0, 0},
9553         {0x80, 0, 0, 0, 0},
9554         {0x81, 0, 0, 0, 0},
9555         {0x82, 0, 0, 0, 0},
9556         {0x83, 0, 0, 0, 0},
9557         {0x84, 0, 0, 0, 0},
9558         {0x85, 0xff, 0xff, 0, 0},
9559         {0x86, 0, 0, 0, 0},
9560         {0x87, 0, 0, 0, 0},
9561         {0x88, 0, 0, 0, 0},
9562         {0x89, 0, 0, 0, 0},
9563         {0x8A, 0, 0, 0, 0},
9564         {0x8B, 0, 0, 0, 0},
9565         {0x8C, 0, 0, 0, 0},
9566         {0x8D, 0, 0, 0, 0},
9567         {0x8E, 0, 0, 0, 0},
9568         {0x8F, 0, 0, 0, 0},
9569         {0x90, 0, 0, 0, 0},
9570         {0x91, 0, 0, 0, 0},
9571         {0x92, 0, 0, 0, 0},
9572         {0x93, 0, 0, 0, 0},
9573         {0x94, 0, 0, 0, 0},
9574         {0x95, 0, 0, 0, 0},
9575         {0x96, 0, 0, 0, 0},
9576         {0x97, 0, 0, 0, 0},
9577         {0x98, 0, 0, 0, 0},
9578         {0x99, 0, 0, 0, 0},
9579         {0x9A, 0, 0, 0, 0},
9580         {0x9B, 0, 0, 0, 0},
9581         {0x9C, 0, 0, 0, 0},
9582         {0x9D, 0, 0, 0, 0},
9583         {0x9E, 0, 0, 0, 0},
9584         {0x9F, 0x6, 0x6, 0, 0},
9585         {0xA0, 0x66, 0x66, 0, 0},
9586         {0xA1, 0x66, 0x66, 0, 0},
9587         {0xA2, 0x66, 0x66, 0, 0},
9588         {0xA3, 0x66, 0x66, 0, 0},
9589         {0xA4, 0x66, 0x66, 0, 0},
9590         {0xA5, 0x66, 0x66, 0, 0},
9591         {0xA6, 0x66, 0x66, 0, 0},
9592         {0xA7, 0x66, 0x66, 0, 0},
9593         {0xA8, 0x66, 0x66, 0, 0},
9594         {0xA9, 0x66, 0x66, 0, 0},
9595         {0xAA, 0x66, 0x66, 0, 0},
9596         {0xAB, 0x66, 0x66, 0, 0},
9597         {0xAC, 0x66, 0x66, 0, 0},
9598         {0xAD, 0x66, 0x66, 0, 0},
9599         {0xAE, 0x66, 0x66, 0, 0},
9600         {0xAF, 0x66, 0x66, 0, 0},
9601         {0xB0, 0x66, 0x66, 0, 0},
9602         {0xB1, 0x66, 0x66, 0, 0},
9603         {0xB2, 0x66, 0x66, 0, 0},
9604         {0xB3, 0xa, 0xa, 0, 0},
9605         {0xB4, 0, 0, 0, 0},
9606         {0xB5, 0, 0, 0, 0},
9607         {0xB6, 0, 0, 0, 0},
9608         {0xFFFF, 0, 0, 0, 0}
9609 };
9610
9611 radio_regs_t regs_TX_2056_rev6[] = {
9612         {0x02, 0, 0, 0, 0},
9613         {0x03, 0, 0, 0, 0},
9614         {0x04, 0, 0, 0, 0},
9615         {0x05, 0, 0, 0, 0},
9616         {0x06, 0, 0, 0, 0},
9617         {0x07, 0, 0, 0, 0},
9618         {0x08, 0, 0, 0, 0},
9619         {0x09, 0, 0, 0, 0},
9620         {0x0A, 0, 0, 0, 0},
9621         {0x0B, 0, 0, 0, 0},
9622         {0x0C, 0, 0, 0, 0},
9623         {0x0D, 0, 0, 0, 0},
9624         {0x0E, 0, 0, 0, 0},
9625         {0x0F, 0, 0, 0, 0},
9626         {0x10, 0, 0, 0, 0},
9627         {0x11, 0, 0, 0, 0},
9628         {0x12, 0, 0, 0, 0},
9629         {0x13, 0, 0, 0, 0},
9630         {0x14, 0, 0, 0, 0},
9631         {0x15, 0, 0, 0, 0},
9632         {0x16, 0, 0, 0, 0},
9633         {0x17, 0, 0, 0, 0},
9634         {0x18, 0, 0, 0, 0},
9635         {0x19, 0, 0, 0, 0},
9636         {0x1A, 0, 0, 0, 0},
9637         {0x1B, 0, 0, 0, 0},
9638         {0x1C, 0, 0, 0, 0},
9639         {0x1D, 0, 0, 0, 0},
9640         {0x1E, 0, 0, 0, 0},
9641         {0x1F, 0, 0, 0, 0},
9642         {0x20, 0, 0, 0, 0},
9643         {0x21, 0x88, 0x88, 0, 0},
9644         {0x22, 0x88, 0x88, 0, 0},
9645         {0x23, 0x88, 0x88, 0, 0},
9646         {0x24, 0x88, 0x88, 0, 0},
9647         {0x25, 0xc, 0xc, 0, 0},
9648         {0x26, 0, 0, 0, 0},
9649         {0x27, 0x3, 0x3, 0, 0},
9650         {0x28, 0, 0, 0, 0},
9651         {0x29, 0x3, 0x3, 0, 0},
9652         {0x2A, 0x37, 0x37, 0, 0},
9653         {0x2B, 0x3, 0x3, 0, 0},
9654         {0x2C, 0, 0, 0, 0},
9655         {0x2D, 0, 0, 0, 0},
9656         {0x2E, 0x1, 0x1, 0, 0},
9657         {0x2F, 0x1, 0x1, 0, 0},
9658         {0x30, 0, 0, 0, 0},
9659         {0x31, 0, 0, 0, 0},
9660         {0x32, 0, 0, 0, 0},
9661         {0x33, 0x11, 0x11, 0, 0},
9662         {0x34, 0xee, 0xee, 1, 1},
9663         {0x35, 0, 0, 0, 0},
9664         {0x36, 0, 0, 0, 0},
9665         {0x37, 0x3, 0x3, 0, 0},
9666         {0x38, 0x50, 0x50, 1, 1},
9667         {0x39, 0, 0, 0, 0},
9668         {0x3A, 0x50, 0x50, 1, 1},
9669         {0x3B, 0, 0, 0, 0},
9670         {0x3C, 0x6e, 0x6e, 0, 0},
9671         {0x3D, 0xf0, 0xf0, 1, 1},
9672         {0x3E, 0, 0, 0, 0},
9673         {0x3F, 0, 0, 0, 0},
9674         {0x40, 0, 0, 0, 0},
9675         {0x41, 0x3, 0x3, 0, 0},
9676         {0x42, 0x3, 0x3, 0, 0},
9677         {0x43, 0, 0, 0, 0},
9678         {0x44, 0x1e, 0x1e, 0, 0},
9679         {0x45, 0, 0, 0, 0},
9680         {0x46, 0x6e, 0x6e, 0, 0},
9681         {0x47, 0xf0, 0xf0, 1, 1},
9682         {0x48, 0, 0, 0, 0},
9683         {0x49, 0x2, 0x2, 0, 0},
9684         {0x4A, 0xff, 0xff, 1, 1},
9685         {0x4B, 0xc, 0xc, 0, 0},
9686         {0x4C, 0, 0, 0, 0},
9687         {0x4D, 0x38, 0x38, 0, 0},
9688         {0x4E, 0x70, 0x70, 1, 1},
9689         {0x4F, 0x2, 0x2, 0, 0},
9690         {0x50, 0x88, 0x88, 0, 0},
9691         {0x51, 0xc, 0xc, 0, 0},
9692         {0x52, 0, 0, 0, 0},
9693         {0x53, 0x8, 0x8, 0, 0},
9694         {0x54, 0x70, 0x70, 1, 1},
9695         {0x55, 0x2, 0x2, 0, 0},
9696         {0x56, 0xff, 0xff, 1, 1},
9697         {0x57, 0, 0, 0, 0},
9698         {0x58, 0x83, 0x83, 0, 0},
9699         {0x59, 0x77, 0x77, 1, 1},
9700         {0x5A, 0, 0, 0, 0},
9701         {0x5B, 0x2, 0x2, 0, 0},
9702         {0x5C, 0x88, 0x88, 0, 0},
9703         {0x5D, 0, 0, 0, 0},
9704         {0x5E, 0x8, 0x8, 0, 0},
9705         {0x5F, 0x77, 0x77, 1, 1},
9706         {0x60, 0x1, 0x1, 0, 0},
9707         {0x61, 0, 0, 0, 0},
9708         {0x62, 0x7, 0x7, 0, 0},
9709         {0x63, 0, 0, 0, 0},
9710         {0x64, 0x7, 0x7, 0, 0},
9711         {0x65, 0, 0, 0, 0},
9712         {0x66, 0, 0, 0, 0},
9713         {0x67, 0, 0, 1, 1},
9714         {0x68, 0, 0, 0, 0},
9715         {0x69, 0xa, 0xa, 0, 0},
9716         {0x6A, 0, 0, 0, 0},
9717         {0x6B, 0, 0, 0, 0},
9718         {0x6C, 0, 0, 0, 0},
9719         {0x6D, 0, 0, 0, 0},
9720         {0x6E, 0, 0, 0, 0},
9721         {0x6F, 0, 0, 0, 0},
9722         {0x70, 0, 0, 0, 0},
9723         {0x71, 0x2, 0x2, 0, 0},
9724         {0x72, 0, 0, 0, 0},
9725         {0x73, 0, 0, 0, 0},
9726         {0x74, 0xe, 0xe, 0, 0},
9727         {0x75, 0xe, 0xe, 0, 0},
9728         {0x76, 0xe, 0xe, 0, 0},
9729         {0x77, 0x13, 0x13, 0, 0},
9730         {0x78, 0x13, 0x13, 0, 0},
9731         {0x79, 0x1b, 0x1b, 0, 0},
9732         {0x7A, 0x1b, 0x1b, 0, 0},
9733         {0x7B, 0x55, 0x55, 0, 0},
9734         {0x7C, 0x5b, 0x5b, 0, 0},
9735         {0x7D, 0x30, 0x30, 1, 1},
9736         {0x7E, 0, 0, 0, 0},
9737         {0x7F, 0, 0, 0, 0},
9738         {0x80, 0, 0, 0, 0},
9739         {0x81, 0, 0, 0, 0},
9740         {0x82, 0, 0, 0, 0},
9741         {0x83, 0, 0, 0, 0},
9742         {0x84, 0, 0, 0, 0},
9743         {0x85, 0, 0, 0, 0},
9744         {0x86, 0, 0, 0, 0},
9745         {0x87, 0, 0, 0, 0},
9746         {0x88, 0, 0, 0, 0},
9747         {0x89, 0, 0, 0, 0},
9748         {0x8A, 0, 0, 0, 0},
9749         {0x8B, 0, 0, 0, 0},
9750         {0x8C, 0, 0, 0, 0},
9751         {0x8D, 0, 0, 0, 0},
9752         {0x8E, 0, 0, 0, 0},
9753         {0x8F, 0, 0, 0, 0},
9754         {0x90, 0, 0, 0, 0},
9755         {0x91, 0, 0, 0, 0},
9756         {0x92, 0, 0, 0, 0},
9757         {0x93, 0x70, 0x70, 0, 0},
9758         {0x94, 0x70, 0x70, 0, 0},
9759         {0x95, 0x70, 0x70, 0, 0},
9760         {0x96, 0x70, 0x70, 0, 0},
9761         {0x97, 0x70, 0x70, 0, 0},
9762         {0x98, 0x70, 0x70, 0, 0},
9763         {0x99, 0x70, 0x70, 0, 0},
9764         {0x9A, 0x70, 0x70, 0, 0},
9765         {0xFFFF, 0, 0, 0, 0}
9766 };
9767
9768 radio_regs_t regs_RX_2056_rev6[] = {
9769         {0x02, 0, 0, 0, 0},
9770         {0x03, 0, 0, 0, 0},
9771         {0x04, 0, 0, 0, 0},
9772         {0x05, 0, 0, 0, 0},
9773         {0x06, 0, 0, 0, 0},
9774         {0x07, 0, 0, 0, 0},
9775         {0x08, 0, 0, 0, 0},
9776         {0x09, 0, 0, 0, 0},
9777         {0x0A, 0, 0, 0, 0},
9778         {0x0B, 0, 0, 0, 0},
9779         {0x0C, 0, 0, 0, 0},
9780         {0x0D, 0, 0, 0, 0},
9781         {0x0E, 0, 0, 0, 0},
9782         {0x0F, 0, 0, 0, 0},
9783         {0x10, 0, 0, 0, 0},
9784         {0x11, 0, 0, 0, 0},
9785         {0x12, 0, 0, 0, 0},
9786         {0x13, 0, 0, 0, 0},
9787         {0x14, 0, 0, 0, 0},
9788         {0x15, 0, 0, 0, 0},
9789         {0x16, 0, 0, 0, 0},
9790         {0x17, 0, 0, 0, 0},
9791         {0x18, 0, 0, 0, 0},
9792         {0x19, 0, 0, 0, 0},
9793         {0x1A, 0, 0, 0, 0},
9794         {0x1B, 0, 0, 0, 0},
9795         {0x1C, 0, 0, 0, 0},
9796         {0x1D, 0, 0, 0, 0},
9797         {0x1E, 0, 0, 0, 0},
9798         {0x1F, 0, 0, 0, 0},
9799         {0x20, 0x3, 0x3, 0, 0},
9800         {0x21, 0, 0, 0, 0},
9801         {0x22, 0, 0, 0, 0},
9802         {0x23, 0x90, 0x90, 0, 0},
9803         {0x24, 0x55, 0x55, 0, 0},
9804         {0x25, 0x15, 0x15, 0, 0},
9805         {0x26, 0x5, 0x5, 0, 0},
9806         {0x27, 0x15, 0x15, 0, 0},
9807         {0x28, 0x5, 0x5, 0, 0},
9808         {0x29, 0x20, 0x20, 0, 0},
9809         {0x2A, 0x11, 0x11, 0, 0},
9810         {0x2B, 0x90, 0x90, 0, 0},
9811         {0x2C, 0, 0, 0, 0},
9812         {0x2D, 0x88, 0x88, 0, 0},
9813         {0x2E, 0x32, 0x32, 0, 0},
9814         {0x2F, 0x77, 0x77, 0, 0},
9815         {0x30, 0x17, 0x17, 1, 1},
9816         {0x31, 0xff, 0xff, 1, 1},
9817         {0x32, 0x20, 0x20, 0, 0},
9818         {0x33, 0, 0, 0, 0},
9819         {0x34, 0x88, 0x88, 0, 0},
9820         {0x35, 0x32, 0x32, 0, 0},
9821         {0x36, 0x77, 0x77, 0, 0},
9822         {0x37, 0x17, 0x17, 1, 1},
9823         {0x38, 0xf0, 0xf0, 1, 1},
9824         {0x39, 0x20, 0x20, 0, 0},
9825         {0x3A, 0x8, 0x8, 0, 0},
9826         {0x3B, 0x55, 0x55, 1, 1},
9827         {0x3C, 0, 0, 0, 0},
9828         {0x3D, 0x88, 0x88, 1, 1},
9829         {0x3E, 0, 0, 0, 0},
9830         {0x3F, 0x44, 0x44, 0, 0},
9831         {0x40, 0x7, 0x7, 1, 1},
9832         {0x41, 0x6, 0x6, 0, 0},
9833         {0x42, 0x4, 0x4, 0, 0},
9834         {0x43, 0, 0, 0, 0},
9835         {0x44, 0x8, 0x8, 0, 0},
9836         {0x45, 0x55, 0x55, 1, 1},
9837         {0x46, 0, 0, 0, 0},
9838         {0x47, 0x11, 0x11, 0, 0},
9839         {0x48, 0, 0, 0, 0},
9840         {0x49, 0x44, 0x44, 0, 0},
9841         {0x4A, 0x7, 0x7, 0, 0},
9842         {0x4B, 0x6, 0x6, 0, 0},
9843         {0x4C, 0x4, 0x4, 0, 0},
9844         {0x4D, 0, 0, 0, 0},
9845         {0x4E, 0, 0, 0, 0},
9846         {0x4F, 0x26, 0x26, 1, 1},
9847         {0x50, 0x26, 0x26, 1, 1},
9848         {0x51, 0xf, 0xf, 1, 1},
9849         {0x52, 0xf, 0xf, 1, 1},
9850         {0x53, 0x44, 0x44, 0, 0},
9851         {0x54, 0, 0, 0, 0},
9852         {0x55, 0, 0, 0, 0},
9853         {0x56, 0x8, 0x8, 0, 0},
9854         {0x57, 0x8, 0x8, 0, 0},
9855         {0x58, 0x7, 0x7, 0, 0},
9856         {0x59, 0x22, 0x22, 0, 0},
9857         {0x5A, 0x22, 0x22, 0, 0},
9858         {0x5B, 0x2, 0x2, 0, 0},
9859         {0x5C, 0x4, 0x4, 1, 1},
9860         {0x5D, 0x7, 0x7, 0, 0},
9861         {0x5E, 0x55, 0x55, 0, 0},
9862         {0x5F, 0x23, 0x23, 0, 0},
9863         {0x60, 0x41, 0x41, 0, 0},
9864         {0x61, 0x1, 0x1, 0, 0},
9865         {0x62, 0xa, 0xa, 0, 0},
9866         {0x63, 0, 0, 0, 0},
9867         {0x64, 0, 0, 0, 0},
9868         {0x65, 0, 0, 0, 0},
9869         {0x66, 0, 0, 0, 0},
9870         {0x67, 0, 0, 0, 0},
9871         {0x68, 0, 0, 0, 0},
9872         {0x69, 0, 0, 0, 0},
9873         {0x6A, 0, 0, 0, 0},
9874         {0x6B, 0xc, 0xc, 0, 0},
9875         {0x6C, 0, 0, 0, 0},
9876         {0x6D, 0, 0, 0, 0},
9877         {0x6E, 0, 0, 0, 0},
9878         {0x6F, 0, 0, 0, 0},
9879         {0x70, 0, 0, 0, 0},
9880         {0x71, 0, 0, 0, 0},
9881         {0x72, 0x22, 0x22, 0, 0},
9882         {0x73, 0x22, 0x22, 0, 0},
9883         {0x74, 0, 0, 1, 1},
9884         {0x75, 0xa, 0xa, 0, 0},
9885         {0x76, 0x1, 0x1, 0, 0},
9886         {0x77, 0x22, 0x22, 0, 0},
9887         {0x78, 0x30, 0x30, 0, 0},
9888         {0x79, 0, 0, 0, 0},
9889         {0x7A, 0, 0, 0, 0},
9890         {0x7B, 0, 0, 0, 0},
9891         {0x7C, 0, 0, 0, 0},
9892         {0x7D, 0x5, 0x5, 1, 1},
9893         {0x7E, 0, 0, 0, 0},
9894         {0x7F, 0, 0, 0, 0},
9895         {0x80, 0, 0, 0, 0},
9896         {0x81, 0, 0, 0, 0},
9897         {0x82, 0, 0, 0, 0},
9898         {0x83, 0, 0, 0, 0},
9899         {0x84, 0, 0, 0, 0},
9900         {0x85, 0, 0, 0, 0},
9901         {0x86, 0, 0, 0, 0},
9902         {0x87, 0, 0, 0, 0},
9903         {0x88, 0, 0, 0, 0},
9904         {0x89, 0, 0, 0, 0},
9905         {0x8A, 0, 0, 0, 0},
9906         {0x8B, 0, 0, 0, 0},
9907         {0x8C, 0, 0, 0, 0},
9908         {0x8D, 0, 0, 0, 0},
9909         {0x8E, 0, 0, 0, 0},
9910         {0x8F, 0, 0, 0, 0},
9911         {0x90, 0, 0, 0, 0},
9912         {0x91, 0, 0, 0, 0},
9913         {0x92, 0, 0, 0, 0},
9914         {0x93, 0, 0, 0, 0},
9915         {0x94, 0, 0, 0, 0},
9916         {0xFFFF, 0, 0, 0, 0}
9917 };
9918
9919 radio_regs_t regs_SYN_2056_rev7[] = {
9920         {0x02, 0, 0, 0, 0},
9921         {0x03, 0, 0, 0, 0},
9922         {0x04, 0, 0, 0, 0},
9923         {0x05, 0, 0, 0, 0},
9924         {0x06, 0, 0, 0, 0},
9925         {0x07, 0, 0, 0, 0},
9926         {0x08, 0, 0, 0, 0},
9927         {0x09, 0x1, 0x1, 0, 0},
9928         {0x0A, 0, 0, 0, 0},
9929         {0x0B, 0, 0, 0, 0},
9930         {0x0C, 0, 0, 0, 0},
9931         {0x0D, 0, 0, 0, 0},
9932         {0x0E, 0, 0, 0, 0},
9933         {0x0F, 0, 0, 0, 0},
9934         {0x10, 0, 0, 0, 0},
9935         {0x11, 0, 0, 0, 0},
9936         {0x12, 0, 0, 0, 0},
9937         {0x13, 0, 0, 0, 0},
9938         {0x14, 0, 0, 0, 0},
9939         {0x15, 0, 0, 0, 0},
9940         {0x16, 0, 0, 0, 0},
9941         {0x17, 0, 0, 0, 0},
9942         {0x18, 0, 0, 0, 0},
9943         {0x19, 0, 0, 0, 0},
9944         {0x1A, 0, 0, 0, 0},
9945         {0x1B, 0, 0, 0, 0},
9946         {0x1C, 0, 0, 0, 0},
9947         {0x1D, 0, 0, 0, 0},
9948         {0x1E, 0, 0, 0, 0},
9949         {0x1F, 0, 0, 0, 0},
9950         {0x20, 0, 0, 0, 0},
9951         {0x21, 0, 0, 0, 0},
9952         {0x22, 0x60, 0x60, 0, 0},
9953         {0x23, 0x6, 0x6, 0, 0},
9954         {0x24, 0xc, 0xc, 0, 0},
9955         {0x25, 0, 0, 0, 0},
9956         {0x26, 0, 0, 0, 0},
9957         {0x27, 0, 0, 0, 0},
9958         {0x28, 0x1, 0x1, 0, 0},
9959         {0x29, 0, 0, 0, 0},
9960         {0x2A, 0, 0, 0, 0},
9961         {0x2B, 0, 0, 0, 0},
9962         {0x2C, 0, 0, 0, 0},
9963         {0x2D, 0, 0, 0, 0},
9964         {0x2E, 0, 0, 0, 0},
9965         {0x2F, 0x1f, 0x1f, 0, 0},
9966         {0x30, 0x15, 0x15, 0, 0},
9967         {0x31, 0xf, 0xf, 0, 0},
9968         {0x32, 0, 0, 0, 0},
9969         {0x33, 0, 0, 0, 0},
9970         {0x34, 0, 0, 0, 0},
9971         {0x35, 0, 0, 0, 0},
9972         {0x36, 0, 0, 0, 0},
9973         {0x37, 0, 0, 0, 0},
9974         {0x38, 0, 0, 0, 0},
9975         {0x39, 0, 0, 0, 0},
9976         {0x3A, 0, 0, 0, 0},
9977         {0x3B, 0, 0, 0, 0},
9978         {0x3C, 0x13, 0x13, 0, 0},
9979         {0x3D, 0xf, 0xf, 0, 0},
9980         {0x3E, 0x18, 0x18, 0, 0},
9981         {0x3F, 0, 0, 0, 0},
9982         {0x40, 0, 0, 0, 0},
9983         {0x41, 0x20, 0x20, 0, 0},
9984         {0x42, 0x20, 0x20, 0, 0},
9985         {0x43, 0, 0, 0, 0},
9986         {0x44, 0x77, 0x77, 0, 0},
9987         {0x45, 0x7, 0x7, 0, 0},
9988         {0x46, 0x1, 0x1, 0, 0},
9989         {0x47, 0x4, 0x4, 0, 0},
9990         {0x48, 0xf, 0xf, 0, 0},
9991         {0x49, 0x30, 0x30, 0, 0},
9992         {0x4A, 0x32, 0x32, 0, 0},
9993         {0x4B, 0xd, 0xd, 0, 0},
9994         {0x4C, 0xd, 0xd, 0, 0},
9995         {0x4D, 0x4, 0x4, 0, 0},
9996         {0x4E, 0x6, 0x6, 0, 0},
9997         {0x4F, 0x1, 0x1, 0, 0},
9998         {0x50, 0x1c, 0x1c, 0, 0},
9999         {0x51, 0x2, 0x2, 0, 0},
10000         {0x52, 0x2, 0x2, 0, 0},
10001         {0x53, 0xf7, 0xf7, 1, 1},
10002         {0x54, 0xb4, 0xb4, 0, 0},
10003         {0x55, 0xd2, 0xd2, 0, 0},
10004         {0x56, 0, 0, 0, 0},
10005         {0x57, 0, 0, 0, 0},
10006         {0x58, 0x4, 0x4, 0, 0},
10007         {0x59, 0x96, 0x96, 0, 0},
10008         {0x5A, 0x3e, 0x3e, 0, 0},
10009         {0x5B, 0x3e, 0x3e, 0, 0},
10010         {0x5C, 0x13, 0x13, 0, 0},
10011         {0x5D, 0x2, 0x2, 0, 0},
10012         {0x5E, 0, 0, 0, 0},
10013         {0x5F, 0x7, 0x7, 0, 0},
10014         {0x60, 0x7, 0x7, 1, 1},
10015         {0x61, 0x8, 0x8, 0, 0},
10016         {0x62, 0x3, 0x3, 0, 0},
10017         {0x63, 0, 0, 0, 0},
10018         {0x64, 0, 0, 0, 0},
10019         {0x65, 0, 0, 0, 0},
10020         {0x66, 0, 0, 0, 0},
10021         {0x67, 0, 0, 0, 0},
10022         {0x68, 0x40, 0x40, 0, 0},
10023         {0x69, 0, 0, 0, 0},
10024         {0x6A, 0, 0, 0, 0},
10025         {0x6B, 0, 0, 0, 0},
10026         {0x6C, 0, 0, 0, 0},
10027         {0x6D, 0x1, 0x1, 0, 0},
10028         {0x6E, 0, 0, 0, 0},
10029         {0x6F, 0, 0, 0, 0},
10030         {0x70, 0x60, 0x60, 0, 0},
10031         {0x71, 0x66, 0x66, 0, 0},
10032         {0x72, 0xc, 0xc, 0, 0},
10033         {0x73, 0x66, 0x66, 0, 0},
10034         {0x74, 0x8f, 0x8f, 1, 1},
10035         {0x75, 0, 0, 0, 0},
10036         {0x76, 0xcc, 0xcc, 0, 0},
10037         {0x77, 0x1, 0x1, 0, 0},
10038         {0x78, 0x66, 0x66, 0, 0},
10039         {0x79, 0x66, 0x66, 0, 0},
10040         {0x7A, 0, 0, 0, 0},
10041         {0x7B, 0, 0, 0, 0},
10042         {0x7C, 0, 0, 0, 0},
10043         {0x7D, 0, 0, 0, 0},
10044         {0x7E, 0, 0, 0, 0},
10045         {0x7F, 0, 0, 0, 0},
10046         {0x80, 0, 0, 0, 0},
10047         {0x81, 0, 0, 0, 0},
10048         {0x82, 0, 0, 0, 0},
10049         {0x83, 0, 0, 0, 0},
10050         {0x84, 0, 0, 0, 0},
10051         {0x85, 0xff, 0xff, 0, 0},
10052         {0x86, 0, 0, 0, 0},
10053         {0x87, 0, 0, 0, 0},
10054         {0x88, 0, 0, 0, 0},
10055         {0x89, 0, 0, 0, 0},
10056         {0x8A, 0, 0, 0, 0},
10057         {0x8B, 0, 0, 0, 0},
10058         {0x8C, 0, 0, 0, 0},
10059         {0x8D, 0, 0, 0, 0},
10060         {0x8E, 0, 0, 0, 0},
10061         {0x8F, 0, 0, 0, 0},
10062         {0x90, 0, 0, 0, 0},
10063         {0x91, 0, 0, 0, 0},
10064         {0x92, 0, 0, 0, 0},
10065         {0x93, 0, 0, 0, 0},
10066         {0x94, 0, 0, 0, 0},
10067         {0x95, 0, 0, 0, 0},
10068         {0x96, 0, 0, 0, 0},
10069         {0x97, 0, 0, 0, 0},
10070         {0x98, 0, 0, 0, 0},
10071         {0x99, 0, 0, 0, 0},
10072         {0x9A, 0, 0, 0, 0},
10073         {0x9B, 0, 0, 0, 0},
10074         {0x9C, 0, 0, 0, 0},
10075         {0x9D, 0, 0, 0, 0},
10076         {0x9E, 0, 0, 0, 0},
10077         {0x9F, 0x6, 0x6, 0, 0},
10078         {0xA0, 0x66, 0x66, 0, 0},
10079         {0xA1, 0x66, 0x66, 0, 0},
10080         {0xA2, 0x66, 0x66, 0, 0},
10081         {0xA3, 0x66, 0x66, 0, 0},
10082         {0xA4, 0x66, 0x66, 0, 0},
10083         {0xA5, 0x66, 0x66, 0, 0},
10084         {0xA6, 0x66, 0x66, 0, 0},
10085         {0xA7, 0x66, 0x66, 0, 0},
10086         {0xA8, 0x66, 0x66, 0, 0},
10087         {0xA9, 0x66, 0x66, 0, 0},
10088         {0xAA, 0x66, 0x66, 0, 0},
10089         {0xAB, 0x66, 0x66, 0, 0},
10090         {0xAC, 0x66, 0x66, 0, 0},
10091         {0xAD, 0x66, 0x66, 0, 0},
10092         {0xAE, 0x66, 0x66, 0, 0},
10093         {0xAF, 0x66, 0x66, 0, 0},
10094         {0xB0, 0x66, 0x66, 0, 0},
10095         {0xB1, 0x66, 0x66, 0, 0},
10096         {0xB2, 0x66, 0x66, 0, 0},
10097         {0xB3, 0xa, 0xa, 0, 0},
10098         {0xB4, 0, 0, 0, 0},
10099         {0xB5, 0, 0, 0, 0},
10100         {0xB6, 0, 0, 0, 0},
10101         {0xFFFF, 0, 0, 0, 0},
10102 };
10103
10104 radio_regs_t regs_TX_2056_rev7[] = {
10105         {0x02, 0, 0, 0, 0},
10106         {0x03, 0, 0, 0, 0},
10107         {0x04, 0, 0, 0, 0},
10108         {0x05, 0, 0, 0, 0},
10109         {0x06, 0, 0, 0, 0},
10110         {0x07, 0, 0, 0, 0},
10111         {0x08, 0, 0, 0, 0},
10112         {0x09, 0, 0, 0, 0},
10113         {0x0A, 0, 0, 0, 0},
10114         {0x0B, 0, 0, 0, 0},
10115         {0x0C, 0, 0, 0, 0},
10116         {0x0D, 0, 0, 0, 0},
10117         {0x0E, 0, 0, 0, 0},
10118         {0x0F, 0, 0, 0, 0},
10119         {0x10, 0, 0, 0, 0},
10120         {0x11, 0, 0, 0, 0},
10121         {0x12, 0, 0, 0, 0},
10122         {0x13, 0, 0, 0, 0},
10123         {0x14, 0, 0, 0, 0},
10124         {0x15, 0, 0, 0, 0},
10125         {0x16, 0, 0, 0, 0},
10126         {0x17, 0, 0, 0, 0},
10127         {0x18, 0, 0, 0, 0},
10128         {0x19, 0, 0, 0, 0},
10129         {0x1A, 0, 0, 0, 0},
10130         {0x1B, 0, 0, 0, 0},
10131         {0x1C, 0, 0, 0, 0},
10132         {0x1D, 0, 0, 0, 0},
10133         {0x1E, 0, 0, 0, 0},
10134         {0x1F, 0, 0, 0, 0},
10135         {0x20, 0, 0, 0, 0},
10136         {0x21, 0x88, 0x88, 0, 0},
10137         {0x22, 0x88, 0x88, 0, 0},
10138         {0x23, 0x88, 0x88, 0, 0},
10139         {0x24, 0x88, 0x88, 0, 0},
10140         {0x25, 0xc, 0xc, 0, 0},
10141         {0x26, 0, 0, 0, 0},
10142         {0x27, 0x3, 0x3, 0, 0},
10143         {0x28, 0, 0, 0, 0},
10144         {0x29, 0x3, 0x3, 0, 0},
10145         {0x2A, 0x37, 0x37, 0, 0},
10146         {0x2B, 0x3, 0x3, 0, 0},
10147         {0x2C, 0, 0, 0, 0},
10148         {0x2D, 0, 0, 0, 0},
10149         {0x2E, 0x1, 0x1, 0, 0},
10150         {0x2F, 0x1, 0x1, 0, 0},
10151         {0x30, 0, 0, 0, 0},
10152         {0x31, 0, 0, 0, 0},
10153         {0x32, 0, 0, 0, 0},
10154         {0x33, 0x11, 0x11, 0, 0},
10155         {0x34, 0xee, 0xee, 1, 1},
10156         {0x35, 0, 0, 0, 0},
10157         {0x36, 0, 0, 0, 0},
10158         {0x37, 0x3, 0x3, 0, 0},
10159         {0x38, 0x50, 0x50, 1, 1},
10160         {0x39, 0, 0, 0, 0},
10161         {0x3A, 0x50, 0x50, 1, 1},
10162         {0x3B, 0, 0, 0, 0},
10163         {0x3C, 0x6e, 0x6e, 0, 0},
10164         {0x3D, 0xf0, 0xf0, 1, 1},
10165         {0x3E, 0, 0, 0, 0},
10166         {0x3F, 0, 0, 0, 0},
10167         {0x40, 0, 0, 0, 0},
10168         {0x41, 0x3, 0x3, 0, 0},
10169         {0x42, 0x3, 0x3, 0, 0},
10170         {0x43, 0, 0, 0, 0},
10171         {0x44, 0x1e, 0x1e, 0, 0},
10172         {0x45, 0, 0, 0, 0},
10173         {0x46, 0x6e, 0x6e, 0, 0},
10174         {0x47, 0xf0, 0xf0, 1, 1},
10175         {0x48, 0, 0, 0, 0},
10176         {0x49, 0x2, 0x2, 0, 0},
10177         {0x4A, 0xff, 0xff, 1, 1},
10178         {0x4B, 0xc, 0xc, 0, 0},
10179         {0x4C, 0, 0, 0, 0},
10180         {0x4D, 0x38, 0x38, 0, 0},
10181         {0x4E, 0x70, 0x70, 1, 1},
10182         {0x4F, 0x2, 0x2, 0, 0},
10183         {0x50, 0x88, 0x88, 0, 0},
10184         {0x51, 0xc, 0xc, 0, 0},
10185         {0x52, 0, 0, 0, 0},
10186         {0x53, 0x8, 0x8, 0, 0},
10187         {0x54, 0x70, 0x70, 1, 1},
10188         {0x55, 0x2, 0x2, 0, 0},
10189         {0x56, 0xff, 0xff, 1, 1},
10190         {0x57, 0, 0, 0, 0},
10191         {0x58, 0x83, 0x83, 0, 0},
10192         {0x59, 0x77, 0x77, 1, 1},
10193         {0x5A, 0, 0, 0, 0},
10194         {0x5B, 0x2, 0x2, 0, 0},
10195         {0x5C, 0x88, 0x88, 0, 0},
10196         {0x5D, 0, 0, 0, 0},
10197         {0x5E, 0x8, 0x8, 0, 0},
10198         {0x5F, 0x77, 0x77, 1, 1},
10199         {0x60, 0x1, 0x1, 0, 0},
10200         {0x61, 0, 0, 0, 0},
10201         {0x62, 0x7, 0x7, 0, 0},
10202         {0x63, 0, 0, 0, 0},
10203         {0x64, 0x7, 0x7, 0, 0},
10204         {0x65, 0, 0, 0, 0},
10205         {0x66, 0, 0, 0, 0},
10206         {0x67, 0, 0, 1, 1},
10207         {0x68, 0, 0, 0, 0},
10208         {0x69, 0xa, 0xa, 0, 0},
10209         {0x6A, 0, 0, 0, 0},
10210         {0x6B, 0, 0, 0, 0},
10211         {0x6C, 0, 0, 0, 0},
10212         {0x6D, 0, 0, 0, 0},
10213         {0x6E, 0, 0, 0, 0},
10214         {0x6F, 0, 0, 0, 0},
10215         {0x70, 0, 0, 0, 0},
10216         {0x71, 0x2, 0x2, 0, 0},
10217         {0x72, 0, 0, 0, 0},
10218         {0x73, 0, 0, 0, 0},
10219         {0x74, 0xe, 0xe, 0, 0},
10220         {0x75, 0xe, 0xe, 0, 0},
10221         {0x76, 0xe, 0xe, 0, 0},
10222         {0x77, 0x13, 0x13, 0, 0},
10223         {0x78, 0x13, 0x13, 0, 0},
10224         {0x79, 0x1b, 0x1b, 0, 0},
10225         {0x7A, 0x1b, 0x1b, 0, 0},
10226         {0x7B, 0x55, 0x55, 0, 0},
10227         {0x7C, 0x5b, 0x5b, 0, 0},
10228         {0x7D, 0x30, 0x30, 1, 1},
10229         {0x7E, 0, 0, 0, 0},
10230         {0x7F, 0, 0, 0, 0},
10231         {0x80, 0, 0, 0, 0},
10232         {0x81, 0, 0, 0, 0},
10233         {0x82, 0, 0, 0, 0},
10234         {0x83, 0, 0, 0, 0},
10235         {0x84, 0, 0, 0, 0},
10236         {0x85, 0, 0, 0, 0},
10237         {0x86, 0, 0, 0, 0},
10238         {0x87, 0, 0, 0, 0},
10239         {0x88, 0, 0, 0, 0},
10240         {0x89, 0, 0, 0, 0},
10241         {0x8A, 0, 0, 0, 0},
10242         {0x8B, 0, 0, 0, 0},
10243         {0x8C, 0, 0, 0, 0},
10244         {0x8D, 0, 0, 0, 0},
10245         {0x8E, 0, 0, 0, 0},
10246         {0x8F, 0, 0, 0, 0},
10247         {0x90, 0, 0, 0, 0},
10248         {0x91, 0, 0, 0, 0},
10249         {0x92, 0, 0, 0, 0},
10250         {0x93, 0x70, 0x70, 0, 0},
10251         {0x94, 0x70, 0x70, 0, 0},
10252         {0x95, 0x71, 0x71, 1, 1},
10253         {0x96, 0x71, 0x71, 1, 1},
10254         {0x97, 0x72, 0x72, 1, 1},
10255         {0x98, 0x73, 0x73, 1, 1},
10256         {0x99, 0x74, 0x74, 1, 1},
10257         {0x9A, 0x75, 0x75, 1, 1},
10258         {0xFFFF, 0, 0, 0, 0},
10259 };
10260
10261 radio_regs_t regs_RX_2056_rev7[] = {
10262         {0x02, 0, 0, 0, 0},
10263         {0x03, 0, 0, 0, 0},
10264         {0x04, 0, 0, 0, 0},
10265         {0x05, 0, 0, 0, 0},
10266         {0x06, 0, 0, 0, 0},
10267         {0x07, 0, 0, 0, 0},
10268         {0x08, 0, 0, 0, 0},
10269         {0x09, 0, 0, 0, 0},
10270         {0x0A, 0, 0, 0, 0},
10271         {0x0B, 0, 0, 0, 0},
10272         {0x0C, 0, 0, 0, 0},
10273         {0x0D, 0, 0, 0, 0},
10274         {0x0E, 0, 0, 0, 0},
10275         {0x0F, 0, 0, 0, 0},
10276         {0x10, 0, 0, 0, 0},
10277         {0x11, 0, 0, 0, 0},
10278         {0x12, 0, 0, 0, 0},
10279         {0x13, 0, 0, 0, 0},
10280         {0x14, 0, 0, 0, 0},
10281         {0x15, 0, 0, 0, 0},
10282         {0x16, 0, 0, 0, 0},
10283         {0x17, 0, 0, 0, 0},
10284         {0x18, 0, 0, 0, 0},
10285         {0x19, 0, 0, 0, 0},
10286         {0x1A, 0, 0, 0, 0},
10287         {0x1B, 0, 0, 0, 0},
10288         {0x1C, 0, 0, 0, 0},
10289         {0x1D, 0, 0, 0, 0},
10290         {0x1E, 0, 0, 0, 0},
10291         {0x1F, 0, 0, 0, 0},
10292         {0x20, 0x3, 0x3, 0, 0},
10293         {0x21, 0, 0, 0, 0},
10294         {0x22, 0, 0, 0, 0},
10295         {0x23, 0x90, 0x90, 0, 0},
10296         {0x24, 0x55, 0x55, 0, 0},
10297         {0x25, 0x15, 0x15, 0, 0},
10298         {0x26, 0x5, 0x5, 0, 0},
10299         {0x27, 0x15, 0x15, 0, 0},
10300         {0x28, 0x5, 0x5, 0, 0},
10301         {0x29, 0x20, 0x20, 0, 0},
10302         {0x2A, 0x11, 0x11, 0, 0},
10303         {0x2B, 0x90, 0x90, 0, 0},
10304         {0x2C, 0, 0, 0, 0},
10305         {0x2D, 0x88, 0x88, 0, 0},
10306         {0x2E, 0x32, 0x32, 0, 0},
10307         {0x2F, 0x77, 0x77, 0, 0},
10308         {0x30, 0x17, 0x17, 1, 1},
10309         {0x31, 0xff, 0xff, 1, 1},
10310         {0x32, 0x20, 0x20, 0, 0},
10311         {0x33, 0, 0, 0, 0},
10312         {0x34, 0x88, 0x88, 0, 0},
10313         {0x35, 0x32, 0x32, 0, 0},
10314         {0x36, 0x77, 0x77, 0, 0},
10315         {0x37, 0x17, 0x17, 1, 1},
10316         {0x38, 0xf0, 0xf0, 1, 1},
10317         {0x39, 0x20, 0x20, 0, 0},
10318         {0x3A, 0x8, 0x8, 0, 0},
10319         {0x3B, 0x55, 0x55, 1, 1},
10320         {0x3C, 0, 0, 0, 0},
10321         {0x3D, 0x88, 0x88, 1, 1},
10322         {0x3E, 0, 0, 0, 0},
10323         {0x3F, 0, 0, 1, 1},
10324         {0x40, 0x7, 0x7, 1, 1},
10325         {0x41, 0x6, 0x6, 0, 0},
10326         {0x42, 0x4, 0x4, 0, 0},
10327         {0x43, 0, 0, 0, 0},
10328         {0x44, 0x8, 0x8, 0, 0},
10329         {0x45, 0x55, 0x55, 1, 1},
10330         {0x46, 0, 0, 0, 0},
10331         {0x47, 0x11, 0x11, 0, 0},
10332         {0x48, 0, 0, 0, 0},
10333         {0x49, 0, 0, 1, 1},
10334         {0x4A, 0x7, 0x7, 0, 0},
10335         {0x4B, 0x6, 0x6, 0, 0},
10336         {0x4C, 0x4, 0x4, 0, 0},
10337         {0x4D, 0, 0, 0, 0},
10338         {0x4E, 0, 0, 0, 0},
10339         {0x4F, 0x26, 0x26, 1, 1},
10340         {0x50, 0x26, 0x26, 1, 1},
10341         {0x51, 0xf, 0xf, 1, 1},
10342         {0x52, 0xf, 0xf, 1, 1},
10343         {0x53, 0x44, 0x44, 0, 0},
10344         {0x54, 0, 0, 0, 0},
10345         {0x55, 0, 0, 0, 0},
10346         {0x56, 0x8, 0x8, 0, 0},
10347         {0x57, 0x8, 0x8, 0, 0},
10348         {0x58, 0x7, 0x7, 0, 0},
10349         {0x59, 0x22, 0x22, 0, 0},
10350         {0x5A, 0x22, 0x22, 0, 0},
10351         {0x5B, 0x2, 0x2, 0, 0},
10352         {0x5C, 0x4, 0x4, 1, 1},
10353         {0x5D, 0x7, 0x7, 0, 0},
10354         {0x5E, 0x55, 0x55, 0, 0},
10355         {0x5F, 0x23, 0x23, 0, 0},
10356         {0x60, 0x41, 0x41, 0, 0},
10357         {0x61, 0x1, 0x1, 0, 0},
10358         {0x62, 0xa, 0xa, 0, 0},
10359         {0x63, 0, 0, 0, 0},
10360         {0x64, 0, 0, 0, 0},
10361         {0x65, 0, 0, 0, 0},
10362         {0x66, 0, 0, 0, 0},
10363         {0x67, 0, 0, 0, 0},
10364         {0x68, 0, 0, 0, 0},
10365         {0x69, 0, 0, 0, 0},
10366         {0x6A, 0, 0, 0, 0},
10367         {0x6B, 0xc, 0xc, 0, 0},
10368         {0x6C, 0, 0, 0, 0},
10369         {0x6D, 0, 0, 0, 0},
10370         {0x6E, 0, 0, 0, 0},
10371         {0x6F, 0, 0, 0, 0},
10372         {0x70, 0, 0, 0, 0},
10373         {0x71, 0, 0, 0, 0},
10374         {0x72, 0x22, 0x22, 0, 0},
10375         {0x73, 0x22, 0x22, 0, 0},
10376         {0x74, 0, 0, 1, 1},
10377         {0x75, 0xa, 0xa, 0, 0},
10378         {0x76, 0x1, 0x1, 0, 0},
10379         {0x77, 0x22, 0x22, 0, 0},
10380         {0x78, 0x30, 0x30, 0, 0},
10381         {0x79, 0, 0, 0, 0},
10382         {0x7A, 0, 0, 0, 0},
10383         {0x7B, 0, 0, 0, 0},
10384         {0x7C, 0, 0, 0, 0},
10385         {0x7D, 0, 0, 0, 0},
10386         {0x7E, 0, 0, 0, 0},
10387         {0x7F, 0, 0, 0, 0},
10388         {0x80, 0, 0, 0, 0},
10389         {0x81, 0, 0, 0, 0},
10390         {0x82, 0, 0, 0, 0},
10391         {0x83, 0, 0, 0, 0},
10392         {0x84, 0, 0, 0, 0},
10393         {0x85, 0, 0, 0, 0},
10394         {0x86, 0, 0, 0, 0},
10395         {0x87, 0, 0, 0, 0},
10396         {0x88, 0, 0, 0, 0},
10397         {0x89, 0, 0, 0, 0},
10398         {0x8A, 0, 0, 0, 0},
10399         {0x8B, 0, 0, 0, 0},
10400         {0x8C, 0, 0, 0, 0},
10401         {0x8D, 0, 0, 0, 0},
10402         {0x8E, 0, 0, 0, 0},
10403         {0x8F, 0, 0, 0, 0},
10404         {0x90, 0, 0, 0, 0},
10405         {0x91, 0, 0, 0, 0},
10406         {0x92, 0, 0, 0, 0},
10407         {0x93, 0, 0, 0, 0},
10408         {0x94, 0, 0, 0, 0},
10409         {0xFFFF, 0, 0, 0, 0},
10410 };
10411
10412 radio_regs_t regs_SYN_2056_rev8[] = {
10413         {0x02, 0, 0, 0, 0},
10414         {0x03, 0, 0, 0, 0},
10415         {0x04, 0, 0, 0, 0},
10416         {0x05, 0, 0, 0, 0},
10417         {0x06, 0, 0, 0, 0},
10418         {0x07, 0, 0, 0, 0},
10419         {0x08, 0, 0, 0, 0},
10420         {0x09, 0x1, 0x1, 0, 0},
10421         {0x0A, 0, 0, 0, 0},
10422         {0x0B, 0, 0, 0, 0},
10423         {0x0C, 0, 0, 0, 0},
10424         {0x0D, 0, 0, 0, 0},
10425         {0x0E, 0, 0, 0, 0},
10426         {0x0F, 0, 0, 0, 0},
10427         {0x10, 0, 0, 0, 0},
10428         {0x11, 0, 0, 0, 0},
10429         {0x12, 0, 0, 0, 0},
10430         {0x13, 0, 0, 0, 0},
10431         {0x14, 0, 0, 0, 0},
10432         {0x15, 0, 0, 0, 0},
10433         {0x16, 0, 0, 0, 0},
10434         {0x17, 0, 0, 0, 0},
10435         {0x18, 0, 0, 0, 0},
10436         {0x19, 0, 0, 0, 0},
10437         {0x1A, 0, 0, 0, 0},
10438         {0x1B, 0, 0, 0, 0},
10439         {0x1C, 0, 0, 0, 0},
10440         {0x1D, 0, 0, 0, 0},
10441         {0x1E, 0, 0, 0, 0},
10442         {0x1F, 0, 0, 0, 0},
10443         {0x20, 0, 0, 0, 0},
10444         {0x21, 0, 0, 0, 0},
10445         {0x22, 0x60, 0x60, 0, 0},
10446         {0x23, 0x6, 0x6, 0, 0},
10447         {0x24, 0xc, 0xc, 0, 0},
10448         {0x25, 0, 0, 0, 0},
10449         {0x26, 0, 0, 0, 0},
10450         {0x27, 0, 0, 0, 0},
10451         {0x28, 0x1, 0x1, 0, 0},
10452         {0x29, 0, 0, 0, 0},
10453         {0x2A, 0, 0, 0, 0},
10454         {0x2B, 0, 0, 0, 0},
10455         {0x2C, 0, 0, 0, 0},
10456         {0x2D, 0, 0, 0, 0},
10457         {0x2E, 0, 0, 0, 0},
10458         {0x2F, 0x1f, 0x1f, 0, 0},
10459         {0x30, 0x15, 0x15, 0, 0},
10460         {0x31, 0xf, 0xf, 0, 0},
10461         {0x32, 0, 0, 0, 0},
10462         {0x33, 0, 0, 0, 0},
10463         {0x34, 0, 0, 0, 0},
10464         {0x35, 0, 0, 0, 0},
10465         {0x36, 0, 0, 0, 0},
10466         {0x37, 0, 0, 0, 0},
10467         {0x38, 0, 0, 0, 0},
10468         {0x39, 0, 0, 0, 0},
10469         {0x3A, 0, 0, 0, 0},
10470         {0x3B, 0, 0, 0, 0},
10471         {0x3C, 0x13, 0x13, 0, 0},
10472         {0x3D, 0xf, 0xf, 0, 0},
10473         {0x3E, 0x18, 0x18, 0, 0},
10474         {0x3F, 0, 0, 0, 0},
10475         {0x40, 0, 0, 0, 0},
10476         {0x41, 0x20, 0x20, 0, 0},
10477         {0x42, 0x20, 0x20, 0, 0},
10478         {0x43, 0, 0, 0, 0},
10479         {0x44, 0x77, 0x77, 0, 0},
10480         {0x45, 0x7, 0x7, 0, 0},
10481         {0x46, 0x1, 0x1, 0, 0},
10482         {0x47, 0x4, 0x4, 0, 0},
10483         {0x48, 0xf, 0xf, 0, 0},
10484         {0x49, 0x30, 0x30, 0, 0},
10485         {0x4A, 0x32, 0x32, 0, 0},
10486         {0x4B, 0xd, 0xd, 0, 0},
10487         {0x4C, 0xd, 0xd, 0, 0},
10488         {0x4D, 0x4, 0x4, 0, 0},
10489         {0x4E, 0x6, 0x6, 0, 0},
10490         {0x4F, 0x1, 0x1, 0, 0},
10491         {0x50, 0x1c, 0x1c, 0, 0},
10492         {0x51, 0x2, 0x2, 0, 0},
10493         {0x52, 0x2, 0x2, 0, 0},
10494         {0x53, 0xf7, 0xf7, 1, 1},
10495         {0x54, 0xb4, 0xb4, 0, 0},
10496         {0x55, 0xd2, 0xd2, 0, 0},
10497         {0x56, 0, 0, 0, 0},
10498         {0x57, 0, 0, 0, 0},
10499         {0x58, 0x4, 0x4, 0, 0},
10500         {0x59, 0x96, 0x96, 0, 0},
10501         {0x5A, 0x3e, 0x3e, 0, 0},
10502         {0x5B, 0x3e, 0x3e, 0, 0},
10503         {0x5C, 0x13, 0x13, 0, 0},
10504         {0x5D, 0x2, 0x2, 0, 0},
10505         {0x5E, 0, 0, 0, 0},
10506         {0x5F, 0x7, 0x7, 0, 0},
10507         {0x60, 0x7, 0x7, 1, 1},
10508         {0x61, 0x8, 0x8, 0, 0},
10509         {0x62, 0x3, 0x3, 0, 0},
10510         {0x63, 0, 0, 0, 0},
10511         {0x64, 0, 0, 0, 0},
10512         {0x65, 0, 0, 0, 0},
10513         {0x66, 0, 0, 0, 0},
10514         {0x67, 0, 0, 0, 0},
10515         {0x68, 0x40, 0x40, 0, 0},
10516         {0x69, 0, 0, 0, 0},
10517         {0x6A, 0, 0, 0, 0},
10518         {0x6B, 0, 0, 0, 0},
10519         {0x6C, 0, 0, 0, 0},
10520         {0x6D, 0x1, 0x1, 0, 0},
10521         {0x6E, 0, 0, 0, 0},
10522         {0x6F, 0, 0, 0, 0},
10523         {0x70, 0x60, 0x60, 0, 0},
10524         {0x71, 0x66, 0x66, 0, 0},
10525         {0x72, 0xc, 0xc, 0, 0},
10526         {0x73, 0x66, 0x66, 0, 0},
10527         {0x74, 0x8f, 0x8f, 1, 1},
10528         {0x75, 0, 0, 0, 0},
10529         {0x76, 0xcc, 0xcc, 0, 0},
10530         {0x77, 0x1, 0x1, 0, 0},
10531         {0x78, 0x66, 0x66, 0, 0},
10532         {0x79, 0x66, 0x66, 0, 0},
10533         {0x7A, 0, 0, 0, 0},
10534         {0x7B, 0, 0, 0, 0},
10535         {0x7C, 0, 0, 0, 0},
10536         {0x7D, 0, 0, 0, 0},
10537         {0x7E, 0, 0, 0, 0},
10538         {0x7F, 0, 0, 0, 0},
10539         {0x80, 0, 0, 0, 0},
10540         {0x81, 0, 0, 0, 0},
10541         {0x82, 0, 0, 0, 0},
10542         {0x83, 0, 0, 0, 0},
10543         {0x84, 0, 0, 0, 0},
10544         {0x85, 0xff, 0xff, 0, 0},
10545         {0x86, 0, 0, 0, 0},
10546         {0x87, 0, 0, 0, 0},
10547         {0x88, 0, 0, 0, 0},
10548         {0x89, 0, 0, 0, 0},
10549         {0x8A, 0, 0, 0, 0},
10550         {0x8B, 0, 0, 0, 0},
10551         {0x8C, 0, 0, 0, 0},
10552         {0x8D, 0, 0, 0, 0},
10553         {0x8E, 0, 0, 0, 0},
10554         {0x8F, 0, 0, 0, 0},
10555         {0x90, 0, 0, 0, 0},
10556         {0x91, 0, 0, 0, 0},
10557         {0x92, 0, 0, 0, 0},
10558         {0x93, 0, 0, 0, 0},
10559         {0x94, 0, 0, 0, 0},
10560         {0x95, 0, 0, 0, 0},
10561         {0x96, 0, 0, 0, 0},
10562         {0x97, 0, 0, 0, 0},
10563         {0x98, 0, 0, 0, 0},
10564         {0x99, 0, 0, 0, 0},
10565         {0x9A, 0, 0, 0, 0},
10566         {0x9B, 0, 0, 0, 0},
10567         {0x9C, 0, 0, 0, 0},
10568         {0x9D, 0, 0, 0, 0},
10569         {0x9E, 0, 0, 0, 0},
10570         {0x9F, 0x6, 0x6, 0, 0},
10571         {0xA0, 0x66, 0x66, 0, 0},
10572         {0xA1, 0x66, 0x66, 0, 0},
10573         {0xA2, 0x66, 0x66, 0, 0},
10574         {0xA3, 0x66, 0x66, 0, 0},
10575         {0xA4, 0x66, 0x66, 0, 0},
10576         {0xA5, 0x66, 0x66, 0, 0},
10577         {0xA6, 0x66, 0x66, 0, 0},
10578         {0xA7, 0x66, 0x66, 0, 0},
10579         {0xA8, 0x66, 0x66, 0, 0},
10580         {0xA9, 0x66, 0x66, 0, 0},
10581         {0xAA, 0x66, 0x66, 0, 0},
10582         {0xAB, 0x66, 0x66, 0, 0},
10583         {0xAC, 0x66, 0x66, 0, 0},
10584         {0xAD, 0x66, 0x66, 0, 0},
10585         {0xAE, 0x66, 0x66, 0, 0},
10586         {0xAF, 0x66, 0x66, 0, 0},
10587         {0xB0, 0x66, 0x66, 0, 0},
10588         {0xB1, 0x66, 0x66, 0, 0},
10589         {0xB2, 0x66, 0x66, 0, 0},
10590         {0xB3, 0xa, 0xa, 0, 0},
10591         {0xB4, 0, 0, 0, 0},
10592         {0xB5, 0, 0, 0, 0},
10593         {0xB6, 0, 0, 0, 0},
10594         {0xFFFF, 0, 0, 0, 0},
10595 };
10596
10597 radio_regs_t regs_TX_2056_rev8[] = {
10598         {0x02, 0, 0, 0, 0},
10599         {0x03, 0, 0, 0, 0},
10600         {0x04, 0, 0, 0, 0},
10601         {0x05, 0, 0, 0, 0},
10602         {0x06, 0, 0, 0, 0},
10603         {0x07, 0, 0, 0, 0},
10604         {0x08, 0, 0, 0, 0},
10605         {0x09, 0, 0, 0, 0},
10606         {0x0A, 0, 0, 0, 0},
10607         {0x0B, 0, 0, 0, 0},
10608         {0x0C, 0, 0, 0, 0},
10609         {0x0D, 0, 0, 0, 0},
10610         {0x0E, 0, 0, 0, 0},
10611         {0x0F, 0, 0, 0, 0},
10612         {0x10, 0, 0, 0, 0},
10613         {0x11, 0, 0, 0, 0},
10614         {0x12, 0, 0, 0, 0},
10615         {0x13, 0, 0, 0, 0},
10616         {0x14, 0, 0, 0, 0},
10617         {0x15, 0, 0, 0, 0},
10618         {0x16, 0, 0, 0, 0},
10619         {0x17, 0, 0, 0, 0},
10620         {0x18, 0, 0, 0, 0},
10621         {0x19, 0, 0, 0, 0},
10622         {0x1A, 0, 0, 0, 0},
10623         {0x1B, 0, 0, 0, 0},
10624         {0x1C, 0, 0, 0, 0},
10625         {0x1D, 0, 0, 0, 0},
10626         {0x1E, 0, 0, 0, 0},
10627         {0x1F, 0, 0, 0, 0},
10628         {0x20, 0, 0, 0, 0},
10629         {0x21, 0x88, 0x88, 0, 0},
10630         {0x22, 0x88, 0x88, 0, 0},
10631         {0x23, 0x88, 0x88, 0, 0},
10632         {0x24, 0x88, 0x88, 0, 0},
10633         {0x25, 0xc, 0xc, 0, 0},
10634         {0x26, 0, 0, 0, 0},
10635         {0x27, 0x3, 0x3, 0, 0},
10636         {0x28, 0, 0, 0, 0},
10637         {0x29, 0x3, 0x3, 0, 0},
10638         {0x2A, 0x37, 0x37, 0, 0},
10639         {0x2B, 0x3, 0x3, 0, 0},
10640         {0x2C, 0, 0, 0, 0},
10641         {0x2D, 0, 0, 0, 0},
10642         {0x2E, 0x1, 0x1, 0, 0},
10643         {0x2F, 0x1, 0x1, 0, 0},
10644         {0x30, 0, 0, 0, 0},
10645         {0x31, 0, 0, 0, 0},
10646         {0x32, 0, 0, 0, 0},
10647         {0x33, 0x11, 0x11, 0, 0},
10648         {0x34, 0xee, 0xee, 1, 1},
10649         {0x35, 0, 0, 0, 0},
10650         {0x36, 0, 0, 0, 0},
10651         {0x37, 0x3, 0x3, 0, 0},
10652         {0x38, 0x50, 0x50, 1, 1},
10653         {0x39, 0, 0, 0, 0},
10654         {0x3A, 0x50, 0x50, 1, 1},
10655         {0x3B, 0, 0, 0, 0},
10656         {0x3C, 0x6e, 0x6e, 0, 0},
10657         {0x3D, 0xf0, 0xf0, 1, 1},
10658         {0x3E, 0, 0, 0, 0},
10659         {0x3F, 0, 0, 0, 0},
10660         {0x40, 0, 0, 0, 0},
10661         {0x41, 0x3, 0x3, 0, 0},
10662         {0x42, 0x3, 0x3, 0, 0},
10663         {0x43, 0, 0, 0, 0},
10664         {0x44, 0x1e, 0x1e, 0, 0},
10665         {0x45, 0, 0, 0, 0},
10666         {0x46, 0x6e, 0x6e, 0, 0},
10667         {0x47, 0xf0, 0xf0, 1, 1},
10668         {0x48, 0, 0, 0, 0},
10669         {0x49, 0x2, 0x2, 0, 0},
10670         {0x4A, 0xff, 0xff, 1, 1},
10671         {0x4B, 0xc, 0xc, 0, 0},
10672         {0x4C, 0, 0, 0, 0},
10673         {0x4D, 0x38, 0x38, 0, 0},
10674         {0x4E, 0x70, 0x70, 1, 1},
10675         {0x4F, 0x2, 0x2, 0, 0},
10676         {0x50, 0x88, 0x88, 0, 0},
10677         {0x51, 0xc, 0xc, 0, 0},
10678         {0x52, 0, 0, 0, 0},
10679         {0x53, 0x8, 0x8, 0, 0},
10680         {0x54, 0x70, 0x70, 1, 1},
10681         {0x55, 0x2, 0x2, 0, 0},
10682         {0x56, 0xff, 0xff, 1, 1},
10683         {0x57, 0, 0, 0, 0},
10684         {0x58, 0x83, 0x83, 0, 0},
10685         {0x59, 0x77, 0x77, 1, 1},
10686         {0x5A, 0, 0, 0, 0},
10687         {0x5B, 0x2, 0x2, 0, 0},
10688         {0x5C, 0x88, 0x88, 0, 0},
10689         {0x5D, 0, 0, 0, 0},
10690         {0x5E, 0x8, 0x8, 0, 0},
10691         {0x5F, 0x77, 0x77, 1, 1},
10692         {0x60, 0x1, 0x1, 0, 0},
10693         {0x61, 0, 0, 0, 0},
10694         {0x62, 0x7, 0x7, 0, 0},
10695         {0x63, 0, 0, 0, 0},
10696         {0x64, 0x7, 0x7, 0, 0},
10697         {0x65, 0, 0, 0, 0},
10698         {0x66, 0, 0, 0, 0},
10699         {0x67, 0, 0, 1, 1},
10700         {0x68, 0, 0, 0, 0},
10701         {0x69, 0xa, 0xa, 0, 0},
10702         {0x6A, 0, 0, 0, 0},
10703         {0x6B, 0, 0, 0, 0},
10704         {0x6C, 0, 0, 0, 0},
10705         {0x6D, 0, 0, 0, 0},
10706         {0x6E, 0, 0, 0, 0},
10707         {0x6F, 0, 0, 0, 0},
10708         {0x70, 0, 0, 0, 0},
10709         {0x71, 0x2, 0x2, 0, 0},
10710         {0x72, 0, 0, 0, 0},
10711         {0x73, 0, 0, 0, 0},
10712         {0x74, 0xe, 0xe, 0, 0},
10713         {0x75, 0xe, 0xe, 0, 0},
10714         {0x76, 0xe, 0xe, 0, 0},
10715         {0x77, 0x13, 0x13, 0, 0},
10716         {0x78, 0x13, 0x13, 0, 0},
10717         {0x79, 0x1b, 0x1b, 0, 0},
10718         {0x7A, 0x1b, 0x1b, 0, 0},
10719         {0x7B, 0x55, 0x55, 0, 0},
10720         {0x7C, 0x5b, 0x5b, 0, 0},
10721         {0x7D, 0x30, 0x30, 1, 1},
10722         {0x7E, 0, 0, 0, 0},
10723         {0x7F, 0, 0, 0, 0},
10724         {0x80, 0, 0, 0, 0},
10725         {0x81, 0, 0, 0, 0},
10726         {0x82, 0, 0, 0, 0},
10727         {0x83, 0, 0, 0, 0},
10728         {0x84, 0, 0, 0, 0},
10729         {0x85, 0, 0, 0, 0},
10730         {0x86, 0, 0, 0, 0},
10731         {0x87, 0, 0, 0, 0},
10732         {0x88, 0, 0, 0, 0},
10733         {0x89, 0, 0, 0, 0},
10734         {0x8A, 0, 0, 0, 0},
10735         {0x8B, 0, 0, 0, 0},
10736         {0x8C, 0, 0, 0, 0},
10737         {0x8D, 0, 0, 0, 0},
10738         {0x8E, 0, 0, 0, 0},
10739         {0x8F, 0, 0, 0, 0},
10740         {0x90, 0, 0, 0, 0},
10741         {0x91, 0, 0, 0, 0},
10742         {0x92, 0, 0, 0, 0},
10743         {0x93, 0x70, 0x70, 0, 0},
10744         {0x94, 0x70, 0x70, 0, 0},
10745         {0x95, 0x70, 0x70, 0, 0},
10746         {0x96, 0x70, 0x70, 0, 0},
10747         {0x97, 0x70, 0x70, 0, 0},
10748         {0x98, 0x70, 0x70, 0, 0},
10749         {0x99, 0x70, 0x70, 0, 0},
10750         {0x9A, 0x70, 0x70, 0, 0},
10751         {0xFFFF, 0, 0, 0, 0},
10752 };
10753
10754 radio_regs_t regs_RX_2056_rev8[] = {
10755         {0x02, 0, 0, 0, 0},
10756         {0x03, 0, 0, 0, 0},
10757         {0x04, 0, 0, 0, 0},
10758         {0x05, 0, 0, 0, 0},
10759         {0x06, 0, 0, 0, 0},
10760         {0x07, 0, 0, 0, 0},
10761         {0x08, 0, 0, 0, 0},
10762         {0x09, 0, 0, 0, 0},
10763         {0x0A, 0, 0, 0, 0},
10764         {0x0B, 0, 0, 0, 0},
10765         {0x0C, 0, 0, 0, 0},
10766         {0x0D, 0, 0, 0, 0},
10767         {0x0E, 0, 0, 0, 0},
10768         {0x0F, 0, 0, 0, 0},
10769         {0x10, 0, 0, 0, 0},
10770         {0x11, 0, 0, 0, 0},
10771         {0x12, 0, 0, 0, 0},
10772         {0x13, 0, 0, 0, 0},
10773         {0x14, 0, 0, 0, 0},
10774         {0x15, 0, 0, 0, 0},
10775         {0x16, 0, 0, 0, 0},
10776         {0x17, 0, 0, 0, 0},
10777         {0x18, 0, 0, 0, 0},
10778         {0x19, 0, 0, 0, 0},
10779         {0x1A, 0, 0, 0, 0},
10780         {0x1B, 0, 0, 0, 0},
10781         {0x1C, 0, 0, 0, 0},
10782         {0x1D, 0, 0, 0, 0},
10783         {0x1E, 0, 0, 0, 0},
10784         {0x1F, 0, 0, 0, 0},
10785         {0x20, 0x3, 0x3, 0, 0},
10786         {0x21, 0, 0, 0, 0},
10787         {0x22, 0, 0, 0, 0},
10788         {0x23, 0x90, 0x90, 0, 0},
10789         {0x24, 0x55, 0x55, 0, 0},
10790         {0x25, 0x15, 0x15, 0, 0},
10791         {0x26, 0x5, 0x5, 0, 0},
10792         {0x27, 0x15, 0x15, 0, 0},
10793         {0x28, 0x5, 0x5, 0, 0},
10794         {0x29, 0x20, 0x20, 0, 0},
10795         {0x2A, 0x11, 0x11, 0, 0},
10796         {0x2B, 0x90, 0x90, 0, 0},
10797         {0x2C, 0, 0, 0, 0},
10798         {0x2D, 0x88, 0x88, 0, 0},
10799         {0x2E, 0x32, 0x32, 0, 0},
10800         {0x2F, 0x77, 0x77, 0, 0},
10801         {0x30, 0x17, 0x17, 1, 1},
10802         {0x31, 0xff, 0xff, 1, 1},
10803         {0x32, 0x20, 0x20, 0, 0},
10804         {0x33, 0, 0, 0, 0},
10805         {0x34, 0x88, 0x88, 0, 0},
10806         {0x35, 0x32, 0x32, 0, 0},
10807         {0x36, 0x77, 0x77, 0, 0},
10808         {0x37, 0x17, 0x17, 1, 1},
10809         {0x38, 0xf0, 0xf0, 1, 1},
10810         {0x39, 0x20, 0x20, 0, 0},
10811         {0x3A, 0x8, 0x8, 0, 0},
10812         {0x3B, 0x55, 0x55, 1, 1},
10813         {0x3C, 0, 0, 0, 0},
10814         {0x3D, 0x88, 0x88, 1, 1},
10815         {0x3E, 0, 0, 0, 0},
10816         {0x3F, 0x44, 0x44, 0, 0},
10817         {0x40, 0x7, 0x7, 1, 1},
10818         {0x41, 0x6, 0x6, 0, 0},
10819         {0x42, 0x4, 0x4, 0, 0},
10820         {0x43, 0, 0, 0, 0},
10821         {0x44, 0x8, 0x8, 0, 0},
10822         {0x45, 0x55, 0x55, 1, 1},
10823         {0x46, 0, 0, 0, 0},
10824         {0x47, 0x11, 0x11, 0, 0},
10825         {0x48, 0, 0, 0, 0},
10826         {0x49, 0x44, 0x44, 0, 0},
10827         {0x4A, 0x7, 0x7, 0, 0},
10828         {0x4B, 0x6, 0x6, 0, 0},
10829         {0x4C, 0x4, 0x4, 0, 0},
10830         {0x4D, 0, 0, 0, 0},
10831         {0x4E, 0, 0, 0, 0},
10832         {0x4F, 0x26, 0x26, 1, 1},
10833         {0x50, 0x26, 0x26, 1, 1},
10834         {0x51, 0xf, 0xf, 1, 1},
10835         {0x52, 0xf, 0xf, 1, 1},
10836         {0x53, 0x44, 0x44, 0, 0},
10837         {0x54, 0, 0, 0, 0},
10838         {0x55, 0, 0, 0, 0},
10839         {0x56, 0x8, 0x8, 0, 0},
10840         {0x57, 0x8, 0x8, 0, 0},
10841         {0x58, 0x7, 0x7, 0, 0},
10842         {0x59, 0x22, 0x22, 0, 0},
10843         {0x5A, 0x22, 0x22, 0, 0},
10844         {0x5B, 0x2, 0x2, 0, 0},
10845         {0x5C, 0x4, 0x4, 1, 1},
10846         {0x5D, 0x7, 0x7, 0, 0},
10847         {0x5E, 0x55, 0x55, 0, 0},
10848         {0x5F, 0x23, 0x23, 0, 0},
10849         {0x60, 0x41, 0x41, 0, 0},
10850         {0x61, 0x1, 0x1, 0, 0},
10851         {0x62, 0xa, 0xa, 0, 0},
10852         {0x63, 0, 0, 0, 0},
10853         {0x64, 0, 0, 0, 0},
10854         {0x65, 0, 0, 0, 0},
10855         {0x66, 0, 0, 0, 0},
10856         {0x67, 0, 0, 0, 0},
10857         {0x68, 0, 0, 0, 0},
10858         {0x69, 0, 0, 0, 0},
10859         {0x6A, 0, 0, 0, 0},
10860         {0x6B, 0xc, 0xc, 0, 0},
10861         {0x6C, 0, 0, 0, 0},
10862         {0x6D, 0, 0, 0, 0},
10863         {0x6E, 0, 0, 0, 0},
10864         {0x6F, 0, 0, 0, 0},
10865         {0x70, 0, 0, 0, 0},
10866         {0x71, 0, 0, 0, 0},
10867         {0x72, 0x22, 0x22, 0, 0},
10868         {0x73, 0x22, 0x22, 0, 0},
10869         {0x74, 0, 0, 1, 1},
10870         {0x75, 0xa, 0xa, 0, 0},
10871         {0x76, 0x1, 0x1, 0, 0},
10872         {0x77, 0x22, 0x22, 0, 0},
10873         {0x78, 0x30, 0x30, 0, 0},
10874         {0x79, 0, 0, 0, 0},
10875         {0x7A, 0, 0, 0, 0},
10876         {0x7B, 0, 0, 0, 0},
10877         {0x7C, 0, 0, 0, 0},
10878         {0x7D, 0x5, 0x5, 1, 1},
10879         {0x7E, 0, 0, 0, 0},
10880         {0x7F, 0, 0, 0, 0},
10881         {0x80, 0, 0, 0, 0},
10882         {0x81, 0, 0, 0, 0},
10883         {0x82, 0, 0, 0, 0},
10884         {0x83, 0, 0, 0, 0},
10885         {0x84, 0, 0, 0, 0},
10886         {0x85, 0, 0, 0, 0},
10887         {0x86, 0, 0, 0, 0},
10888         {0x87, 0, 0, 0, 0},
10889         {0x88, 0, 0, 0, 0},
10890         {0x89, 0, 0, 0, 0},
10891         {0x8A, 0, 0, 0, 0},
10892         {0x8B, 0, 0, 0, 0},
10893         {0x8C, 0, 0, 0, 0},
10894         {0x8D, 0, 0, 0, 0},
10895         {0x8E, 0, 0, 0, 0},
10896         {0x8F, 0, 0, 0, 0},
10897         {0x90, 0, 0, 0, 0},
10898         {0x91, 0, 0, 0, 0},
10899         {0x92, 0, 0, 0, 0},
10900         {0x93, 0, 0, 0, 0},
10901         {0x94, 0, 0, 0, 0},
10902         {0xFFFF, 0, 0, 0, 0},
10903 };
10904
10905 radio_regs_t regs_SYN_2056_rev11[] = {
10906         {0x02, 0, 0, 0, 0},
10907         {0x03, 0, 0, 0, 0},
10908         {0x04, 0, 0, 0, 0},
10909         {0x05, 0, 0, 0, 0},
10910         {0x06, 0, 0, 0, 0},
10911         {0x07, 0, 0, 0, 0},
10912         {0x08, 0, 0, 0, 0},
10913         {0x09, 0x1, 0x1, 0, 0},
10914         {0x0A, 0, 0, 0, 0},
10915         {0x0B, 0, 0, 0, 0},
10916         {0x0C, 0, 0, 0, 0},
10917         {0x0D, 0, 0, 0, 0},
10918         {0x0E, 0, 0, 0, 0},
10919         {0x0F, 0, 0, 0, 0},
10920         {0x10, 0, 0, 0, 0},
10921         {0x11, 0, 0, 0, 0},
10922         {0x12, 0, 0, 0, 0},
10923         {0x13, 0, 0, 0, 0},
10924         {0x14, 0, 0, 0, 0},
10925         {0x15, 0, 0, 0, 0},
10926         {0x16, 0, 0, 0, 0},
10927         {0x17, 0, 0, 0, 0},
10928         {0x18, 0, 0, 0, 0},
10929         {0x19, 0, 0, 0, 0},
10930         {0x1A, 0, 0, 0, 0},
10931         {0x1B, 0, 0, 0, 0},
10932         {0x1C, 0, 0, 0, 0},
10933         {0x1D, 0, 0, 0, 0},
10934         {0x1E, 0, 0, 0, 0},
10935         {0x1F, 0, 0, 0, 0},
10936         {0x20, 0, 0, 0, 0},
10937         {0x21, 0, 0, 0, 0},
10938         {0x22, 0x60, 0x60, 0, 0},
10939         {0x23, 0x6, 0x6, 0, 0},
10940         {0x24, 0xc, 0xc, 0, 0},
10941         {0x25, 0, 0, 0, 0},
10942         {0x26, 0, 0, 0, 0},
10943         {0x27, 0, 0, 0, 0},
10944         {0x28, 0x1, 0x1, 0, 0},
10945         {0x29, 0, 0, 0, 0},
10946         {0x2A, 0, 0, 0, 0},
10947         {0x2B, 0, 0, 0, 0},
10948         {0x2C, 0, 0, 0, 0},
10949         {0x2D, 0, 0, 0, 0},
10950         {0x2E, 0, 0, 0, 0},
10951         {0x2F, 0x1f, 0x1f, 0, 0},
10952         {0x30, 0x15, 0x15, 0, 0},
10953         {0x31, 0xf, 0xf, 0, 0},
10954         {0x32, 0, 0, 0, 0},
10955         {0x33, 0, 0, 0, 0},
10956         {0x34, 0, 0, 0, 0},
10957         {0x35, 0, 0, 0, 0},
10958         {0x36, 0, 0, 0, 0},
10959         {0x37, 0, 0, 0, 0},
10960         {0x38, 0, 0, 0, 0},
10961         {0x39, 0, 0, 0, 0},
10962         {0x3A, 0, 0, 0, 0},
10963         {0x3B, 0, 0, 0, 0},
10964         {0x3C, 0x13, 0x13, 0, 0},
10965         {0x3D, 0xf, 0xf, 0, 0},
10966         {0x3E, 0x18, 0x18, 0, 0},
10967         {0x3F, 0, 0, 0, 0},
10968         {0x40, 0, 0, 0, 0},
10969         {0x41, 0x20, 0x20, 0, 0},
10970         {0x42, 0x20, 0x20, 0, 0},
10971         {0x43, 0, 0, 0, 0},
10972         {0x44, 0x77, 0x77, 0, 0},
10973         {0x45, 0x7, 0x7, 0, 0},
10974         {0x46, 0x1, 0x1, 0, 0},
10975         {0x47, 0x6, 0x6, 1, 1},
10976         {0x48, 0xf, 0xf, 0, 0},
10977         {0x49, 0x3f, 0x3f, 1, 1},
10978         {0x4A, 0x32, 0x32, 0, 0},
10979         {0x4B, 0x6, 0x6, 1, 1},
10980         {0x4C, 0x6, 0x6, 1, 1},
10981         {0x4D, 0x4, 0x4, 0, 0},
10982         {0x4E, 0x2b, 0x2b, 1, 1},
10983         {0x4F, 0x1, 0x1, 0, 0},
10984         {0x50, 0x1c, 0x1c, 0, 0},
10985         {0x51, 0x2, 0x2, 0, 0},
10986         {0x52, 0x2, 0x2, 0, 0},
10987         {0x53, 0xf7, 0xf7, 1, 1},
10988         {0x54, 0xb4, 0xb4, 0, 0},
10989         {0x55, 0xd2, 0xd2, 0, 0},
10990         {0x56, 0, 0, 0, 0},
10991         {0x57, 0, 0, 0, 0},
10992         {0x58, 0x4, 0x4, 0, 0},
10993         {0x59, 0x96, 0x96, 0, 0},
10994         {0x5A, 0x3e, 0x3e, 0, 0},
10995         {0x5B, 0x3e, 0x3e, 0, 0},
10996         {0x5C, 0x13, 0x13, 0, 0},
10997         {0x5D, 0x2, 0x2, 0, 0},
10998         {0x5E, 0, 0, 0, 0},
10999         {0x5F, 0x7, 0x7, 0, 0},
11000         {0x60, 0x7, 0x7, 1, 1},
11001         {0x61, 0x8, 0x8, 0, 0},
11002         {0x62, 0x3, 0x3, 0, 0},
11003         {0x63, 0, 0, 0, 0},
11004         {0x64, 0, 0, 0, 0},
11005         {0x65, 0, 0, 0, 0},
11006         {0x66, 0, 0, 0, 0},
11007         {0x67, 0, 0, 0, 0},
11008         {0x68, 0x40, 0x40, 0, 0},
11009         {0x69, 0, 0, 0, 0},
11010         {0x6A, 0, 0, 0, 0},
11011         {0x6B, 0, 0, 0, 0},
11012         {0x6C, 0, 0, 0, 0},
11013         {0x6D, 0x1, 0x1, 0, 0},
11014         {0x6E, 0, 0, 0, 0},
11015         {0x6F, 0, 0, 0, 0},
11016         {0x70, 0x60, 0x60, 0, 0},
11017         {0x71, 0x66, 0x66, 0, 0},
11018         {0x72, 0xc, 0xc, 0, 0},
11019         {0x73, 0x66, 0x66, 0, 0},
11020         {0x74, 0x8f, 0x8f, 1, 1},
11021         {0x75, 0, 0, 0, 0},
11022         {0x76, 0xcc, 0xcc, 0, 0},
11023         {0x77, 0x1, 0x1, 0, 0},
11024         {0x78, 0x66, 0x66, 0, 0},
11025         {0x79, 0x66, 0x66, 0, 0},
11026         {0x7A, 0, 0, 0, 0},
11027         {0x7B, 0, 0, 0, 0},
11028         {0x7C, 0, 0, 0, 0},
11029         {0x7D, 0, 0, 0, 0},
11030         {0x7E, 0, 0, 0, 0},
11031         {0x7F, 0, 0, 0, 0},
11032         {0x80, 0, 0, 0, 0},
11033         {0x81, 0, 0, 0, 0},
11034         {0x82, 0, 0, 0, 0},
11035         {0x83, 0, 0, 0, 0},
11036         {0x84, 0, 0, 0, 0},
11037         {0x85, 0xff, 0xff, 0, 0},
11038         {0x86, 0, 0, 0, 0},
11039         {0x87, 0, 0, 0, 0},
11040         {0x88, 0, 0, 0, 0},
11041         {0x89, 0, 0, 0, 0},
11042         {0x8A, 0, 0, 0, 0},
11043         {0x8B, 0, 0, 0, 0},
11044         {0x8C, 0, 0, 0, 0},
11045         {0x8D, 0, 0, 0, 0},
11046         {0x8E, 0, 0, 0, 0},
11047         {0x8F, 0, 0, 0, 0},
11048         {0x90, 0, 0, 0, 0},
11049         {0x91, 0, 0, 0, 0},
11050         {0x92, 0, 0, 0, 0},
11051         {0x93, 0, 0, 0, 0},
11052         {0x94, 0, 0, 0, 0},
11053         {0x95, 0, 0, 0, 0},
11054         {0x96, 0, 0, 0, 0},
11055         {0x97, 0, 0, 0, 0},
11056         {0x98, 0, 0, 0, 0},
11057         {0x99, 0, 0, 0, 0},
11058         {0x9A, 0, 0, 0, 0},
11059         {0x9B, 0, 0, 0, 0},
11060         {0x9C, 0, 0, 0, 0},
11061         {0x9D, 0, 0, 0, 0},
11062         {0x9E, 0, 0, 0, 0},
11063         {0x9F, 0x6, 0x6, 0, 0},
11064         {0xA0, 0x66, 0x66, 0, 0},
11065         {0xA1, 0x66, 0x66, 0, 0},
11066         {0xA2, 0x66, 0x66, 0, 0},
11067         {0xA3, 0x66, 0x66, 0, 0},
11068         {0xA4, 0x66, 0x66, 0, 0},
11069         {0xA5, 0x66, 0x66, 0, 0},
11070         {0xA6, 0x66, 0x66, 0, 0},
11071         {0xA7, 0x66, 0x66, 0, 0},
11072         {0xA8, 0x66, 0x66, 0, 0},
11073         {0xA9, 0x66, 0x66, 0, 0},
11074         {0xAA, 0x66, 0x66, 0, 0},
11075         {0xAB, 0x66, 0x66, 0, 0},
11076         {0xAC, 0x66, 0x66, 0, 0},
11077         {0xAD, 0x66, 0x66, 0, 0},
11078         {0xAE, 0x66, 0x66, 0, 0},
11079         {0xAF, 0x66, 0x66, 0, 0},
11080         {0xB0, 0x66, 0x66, 0, 0},
11081         {0xB1, 0x66, 0x66, 0, 0},
11082         {0xB2, 0x66, 0x66, 0, 0},
11083         {0xB3, 0xa, 0xa, 0, 0},
11084         {0xB4, 0, 0, 0, 0},
11085         {0xB5, 0, 0, 0, 0},
11086         {0xB6, 0, 0, 0, 0},
11087         {0xFFFF, 0, 0, 0, 0},
11088 };
11089
11090 radio_regs_t regs_TX_2056_rev11[] = {
11091         {0x02, 0, 0, 0, 0},
11092         {0x03, 0, 0, 0, 0},
11093         {0x04, 0, 0, 0, 0},
11094         {0x05, 0, 0, 0, 0},
11095         {0x06, 0, 0, 0, 0},
11096         {0x07, 0, 0, 0, 0},
11097         {0x08, 0, 0, 0, 0},
11098         {0x09, 0, 0, 0, 0},
11099         {0x0A, 0, 0, 0, 0},
11100         {0x0B, 0, 0, 0, 0},
11101         {0x0C, 0, 0, 0, 0},
11102         {0x0D, 0, 0, 0, 0},
11103         {0x0E, 0, 0, 0, 0},
11104         {0x0F, 0, 0, 0, 0},
11105         {0x10, 0, 0, 0, 0},
11106         {0x11, 0, 0, 0, 0},
11107         {0x12, 0, 0, 0, 0},
11108         {0x13, 0, 0, 0, 0},
11109         {0x14, 0, 0, 0, 0},
11110         {0x15, 0, 0, 0, 0},
11111         {0x16, 0, 0, 0, 0},
11112         {0x17, 0, 0, 0, 0},
11113         {0x18, 0, 0, 0, 0},
11114         {0x19, 0, 0, 0, 0},
11115         {0x1A, 0, 0, 0, 0},
11116         {0x1B, 0, 0, 0, 0},
11117         {0x1C, 0, 0, 0, 0},
11118         {0x1D, 0, 0, 0, 0},
11119         {0x1E, 0, 0, 0, 0},
11120         {0x1F, 0, 0, 0, 0},
11121         {0x20, 0, 0, 0, 0},
11122         {0x21, 0x88, 0x88, 0, 0},
11123         {0x22, 0x88, 0x88, 0, 0},
11124         {0x23, 0x88, 0x88, 0, 0},
11125         {0x24, 0x88, 0x88, 0, 0},
11126         {0x25, 0xc, 0xc, 0, 0},
11127         {0x26, 0, 0, 0, 0},
11128         {0x27, 0x3, 0x3, 0, 0},
11129         {0x28, 0, 0, 0, 0},
11130         {0x29, 0x3, 0x3, 0, 0},
11131         {0x2A, 0x37, 0x37, 0, 0},
11132         {0x2B, 0x3, 0x3, 0, 0},
11133         {0x2C, 0, 0, 0, 0},
11134         {0x2D, 0, 0, 0, 0},
11135         {0x2E, 0x1, 0x1, 0, 0},
11136         {0x2F, 0x1, 0x1, 0, 0},
11137         {0x30, 0, 0, 0, 0},
11138         {0x31, 0, 0, 0, 0},
11139         {0x32, 0, 0, 0, 0},
11140         {0x33, 0x11, 0x11, 0, 0},
11141         {0x34, 0xee, 0xee, 1, 1},
11142         {0x35, 0, 0, 0, 0},
11143         {0x36, 0, 0, 0, 0},
11144         {0x37, 0x3, 0x3, 0, 0},
11145         {0x38, 0x50, 0x50, 1, 1},
11146         {0x39, 0, 0, 0, 0},
11147         {0x3A, 0x50, 0x50, 1, 1},
11148         {0x3B, 0, 0, 0, 0},
11149         {0x3C, 0x6e, 0x6e, 0, 0},
11150         {0x3D, 0xf0, 0xf0, 1, 1},
11151         {0x3E, 0, 0, 0, 0},
11152         {0x3F, 0, 0, 0, 0},
11153         {0x40, 0, 0, 0, 0},
11154         {0x41, 0x3, 0x3, 0, 0},
11155         {0x42, 0x3, 0x3, 0, 0},
11156         {0x43, 0, 0, 0, 0},
11157         {0x44, 0x1e, 0x1e, 0, 0},
11158         {0x45, 0, 0, 0, 0},
11159         {0x46, 0x6e, 0x6e, 0, 0},
11160         {0x47, 0xf0, 0xf0, 1, 1},
11161         {0x48, 0, 0, 0, 0},
11162         {0x49, 0x2, 0x2, 0, 0},
11163         {0x4A, 0xff, 0xff, 1, 1},
11164         {0x4B, 0xc, 0xc, 0, 0},
11165         {0x4C, 0, 0, 0, 0},
11166         {0x4D, 0x38, 0x38, 0, 0},
11167         {0x4E, 0x70, 0x70, 1, 1},
11168         {0x4F, 0x2, 0x2, 0, 0},
11169         {0x50, 0x88, 0x88, 0, 0},
11170         {0x51, 0xc, 0xc, 0, 0},
11171         {0x52, 0, 0, 0, 0},
11172         {0x53, 0x8, 0x8, 0, 0},
11173         {0x54, 0x70, 0x70, 1, 1},
11174         {0x55, 0x2, 0x2, 0, 0},
11175         {0x56, 0xff, 0xff, 1, 1},
11176         {0x57, 0, 0, 0, 0},
11177         {0x58, 0x83, 0x83, 0, 0},
11178         {0x59, 0x77, 0x77, 1, 1},
11179         {0x5A, 0, 0, 0, 0},
11180         {0x5B, 0x2, 0x2, 0, 0},
11181         {0x5C, 0x88, 0x88, 0, 0},
11182         {0x5D, 0, 0, 0, 0},
11183         {0x5E, 0x8, 0x8, 0, 0},
11184         {0x5F, 0x77, 0x77, 1, 1},
11185         {0x60, 0x1, 0x1, 0, 0},
11186         {0x61, 0, 0, 0, 0},
11187         {0x62, 0x7, 0x7, 0, 0},
11188         {0x63, 0, 0, 0, 0},
11189         {0x64, 0x7, 0x7, 0, 0},
11190         {0x65, 0, 0, 0, 0},
11191         {0x66, 0, 0, 0, 0},
11192         {0x67, 0, 0, 1, 1},
11193         {0x68, 0, 0, 0, 0},
11194         {0x69, 0xa, 0xa, 0, 0},
11195         {0x6A, 0, 0, 0, 0},
11196         {0x6B, 0, 0, 0, 0},
11197         {0x6C, 0, 0, 0, 0},
11198         {0x6D, 0, 0, 0, 0},
11199         {0x6E, 0, 0, 0, 0},
11200         {0x6F, 0, 0, 0, 0},
11201         {0x70, 0, 0, 0, 0},
11202         {0x71, 0x2, 0x2, 0, 0},
11203         {0x72, 0, 0, 0, 0},
11204         {0x73, 0, 0, 0, 0},
11205         {0x74, 0xe, 0xe, 0, 0},
11206         {0x75, 0xe, 0xe, 0, 0},
11207         {0x76, 0xe, 0xe, 0, 0},
11208         {0x77, 0x13, 0x13, 0, 0},
11209         {0x78, 0x13, 0x13, 0, 0},
11210         {0x79, 0x1b, 0x1b, 0, 0},
11211         {0x7A, 0x1b, 0x1b, 0, 0},
11212         {0x7B, 0x55, 0x55, 0, 0},
11213         {0x7C, 0x5b, 0x5b, 0, 0},
11214         {0x7D, 0x30, 0x30, 1, 1},
11215         {0x7E, 0, 0, 0, 0},
11216         {0x7F, 0, 0, 0, 0},
11217         {0x80, 0, 0, 0, 0},
11218         {0x81, 0, 0, 0, 0},
11219         {0x82, 0, 0, 0, 0},
11220         {0x83, 0, 0, 0, 0},
11221         {0x84, 0, 0, 0, 0},
11222         {0x85, 0, 0, 0, 0},
11223         {0x86, 0, 0, 0, 0},
11224         {0x87, 0, 0, 0, 0},
11225         {0x88, 0, 0, 0, 0},
11226         {0x89, 0, 0, 0, 0},
11227         {0x8A, 0, 0, 0, 0},
11228         {0x8B, 0, 0, 0, 0},
11229         {0x8C, 0, 0, 0, 0},
11230         {0x8D, 0, 0, 0, 0},
11231         {0x8E, 0, 0, 0, 0},
11232         {0x8F, 0, 0, 0, 0},
11233         {0x90, 0, 0, 0, 0},
11234         {0x91, 0, 0, 0, 0},
11235         {0x92, 0, 0, 0, 0},
11236         {0x93, 0x70, 0x70, 0, 0},
11237         {0x94, 0x70, 0x70, 0, 0},
11238         {0x95, 0x70, 0x70, 0, 0},
11239         {0x96, 0x70, 0x70, 0, 0},
11240         {0x97, 0x70, 0x70, 0, 0},
11241         {0x98, 0x70, 0x70, 0, 0},
11242         {0x99, 0x70, 0x70, 0, 0},
11243         {0x9A, 0x70, 0x70, 0, 0},
11244         {0xFFFF, 0, 0, 0, 0},
11245 };
11246
11247 radio_regs_t regs_RX_2056_rev11[] = {
11248         {0x02, 0, 0, 0, 0},
11249         {0x03, 0, 0, 0, 0},
11250         {0x04, 0, 0, 0, 0},
11251         {0x05, 0, 0, 0, 0},
11252         {0x06, 0, 0, 0, 0},
11253         {0x07, 0, 0, 0, 0},
11254         {0x08, 0, 0, 0, 0},
11255         {0x09, 0, 0, 0, 0},
11256         {0x0A, 0, 0, 0, 0},
11257         {0x0B, 0, 0, 0, 0},
11258         {0x0C, 0, 0, 0, 0},
11259         {0x0D, 0, 0, 0, 0},
11260         {0x0E, 0, 0, 0, 0},
11261         {0x0F, 0, 0, 0, 0},
11262         {0x10, 0, 0, 0, 0},
11263         {0x11, 0, 0, 0, 0},
11264         {0x12, 0, 0, 0, 0},
11265         {0x13, 0, 0, 0, 0},
11266         {0x14, 0, 0, 0, 0},
11267         {0x15, 0, 0, 0, 0},
11268         {0x16, 0, 0, 0, 0},
11269         {0x17, 0, 0, 0, 0},
11270         {0x18, 0, 0, 0, 0},
11271         {0x19, 0, 0, 0, 0},
11272         {0x1A, 0, 0, 0, 0},
11273         {0x1B, 0, 0, 0, 0},
11274         {0x1C, 0, 0, 0, 0},
11275         {0x1D, 0, 0, 0, 0},
11276         {0x1E, 0, 0, 0, 0},
11277         {0x1F, 0, 0, 0, 0},
11278         {0x20, 0x3, 0x3, 0, 0},
11279         {0x21, 0, 0, 0, 0},
11280         {0x22, 0, 0, 0, 0},
11281         {0x23, 0x90, 0x90, 0, 0},
11282         {0x24, 0x55, 0x55, 0, 0},
11283         {0x25, 0x15, 0x15, 0, 0},
11284         {0x26, 0x5, 0x5, 0, 0},
11285         {0x27, 0x15, 0x15, 0, 0},
11286         {0x28, 0x5, 0x5, 0, 0},
11287         {0x29, 0x20, 0x20, 0, 0},
11288         {0x2A, 0x11, 0x11, 0, 0},
11289         {0x2B, 0x90, 0x90, 0, 0},
11290         {0x2C, 0, 0, 0, 0},
11291         {0x2D, 0x88, 0x88, 0, 0},
11292         {0x2E, 0x32, 0x32, 0, 0},
11293         {0x2F, 0x77, 0x77, 0, 0},
11294         {0x30, 0x17, 0x17, 1, 1},
11295         {0x31, 0xff, 0xff, 1, 1},
11296         {0x32, 0x20, 0x20, 0, 0},
11297         {0x33, 0, 0, 0, 0},
11298         {0x34, 0x88, 0x88, 0, 0},
11299         {0x35, 0x32, 0x32, 0, 0},
11300         {0x36, 0x77, 0x77, 0, 0},
11301         {0x37, 0x17, 0x17, 1, 1},
11302         {0x38, 0xf0, 0xf0, 1, 1},
11303         {0x39, 0x20, 0x20, 0, 0},
11304         {0x3A, 0x8, 0x8, 0, 0},
11305         {0x3B, 0x55, 0x55, 1, 1},
11306         {0x3C, 0, 0, 0, 0},
11307         {0x3D, 0x88, 0x88, 1, 1},
11308         {0x3E, 0, 0, 0, 0},
11309         {0x3F, 0x44, 0x44, 0, 0},
11310         {0x40, 0x7, 0x7, 1, 1},
11311         {0x41, 0x6, 0x6, 0, 0},
11312         {0x42, 0x4, 0x4, 0, 0},
11313         {0x43, 0, 0, 0, 0},
11314         {0x44, 0x8, 0x8, 0, 0},
11315         {0x45, 0x55, 0x55, 1, 1},
11316         {0x46, 0, 0, 0, 0},
11317         {0x47, 0x11, 0x11, 0, 0},
11318         {0x48, 0, 0, 0, 0},
11319         {0x49, 0x44, 0x44, 0, 0},
11320         {0x4A, 0x7, 0x7, 0, 0},
11321         {0x4B, 0x6, 0x6, 0, 0},
11322         {0x4C, 0x4, 0x4, 0, 0},
11323         {0x4D, 0, 0, 0, 0},
11324         {0x4E, 0, 0, 0, 0},
11325         {0x4F, 0x26, 0x26, 1, 1},
11326         {0x50, 0x26, 0x26, 1, 1},
11327         {0x51, 0xf, 0xf, 1, 1},
11328         {0x52, 0xf, 0xf, 1, 1},
11329         {0x53, 0x44, 0x44, 0, 0},
11330         {0x54, 0, 0, 0, 0},
11331         {0x55, 0, 0, 0, 0},
11332         {0x56, 0x8, 0x8, 0, 0},
11333         {0x57, 0x8, 0x8, 0, 0},
11334         {0x58, 0x7, 0x7, 0, 0},
11335         {0x59, 0x22, 0x22, 0, 0},
11336         {0x5A, 0x22, 0x22, 0, 0},
11337         {0x5B, 0x2, 0x2, 0, 0},
11338         {0x5C, 0x4, 0x4, 1, 1},
11339         {0x5D, 0x7, 0x7, 0, 0},
11340         {0x5E, 0x55, 0x55, 0, 0},
11341         {0x5F, 0x23, 0x23, 0, 0},
11342         {0x60, 0x41, 0x41, 0, 0},
11343         {0x61, 0x1, 0x1, 0, 0},
11344         {0x62, 0xa, 0xa, 0, 0},
11345         {0x63, 0, 0, 0, 0},
11346         {0x64, 0, 0, 0, 0},
11347         {0x65, 0, 0, 0, 0},
11348         {0x66, 0, 0, 0, 0},
11349         {0x67, 0, 0, 0, 0},
11350         {0x68, 0, 0, 0, 0},
11351         {0x69, 0, 0, 0, 0},
11352         {0x6A, 0, 0, 0, 0},
11353         {0x6B, 0xc, 0xc, 0, 0},
11354         {0x6C, 0, 0, 0, 0},
11355         {0x6D, 0, 0, 0, 0},
11356         {0x6E, 0, 0, 0, 0},
11357         {0x6F, 0, 0, 0, 0},
11358         {0x70, 0, 0, 0, 0},
11359         {0x71, 0, 0, 0, 0},
11360         {0x72, 0x22, 0x22, 0, 0},
11361         {0x73, 0x22, 0x22, 0, 0},
11362         {0x74, 0, 0, 1, 1},
11363         {0x75, 0xa, 0xa, 0, 0},
11364         {0x76, 0x1, 0x1, 0, 0},
11365         {0x77, 0x22, 0x22, 0, 0},
11366         {0x78, 0x30, 0x30, 0, 0},
11367         {0x79, 0, 0, 0, 0},
11368         {0x7A, 0, 0, 0, 0},
11369         {0x7B, 0, 0, 0, 0},
11370         {0x7C, 0, 0, 0, 0},
11371         {0x7D, 0x5, 0x5, 1, 1},
11372         {0x7E, 0, 0, 0, 0},
11373         {0x7F, 0, 0, 0, 0},
11374         {0x80, 0, 0, 0, 0},
11375         {0x81, 0, 0, 0, 0},
11376         {0x82, 0, 0, 0, 0},
11377         {0x83, 0, 0, 0, 0},
11378         {0x84, 0, 0, 0, 0},
11379         {0x85, 0, 0, 0, 0},
11380         {0x86, 0, 0, 0, 0},
11381         {0x87, 0, 0, 0, 0},
11382         {0x88, 0, 0, 0, 0},
11383         {0x89, 0, 0, 0, 0},
11384         {0x8A, 0, 0, 0, 0},
11385         {0x8B, 0, 0, 0, 0},
11386         {0x8C, 0, 0, 0, 0},
11387         {0x8D, 0, 0, 0, 0},
11388         {0x8E, 0, 0, 0, 0},
11389         {0x8F, 0, 0, 0, 0},
11390         {0x90, 0, 0, 0, 0},
11391         {0x91, 0, 0, 0, 0},
11392         {0x92, 0, 0, 0, 0},
11393         {0x93, 0, 0, 0, 0},
11394         {0x94, 0, 0, 0, 0},
11395         {0xFFFF, 0, 0, 0, 0},
11396 };
11397
11398 radio_20xx_regs_t regs_2057_rev4[] = {
11399         {0x00, 0x84, 0},
11400         {0x01, 0, 0},
11401         {0x02, 0x60, 0},
11402         {0x03, 0x1f, 0},
11403         {0x04, 0x4, 0},
11404         {0x05, 0x2, 0},
11405         {0x06, 0x1, 0},
11406         {0x07, 0x1, 0},
11407         {0x08, 0x1, 0},
11408         {0x09, 0x69, 0},
11409         {0x0A, 0x66, 0},
11410         {0x0B, 0x6, 0},
11411         {0x0C, 0x18, 0},
11412         {0x0D, 0x3, 0},
11413         {0x0E, 0x20, 1},
11414         {0x0F, 0x20, 0},
11415         {0x10, 0, 0},
11416         {0x11, 0x7c, 0},
11417         {0x12, 0x42, 0},
11418         {0x13, 0xbd, 0},
11419         {0x14, 0x7, 0},
11420         {0x15, 0xf7, 0},
11421         {0x16, 0x8, 0},
11422         {0x17, 0x17, 0},
11423         {0x18, 0x7, 0},
11424         {0x19, 0, 0},
11425         {0x1A, 0x2, 0},
11426         {0x1B, 0x13, 0},
11427         {0x1C, 0x3e, 0},
11428         {0x1D, 0x3e, 0},
11429         {0x1E, 0x96, 0},
11430         {0x1F, 0x4, 0},
11431         {0x20, 0, 0},
11432         {0x21, 0, 0},
11433         {0x22, 0x17, 0},
11434         {0x23, 0x4, 0},
11435         {0x24, 0x1, 0},
11436         {0x25, 0x6, 0},
11437         {0x26, 0x4, 0},
11438         {0x27, 0xd, 0},
11439         {0x28, 0xd, 0},
11440         {0x29, 0x30, 0},
11441         {0x2A, 0x32, 0},
11442         {0x2B, 0x8, 0},
11443         {0x2C, 0x1c, 0},
11444         {0x2D, 0x2, 0},
11445         {0x2E, 0x4, 0},
11446         {0x2F, 0x7f, 0},
11447         {0x30, 0x27, 0},
11448         {0x31, 0, 1},
11449         {0x32, 0, 1},
11450         {0x33, 0, 1},
11451         {0x34, 0, 0},
11452         {0x35, 0x26, 1},
11453         {0x36, 0x18, 0},
11454         {0x37, 0x7, 0},
11455         {0x38, 0x66, 0},
11456         {0x39, 0x66, 0},
11457         {0x3A, 0x66, 0},
11458         {0x3B, 0x66, 0},
11459         {0x3C, 0xff, 1},
11460         {0x3D, 0xff, 1},
11461         {0x3E, 0xff, 1},
11462         {0x3F, 0xff, 1},
11463         {0x40, 0x16, 0},
11464         {0x41, 0x7, 0},
11465         {0x42, 0x19, 0},
11466         {0x43, 0x7, 0},
11467         {0x44, 0x6, 0},
11468         {0x45, 0x3, 0},
11469         {0x46, 0x1, 0},
11470         {0x47, 0x7, 0},
11471         {0x48, 0x33, 0},
11472         {0x49, 0x5, 0},
11473         {0x4A, 0x77, 0},
11474         {0x4B, 0x66, 0},
11475         {0x4C, 0x66, 0},
11476         {0x4D, 0, 0},
11477         {0x4E, 0x4, 0},
11478         {0x4F, 0xc, 0},
11479         {0x50, 0, 0},
11480         {0x51, 0x75, 0},
11481         {0x56, 0x7, 0},
11482         {0x57, 0, 0},
11483         {0x58, 0, 0},
11484         {0x59, 0xa8, 0},
11485         {0x5A, 0, 0},
11486         {0x5B, 0x1f, 0},
11487         {0x5C, 0x30, 0},
11488         {0x5D, 0x1, 0},
11489         {0x5E, 0x30, 0},
11490         {0x5F, 0x70, 0},
11491         {0x60, 0, 0},
11492         {0x61, 0, 0},
11493         {0x62, 0x33, 1},
11494         {0x63, 0x19, 0},
11495         {0x64, 0x62, 0},
11496         {0x65, 0, 0},
11497         {0x66, 0x11, 0},
11498         {0x69, 0, 0},
11499         {0x6A, 0x7e, 0},
11500         {0x6B, 0x3f, 0},
11501         {0x6C, 0x7f, 0},
11502         {0x6D, 0x78, 0},
11503         {0x6E, 0xc8, 0},
11504         {0x6F, 0x88, 0},
11505         {0x70, 0x8, 0},
11506         {0x71, 0xf, 0},
11507         {0x72, 0xbc, 0},
11508         {0x73, 0x8, 0},
11509         {0x74, 0x60, 0},
11510         {0x75, 0x1e, 0},
11511         {0x76, 0x70, 0},
11512         {0x77, 0, 0},
11513         {0x78, 0, 0},
11514         {0x79, 0, 0},
11515         {0x7A, 0x33, 0},
11516         {0x7B, 0x1e, 0},
11517         {0x7C, 0x62, 0},
11518         {0x7D, 0x11, 0},
11519         {0x80, 0x3c, 0},
11520         {0x81, 0x9c, 0},
11521         {0x82, 0xa, 0},
11522         {0x83, 0x9d, 0},
11523         {0x84, 0xa, 0},
11524         {0x85, 0, 0},
11525         {0x86, 0x40, 0},
11526         {0x87, 0x40, 0},
11527         {0x88, 0x88, 0},
11528         {0x89, 0x10, 0},
11529         {0x8A, 0xf0, 1},
11530         {0x8B, 0x10, 1},
11531         {0x8C, 0xf0, 1},
11532         {0x8D, 0, 0},
11533         {0x8E, 0, 0},
11534         {0x8F, 0x10, 0},
11535         {0x90, 0x55, 0},
11536         {0x91, 0x3f, 1},
11537         {0x92, 0x36, 1},
11538         {0x93, 0, 0},
11539         {0x94, 0, 0},
11540         {0x95, 0, 0},
11541         {0x96, 0x87, 0},
11542         {0x97, 0x11, 0},
11543         {0x98, 0, 0},
11544         {0x99, 0x33, 0},
11545         {0x9A, 0x88, 0},
11546         {0x9B, 0, 0},
11547         {0x9C, 0x87, 0},
11548         {0x9D, 0x11, 0},
11549         {0x9E, 0, 0},
11550         {0x9F, 0x33, 0},
11551         {0xA0, 0x88, 0},
11552         {0xA1, 0xe1, 0},
11553         {0xA2, 0x3f, 0},
11554         {0xA3, 0x44, 0},
11555         {0xA4, 0x8c, 1},
11556         {0xA5, 0x6d, 0},
11557         {0xA6, 0x22, 0},
11558         {0xA7, 0xbe, 0},
11559         {0xA8, 0x55, 1},
11560         {0xA9, 0xc, 0},
11561         {0xAA, 0xc, 0},
11562         {0xAB, 0xaa, 0},
11563         {0xAC, 0x2, 0},
11564         {0xAD, 0, 0},
11565         {0xAE, 0x10, 0},
11566         {0xAF, 0x1, 1},
11567         {0xB0, 0, 0},
11568         {0xB1, 0, 0},
11569         {0xB2, 0x80, 0},
11570         {0xB3, 0x60, 0},
11571         {0xB4, 0x44, 0},
11572         {0xB5, 0x55, 0},
11573         {0xB6, 0x1, 0},
11574         {0xB7, 0x55, 0},
11575         {0xB8, 0x1, 0},
11576         {0xB9, 0x5, 0},
11577         {0xBA, 0x55, 0},
11578         {0xBB, 0x55, 0},
11579         {0xC1, 0, 0},
11580         {0xC2, 0, 0},
11581         {0xC3, 0, 0},
11582         {0xC4, 0, 0},
11583         {0xC5, 0, 0},
11584         {0xC6, 0, 0},
11585         {0xC7, 0, 0},
11586         {0xC8, 0, 0},
11587         {0xC9, 0, 0},
11588         {0xCA, 0, 0},
11589         {0xCB, 0, 0},
11590         {0xCC, 0, 0},
11591         {0xCD, 0, 0},
11592         {0xCE, 0x5e, 0},
11593         {0xCF, 0xc, 0},
11594         {0xD0, 0xc, 0},
11595         {0xD1, 0xc, 0},
11596         {0xD2, 0, 0},
11597         {0xD3, 0x2b, 0},
11598         {0xD4, 0xc, 0},
11599         {0xD5, 0, 0},
11600         {0xD6, 0x75, 0},
11601         {0xDB, 0x7, 0},
11602         {0xDC, 0, 0},
11603         {0xDD, 0, 0},
11604         {0xDE, 0xa8, 0},
11605         {0xDF, 0, 0},
11606         {0xE0, 0x1f, 0},
11607         {0xE1, 0x30, 0},
11608         {0xE2, 0x1, 0},
11609         {0xE3, 0x30, 0},
11610         {0xE4, 0x70, 0},
11611         {0xE5, 0, 0},
11612         {0xE6, 0, 0},
11613         {0xE7, 0x33, 0},
11614         {0xE8, 0x19, 0},
11615         {0xE9, 0x62, 0},
11616         {0xEA, 0, 0},
11617         {0xEB, 0x11, 0},
11618         {0xEE, 0, 0},
11619         {0xEF, 0x7e, 0},
11620         {0xF0, 0x3f, 0},
11621         {0xF1, 0x7f, 0},
11622         {0xF2, 0x78, 0},
11623         {0xF3, 0xc8, 0},
11624         {0xF4, 0x88, 0},
11625         {0xF5, 0x8, 0},
11626         {0xF6, 0xf, 0},
11627         {0xF7, 0xbc, 0},
11628         {0xF8, 0x8, 0},
11629         {0xF9, 0x60, 0},
11630         {0xFA, 0x1e, 0},
11631         {0xFB, 0x70, 0},
11632         {0xFC, 0, 0},
11633         {0xFD, 0, 0},
11634         {0xFE, 0, 0},
11635         {0xFF, 0x33, 0},
11636         {0x100, 0x1e, 0},
11637         {0x101, 0x62, 0},
11638         {0x102, 0x11, 0},
11639         {0x105, 0x3c, 0},
11640         {0x106, 0x9c, 0},
11641         {0x107, 0xa, 0},
11642         {0x108, 0x9d, 0},
11643         {0x109, 0xa, 0},
11644         {0x10A, 0, 0},
11645         {0x10B, 0x40, 0},
11646         {0x10C, 0x40, 0},
11647         {0x10D, 0x88, 0},
11648         {0x10E, 0x10, 0},
11649         {0x10F, 0xf0, 1},
11650         {0x110, 0x10, 1},
11651         {0x111, 0xf0, 1},
11652         {0x112, 0, 0},
11653         {0x113, 0, 0},
11654         {0x114, 0x10, 0},
11655         {0x115, 0x55, 0},
11656         {0x116, 0x3f, 1},
11657         {0x117, 0x36, 1},
11658         {0x118, 0, 0},
11659         {0x119, 0, 0},
11660         {0x11A, 0, 0},
11661         {0x11B, 0x87, 0},
11662         {0x11C, 0x11, 0},
11663         {0x11D, 0, 0},
11664         {0x11E, 0x33, 0},
11665         {0x11F, 0x88, 0},
11666         {0x120, 0, 0},
11667         {0x121, 0x87, 0},
11668         {0x122, 0x11, 0},
11669         {0x123, 0, 0},
11670         {0x124, 0x33, 0},
11671         {0x125, 0x88, 0},
11672         {0x126, 0xe1, 0},
11673         {0x127, 0x3f, 0},
11674         {0x128, 0x44, 0},
11675         {0x129, 0x8c, 1},
11676         {0x12A, 0x6d, 0},
11677         {0x12B, 0x22, 0},
11678         {0x12C, 0xbe, 0},
11679         {0x12D, 0x55, 1},
11680         {0x12E, 0xc, 0},
11681         {0x12F, 0xc, 0},
11682         {0x130, 0xaa, 0},
11683         {0x131, 0x2, 0},
11684         {0x132, 0, 0},
11685         {0x133, 0x10, 0},
11686         {0x134, 0x1, 1},
11687         {0x135, 0, 0},
11688         {0x136, 0, 0},
11689         {0x137, 0x80, 0},
11690         {0x138, 0x60, 0},
11691         {0x139, 0x44, 0},
11692         {0x13A, 0x55, 0},
11693         {0x13B, 0x1, 0},
11694         {0x13C, 0x55, 0},
11695         {0x13D, 0x1, 0},
11696         {0x13E, 0x5, 0},
11697         {0x13F, 0x55, 0},
11698         {0x140, 0x55, 0},
11699         {0x146, 0, 0},
11700         {0x147, 0, 0},
11701         {0x148, 0, 0},
11702         {0x149, 0, 0},
11703         {0x14A, 0, 0},
11704         {0x14B, 0, 0},
11705         {0x14C, 0, 0},
11706         {0x14D, 0, 0},
11707         {0x14E, 0, 0},
11708         {0x14F, 0, 0},
11709         {0x150, 0, 0},
11710         {0x151, 0, 0},
11711         {0x152, 0, 0},
11712         {0x153, 0, 0},
11713         {0x154, 0xc, 0},
11714         {0x155, 0xc, 0},
11715         {0x156, 0xc, 0},
11716         {0x157, 0, 0},
11717         {0x158, 0x2b, 0},
11718         {0x159, 0x84, 0},
11719         {0x15A, 0x15, 0},
11720         {0x15B, 0xf, 0},
11721         {0x15C, 0, 0},
11722         {0x15D, 0, 0},
11723         {0x15E, 0, 1},
11724         {0x15F, 0, 1},
11725         {0x160, 0, 1},
11726         {0x161, 0, 1},
11727         {0x162, 0, 1},
11728         {0x163, 0, 1},
11729         {0x164, 0, 0},
11730         {0x165, 0, 0},
11731         {0x166, 0, 0},
11732         {0x167, 0, 0},
11733         {0x168, 0, 0},
11734         {0x169, 0x2, 1},
11735         {0x16A, 0, 1},
11736         {0x16B, 0, 1},
11737         {0x16C, 0, 1},
11738         {0x16D, 0, 0},
11739         {0x170, 0, 0},
11740         {0x171, 0x77, 0},
11741         {0x172, 0x77, 0},
11742         {0x173, 0x77, 0},
11743         {0x174, 0x77, 0},
11744         {0x175, 0, 0},
11745         {0x176, 0x3, 0},
11746         {0x177, 0x37, 0},
11747         {0x178, 0x3, 0},
11748         {0x179, 0, 0},
11749         {0x17A, 0x21, 0},
11750         {0x17B, 0x21, 0},
11751         {0x17C, 0, 0},
11752         {0x17D, 0xaa, 0},
11753         {0x17E, 0, 0},
11754         {0x17F, 0xaa, 0},
11755         {0x180, 0, 0},
11756         {0x190, 0, 0},
11757         {0x191, 0x77, 0},
11758         {0x192, 0x77, 0},
11759         {0x193, 0x77, 0},
11760         {0x194, 0x77, 0},
11761         {0x195, 0, 0},
11762         {0x196, 0x3, 0},
11763         {0x197, 0x37, 0},
11764         {0x198, 0x3, 0},
11765         {0x199, 0, 0},
11766         {0x19A, 0x21, 0},
11767         {0x19B, 0x21, 0},
11768         {0x19C, 0, 0},
11769         {0x19D, 0xaa, 0},
11770         {0x19E, 0, 0},
11771         {0x19F, 0xaa, 0},
11772         {0x1A0, 0, 0},
11773         {0x1A1, 0x2, 0},
11774         {0x1A2, 0xf, 0},
11775         {0x1A3, 0xf, 0},
11776         {0x1A4, 0, 1},
11777         {0x1A5, 0, 1},
11778         {0x1A6, 0, 1},
11779         {0x1A7, 0x2, 0},
11780         {0x1A8, 0xf, 0},
11781         {0x1A9, 0xf, 0},
11782         {0x1AA, 0, 1},
11783         {0x1AB, 0, 1},
11784         {0x1AC, 0, 1},
11785         {0xFFFF, 0, 0},
11786 };
11787
11788 radio_20xx_regs_t regs_2057_rev5[] = {
11789         {0x00, 0, 1},
11790         {0x01, 0x57, 1},
11791         {0x02, 0x20, 1},
11792         {0x03, 0x1f, 0},
11793         {0x04, 0x4, 0},
11794         {0x05, 0x2, 0},
11795         {0x06, 0x1, 0},
11796         {0x07, 0x1, 0},
11797         {0x08, 0x1, 0},
11798         {0x09, 0x69, 0},
11799         {0x0A, 0x66, 0},
11800         {0x0B, 0x6, 0},
11801         {0x0C, 0x18, 0},
11802         {0x0D, 0x3, 0},
11803         {0x0E, 0x20, 0},
11804         {0x0F, 0x20, 0},
11805         {0x10, 0, 0},
11806         {0x11, 0x7c, 0},
11807         {0x12, 0x42, 0},
11808         {0x13, 0xbd, 0},
11809         {0x14, 0x7, 0},
11810         {0x15, 0x87, 0},
11811         {0x16, 0x8, 0},
11812         {0x17, 0x17, 0},
11813         {0x18, 0x7, 0},
11814         {0x19, 0, 0},
11815         {0x1A, 0x2, 0},
11816         {0x1B, 0x13, 0},
11817         {0x1C, 0x3e, 0},
11818         {0x1D, 0x3e, 0},
11819         {0x1E, 0x96, 0},
11820         {0x1F, 0x4, 0},
11821         {0x20, 0, 0},
11822         {0x21, 0, 0},
11823         {0x22, 0x17, 0},
11824         {0x23, 0x6, 1},
11825         {0x24, 0x1, 0},
11826         {0x25, 0x6, 0},
11827         {0x26, 0x4, 0},
11828         {0x27, 0xd, 0},
11829         {0x28, 0xd, 0},
11830         {0x29, 0x30, 0},
11831         {0x2A, 0x32, 0},
11832         {0x2B, 0x8, 0},
11833         {0x2C, 0x1c, 0},
11834         {0x2D, 0x2, 0},
11835         {0x2E, 0x4, 0},
11836         {0x2F, 0x7f, 0},
11837         {0x30, 0x27, 0},
11838         {0x31, 0, 1},
11839         {0x32, 0, 1},
11840         {0x33, 0, 1},
11841         {0x34, 0, 0},
11842         {0x35, 0x20, 0},
11843         {0x36, 0x18, 0},
11844         {0x37, 0x7, 0},
11845         {0x38, 0x66, 0},
11846         {0x39, 0x66, 0},
11847         {0x3C, 0xff, 0},
11848         {0x3D, 0xff, 0},
11849         {0x40, 0x16, 0},
11850         {0x41, 0x7, 0},
11851         {0x45, 0x3, 0},
11852         {0x46, 0x1, 0},
11853         {0x47, 0x7, 0},
11854         {0x4B, 0x66, 0},
11855         {0x4C, 0x66, 0},
11856         {0x4D, 0, 0},
11857         {0x4E, 0x4, 0},
11858         {0x4F, 0xc, 0},
11859         {0x50, 0, 0},
11860         {0x51, 0x70, 1},
11861         {0x56, 0x7, 0},
11862         {0x57, 0, 0},
11863         {0x58, 0, 0},
11864         {0x59, 0x88, 1},
11865         {0x5A, 0, 0},
11866         {0x5B, 0x1f, 0},
11867         {0x5C, 0x20, 1},
11868         {0x5D, 0x1, 0},
11869         {0x5E, 0x30, 0},
11870         {0x5F, 0x70, 0},
11871         {0x60, 0, 0},
11872         {0x61, 0, 0},
11873         {0x62, 0x33, 1},
11874         {0x63, 0xf, 1},
11875         {0x64, 0xf, 1},
11876         {0x65, 0, 0},
11877         {0x66, 0x11, 0},
11878         {0x80, 0x3c, 0},
11879         {0x81, 0x1, 1},
11880         {0x82, 0xa, 0},
11881         {0x85, 0, 0},
11882         {0x86, 0x40, 0},
11883         {0x87, 0x40, 0},
11884         {0x88, 0x88, 0},
11885         {0x89, 0x10, 0},
11886         {0x8A, 0xf0, 0},
11887         {0x8B, 0x10, 0},
11888         {0x8C, 0xf0, 0},
11889         {0x8F, 0x10, 0},
11890         {0x90, 0x55, 0},
11891         {0x91, 0x3f, 1},
11892         {0x92, 0x36, 1},
11893         {0x93, 0, 0},
11894         {0x94, 0, 0},
11895         {0x95, 0, 0},
11896         {0x96, 0x87, 0},
11897         {0x97, 0x11, 0},
11898         {0x98, 0, 0},
11899         {0x99, 0x33, 0},
11900         {0x9A, 0x88, 0},
11901         {0xA1, 0x20, 1},
11902         {0xA2, 0x3f, 0},
11903         {0xA3, 0x44, 0},
11904         {0xA4, 0x8c, 0},
11905         {0xA5, 0x6c, 0},
11906         {0xA6, 0x22, 0},
11907         {0xA7, 0xbe, 0},
11908         {0xA8, 0x55, 0},
11909         {0xAA, 0xc, 0},
11910         {0xAB, 0xaa, 0},
11911         {0xAC, 0x2, 0},
11912         {0xAD, 0, 0},
11913         {0xAE, 0x10, 0},
11914         {0xAF, 0x1, 0},
11915         {0xB0, 0, 0},
11916         {0xB1, 0, 0},
11917         {0xB2, 0x80, 0},
11918         {0xB3, 0x60, 0},
11919         {0xB4, 0x44, 0},
11920         {0xB5, 0x55, 0},
11921         {0xB6, 0x1, 0},
11922         {0xB7, 0x55, 0},
11923         {0xB8, 0x1, 0},
11924         {0xB9, 0x5, 0},
11925         {0xBA, 0x55, 0},
11926         {0xBB, 0x55, 0},
11927         {0xC3, 0, 0},
11928         {0xC4, 0, 0},
11929         {0xC5, 0, 0},
11930         {0xC6, 0, 0},
11931         {0xC7, 0, 0},
11932         {0xC8, 0, 0},
11933         {0xC9, 0, 0},
11934         {0xCA, 0, 0},
11935         {0xCB, 0, 0},
11936         {0xCD, 0, 0},
11937         {0xCE, 0x5e, 0},
11938         {0xCF, 0xc, 0},
11939         {0xD0, 0xc, 0},
11940         {0xD1, 0xc, 0},
11941         {0xD2, 0, 0},
11942         {0xD3, 0x2b, 0},
11943         {0xD4, 0xc, 0},
11944         {0xD5, 0, 0},
11945         {0xD6, 0x70, 1},
11946         {0xDB, 0x7, 0},
11947         {0xDC, 0, 0},
11948         {0xDD, 0, 0},
11949         {0xDE, 0x88, 1},
11950         {0xDF, 0, 0},
11951         {0xE0, 0x1f, 0},
11952         {0xE1, 0x20, 1},
11953         {0xE2, 0x1, 0},
11954         {0xE3, 0x30, 0},
11955         {0xE4, 0x70, 0},
11956         {0xE5, 0, 0},
11957         {0xE6, 0, 0},
11958         {0xE7, 0x33, 0},
11959         {0xE8, 0xf, 1},
11960         {0xE9, 0xf, 1},
11961         {0xEA, 0, 0},
11962         {0xEB, 0x11, 0},
11963         {0x105, 0x3c, 0},
11964         {0x106, 0x1, 1},
11965         {0x107, 0xa, 0},
11966         {0x10A, 0, 0},
11967         {0x10B, 0x40, 0},
11968         {0x10C, 0x40, 0},
11969         {0x10D, 0x88, 0},
11970         {0x10E, 0x10, 0},
11971         {0x10F, 0xf0, 0},
11972         {0x110, 0x10, 0},
11973         {0x111, 0xf0, 0},
11974         {0x114, 0x10, 0},
11975         {0x115, 0x55, 0},
11976         {0x116, 0x3f, 1},
11977         {0x117, 0x36, 1},
11978         {0x118, 0, 0},
11979         {0x119, 0, 0},
11980         {0x11A, 0, 0},
11981         {0x11B, 0x87, 0},
11982         {0x11C, 0x11, 0},
11983         {0x11D, 0, 0},
11984         {0x11E, 0x33, 0},
11985         {0x11F, 0x88, 0},
11986         {0x126, 0x20, 1},
11987         {0x127, 0x3f, 0},
11988         {0x128, 0x44, 0},
11989         {0x129, 0x8c, 0},
11990         {0x12A, 0x6c, 0},
11991         {0x12B, 0x22, 0},
11992         {0x12C, 0xbe, 0},
11993         {0x12D, 0x55, 0},
11994         {0x12F, 0xc, 0},
11995         {0x130, 0xaa, 0},
11996         {0x131, 0x2, 0},
11997         {0x132, 0, 0},
11998         {0x133, 0x10, 0},
11999         {0x134, 0x1, 0},
12000         {0x135, 0, 0},
12001         {0x136, 0, 0},
12002         {0x137, 0x80, 0},
12003         {0x138, 0x60, 0},
12004         {0x139, 0x44, 0},
12005         {0x13A, 0x55, 0},
12006         {0x13B, 0x1, 0},
12007         {0x13C, 0x55, 0},
12008         {0x13D, 0x1, 0},
12009         {0x13E, 0x5, 0},
12010         {0x13F, 0x55, 0},
12011         {0x140, 0x55, 0},
12012         {0x148, 0, 0},
12013         {0x149, 0, 0},
12014         {0x14A, 0, 0},
12015         {0x14B, 0, 0},
12016         {0x14C, 0, 0},
12017         {0x14D, 0, 0},
12018         {0x14E, 0, 0},
12019         {0x14F, 0, 0},
12020         {0x150, 0, 0},
12021         {0x154, 0xc, 0},
12022         {0x155, 0xc, 0},
12023         {0x156, 0xc, 0},
12024         {0x157, 0, 0},
12025         {0x158, 0x2b, 0},
12026         {0x159, 0x84, 0},
12027         {0x15A, 0x15, 0},
12028         {0x15B, 0xf, 0},
12029         {0x15C, 0, 0},
12030         {0x15D, 0, 0},
12031         {0x15E, 0, 1},
12032         {0x15F, 0, 1},
12033         {0x160, 0, 1},
12034         {0x161, 0, 1},
12035         {0x162, 0, 1},
12036         {0x163, 0, 1},
12037         {0x164, 0, 0},
12038         {0x165, 0, 0},
12039         {0x166, 0, 0},
12040         {0x167, 0, 0},
12041         {0x168, 0, 0},
12042         {0x169, 0, 0},
12043         {0x16A, 0, 1},
12044         {0x16B, 0, 1},
12045         {0x16C, 0, 1},
12046         {0x16D, 0, 0},
12047         {0x170, 0, 0},
12048         {0x171, 0x77, 0},
12049         {0x172, 0x77, 0},
12050         {0x173, 0x77, 0},
12051         {0x174, 0x77, 0},
12052         {0x175, 0, 0},
12053         {0x176, 0x3, 0},
12054         {0x177, 0x37, 0},
12055         {0x178, 0x3, 0},
12056         {0x179, 0, 0},
12057         {0x17B, 0x21, 0},
12058         {0x17C, 0, 0},
12059         {0x17D, 0xaa, 0},
12060         {0x17E, 0, 0},
12061         {0x190, 0, 0},
12062         {0x191, 0x77, 0},
12063         {0x192, 0x77, 0},
12064         {0x193, 0x77, 0},
12065         {0x194, 0x77, 0},
12066         {0x195, 0, 0},
12067         {0x196, 0x3, 0},
12068         {0x197, 0x37, 0},
12069         {0x198, 0x3, 0},
12070         {0x199, 0, 0},
12071         {0x19B, 0x21, 0},
12072         {0x19C, 0, 0},
12073         {0x19D, 0xaa, 0},
12074         {0x19E, 0, 0},
12075         {0x1A1, 0x2, 0},
12076         {0x1A2, 0xf, 0},
12077         {0x1A3, 0xf, 0},
12078         {0x1A4, 0, 1},
12079         {0x1A5, 0, 1},
12080         {0x1A6, 0, 1},
12081         {0x1A7, 0x2, 0},
12082         {0x1A8, 0xf, 0},
12083         {0x1A9, 0xf, 0},
12084         {0x1AA, 0, 1},
12085         {0x1AB, 0, 1},
12086         {0x1AC, 0, 1},
12087         {0x1AD, 0x84, 0},
12088         {0x1AE, 0x60, 0},
12089         {0x1AF, 0x47, 0},
12090         {0x1B0, 0x47, 0},
12091         {0x1B1, 0, 0},
12092         {0x1B2, 0, 0},
12093         {0x1B3, 0, 0},
12094         {0x1B4, 0, 0},
12095         {0x1B5, 0, 0},
12096         {0x1B6, 0, 0},
12097         {0x1B7, 0xc, 1},
12098         {0x1B8, 0, 0},
12099         {0x1B9, 0, 0},
12100         {0x1BA, 0, 0},
12101         {0x1BB, 0, 0},
12102         {0x1BC, 0, 0},
12103         {0x1BD, 0, 0},
12104         {0x1BE, 0, 0},
12105         {0x1BF, 0, 0},
12106         {0x1C0, 0, 0},
12107         {0x1C1, 0x1, 1},
12108         {0x1C2, 0x80, 1},
12109         {0x1C3, 0, 0},
12110         {0x1C4, 0, 0},
12111         {0x1C5, 0, 0},
12112         {0x1C6, 0, 0},
12113         {0x1C7, 0, 0},
12114         {0x1C8, 0, 0},
12115         {0x1C9, 0, 0},
12116         {0x1CA, 0, 0},
12117         {0xFFFF, 0, 0}
12118 };
12119
12120 radio_20xx_regs_t regs_2057_rev5v1[] = {
12121         {0x00, 0x15, 1},
12122         {0x01, 0x57, 1},
12123         {0x02, 0x20, 1},
12124         {0x03, 0x1f, 0},
12125         {0x04, 0x4, 0},
12126         {0x05, 0x2, 0},
12127         {0x06, 0x1, 0},
12128         {0x07, 0x1, 0},
12129         {0x08, 0x1, 0},
12130         {0x09, 0x69, 0},
12131         {0x0A, 0x66, 0},
12132         {0x0B, 0x6, 0},
12133         {0x0C, 0x18, 0},
12134         {0x0D, 0x3, 0},
12135         {0x0E, 0x20, 0},
12136         {0x0F, 0x20, 0},
12137         {0x10, 0, 0},
12138         {0x11, 0x7c, 0},
12139         {0x12, 0x42, 0},
12140         {0x13, 0xbd, 0},
12141         {0x14, 0x7, 0},
12142         {0x15, 0x87, 0},
12143         {0x16, 0x8, 0},
12144         {0x17, 0x17, 0},
12145         {0x18, 0x7, 0},
12146         {0x19, 0, 0},
12147         {0x1A, 0x2, 0},
12148         {0x1B, 0x13, 0},
12149         {0x1C, 0x3e, 0},
12150         {0x1D, 0x3e, 0},
12151         {0x1E, 0x96, 0},
12152         {0x1F, 0x4, 0},
12153         {0x20, 0, 0},
12154         {0x21, 0, 0},
12155         {0x22, 0x17, 0},
12156         {0x23, 0x6, 1},
12157         {0x24, 0x1, 0},
12158         {0x25, 0x6, 0},
12159         {0x26, 0x4, 0},
12160         {0x27, 0xd, 0},
12161         {0x28, 0xd, 0},
12162         {0x29, 0x30, 0},
12163         {0x2A, 0x32, 0},
12164         {0x2B, 0x8, 0},
12165         {0x2C, 0x1c, 0},
12166         {0x2D, 0x2, 0},
12167         {0x2E, 0x4, 0},
12168         {0x2F, 0x7f, 0},
12169         {0x30, 0x27, 0},
12170         {0x31, 0, 1},
12171         {0x32, 0, 1},
12172         {0x33, 0, 1},
12173         {0x34, 0, 0},
12174         {0x35, 0x20, 0},
12175         {0x36, 0x18, 0},
12176         {0x37, 0x7, 0},
12177         {0x38, 0x66, 0},
12178         {0x39, 0x66, 0},
12179         {0x3C, 0xff, 0},
12180         {0x3D, 0xff, 0},
12181         {0x40, 0x16, 0},
12182         {0x41, 0x7, 0},
12183         {0x45, 0x3, 0},
12184         {0x46, 0x1, 0},
12185         {0x47, 0x7, 0},
12186         {0x4B, 0x66, 0},
12187         {0x4C, 0x66, 0},
12188         {0x4D, 0, 0},
12189         {0x4E, 0x4, 0},
12190         {0x4F, 0xc, 0},
12191         {0x50, 0, 0},
12192         {0x51, 0x70, 1},
12193         {0x56, 0x7, 0},
12194         {0x57, 0, 0},
12195         {0x58, 0, 0},
12196         {0x59, 0x88, 1},
12197         {0x5A, 0, 0},
12198         {0x5B, 0x1f, 0},
12199         {0x5C, 0x20, 1},
12200         {0x5D, 0x1, 0},
12201         {0x5E, 0x30, 0},
12202         {0x5F, 0x70, 0},
12203         {0x60, 0, 0},
12204         {0x61, 0, 0},
12205         {0x62, 0x33, 1},
12206         {0x63, 0xf, 1},
12207         {0x64, 0xf, 1},
12208         {0x65, 0, 0},
12209         {0x66, 0x11, 0},
12210         {0x80, 0x3c, 0},
12211         {0x81, 0x1, 1},
12212         {0x82, 0xa, 0},
12213         {0x85, 0, 0},
12214         {0x86, 0x40, 0},
12215         {0x87, 0x40, 0},
12216         {0x88, 0x88, 0},
12217         {0x89, 0x10, 0},
12218         {0x8A, 0xf0, 0},
12219         {0x8B, 0x10, 0},
12220         {0x8C, 0xf0, 0},
12221         {0x8F, 0x10, 0},
12222         {0x90, 0x55, 0},
12223         {0x91, 0x3f, 1},
12224         {0x92, 0x36, 1},
12225         {0x93, 0, 0},
12226         {0x94, 0, 0},
12227         {0x95, 0, 0},
12228         {0x96, 0x87, 0},
12229         {0x97, 0x11, 0},
12230         {0x98, 0, 0},
12231         {0x99, 0x33, 0},
12232         {0x9A, 0x88, 0},
12233         {0xA1, 0x20, 1},
12234         {0xA2, 0x3f, 0},
12235         {0xA3, 0x44, 0},
12236         {0xA4, 0x8c, 0},
12237         {0xA5, 0x6c, 0},
12238         {0xA6, 0x22, 0},
12239         {0xA7, 0xbe, 0},
12240         {0xA8, 0x55, 0},
12241         {0xAA, 0xc, 0},
12242         {0xAB, 0xaa, 0},
12243         {0xAC, 0x2, 0},
12244         {0xAD, 0, 0},
12245         {0xAE, 0x10, 0},
12246         {0xAF, 0x1, 0},
12247         {0xB0, 0, 0},
12248         {0xB1, 0, 0},
12249         {0xB2, 0x80, 0},
12250         {0xB3, 0x60, 0},
12251         {0xB4, 0x44, 0},
12252         {0xB5, 0x55, 0},
12253         {0xB6, 0x1, 0},
12254         {0xB7, 0x55, 0},
12255         {0xB8, 0x1, 0},
12256         {0xB9, 0x5, 0},
12257         {0xBA, 0x55, 0},
12258         {0xBB, 0x55, 0},
12259         {0xC3, 0, 0},
12260         {0xC4, 0, 0},
12261         {0xC5, 0, 0},
12262         {0xC6, 0, 0},
12263         {0xC7, 0, 0},
12264         {0xC8, 0, 0},
12265         {0xC9, 0x1, 1},
12266         {0xCA, 0, 0},
12267         {0xCB, 0, 0},
12268         {0xCD, 0, 0},
12269         {0xCE, 0x5e, 0},
12270         {0xCF, 0xc, 0},
12271         {0xD0, 0xc, 0},
12272         {0xD1, 0xc, 0},
12273         {0xD2, 0, 0},
12274         {0xD3, 0x2b, 0},
12275         {0xD4, 0xc, 0},
12276         {0xD5, 0, 0},
12277         {0xD6, 0x70, 1},
12278         {0xDB, 0x7, 0},
12279         {0xDC, 0, 0},
12280         {0xDD, 0, 0},
12281         {0xDE, 0x88, 1},
12282         {0xDF, 0, 0},
12283         {0xE0, 0x1f, 0},
12284         {0xE1, 0x20, 1},
12285         {0xE2, 0x1, 0},
12286         {0xE3, 0x30, 0},
12287         {0xE4, 0x70, 0},
12288         {0xE5, 0, 0},
12289         {0xE6, 0, 0},
12290         {0xE7, 0x33, 0},
12291         {0xE8, 0xf, 1},
12292         {0xE9, 0xf, 1},
12293         {0xEA, 0, 0},
12294         {0xEB, 0x11, 0},
12295         {0x105, 0x3c, 0},
12296         {0x106, 0x1, 1},
12297         {0x107, 0xa, 0},
12298         {0x10A, 0, 0},
12299         {0x10B, 0x40, 0},
12300         {0x10C, 0x40, 0},
12301         {0x10D, 0x88, 0},
12302         {0x10E, 0x10, 0},
12303         {0x10F, 0xf0, 0},
12304         {0x110, 0x10, 0},
12305         {0x111, 0xf0, 0},
12306         {0x114, 0x10, 0},
12307         {0x115, 0x55, 0},
12308         {0x116, 0x3f, 1},
12309         {0x117, 0x36, 1},
12310         {0x118, 0, 0},
12311         {0x119, 0, 0},
12312         {0x11A, 0, 0},
12313         {0x11B, 0x87, 0},
12314         {0x11C, 0x11, 0},
12315         {0x11D, 0, 0},
12316         {0x11E, 0x33, 0},
12317         {0x11F, 0x88, 0},
12318         {0x126, 0x20, 1},
12319         {0x127, 0x3f, 0},
12320         {0x128, 0x44, 0},
12321         {0x129, 0x8c, 0},
12322         {0x12A, 0x6c, 0},
12323         {0x12B, 0x22, 0},
12324         {0x12C, 0xbe, 0},
12325         {0x12D, 0x55, 0},
12326         {0x12F, 0xc, 0},
12327         {0x130, 0xaa, 0},
12328         {0x131, 0x2, 0},
12329         {0x132, 0, 0},
12330         {0x133, 0x10, 0},
12331         {0x134, 0x1, 0},
12332         {0x135, 0, 0},
12333         {0x136, 0, 0},
12334         {0x137, 0x80, 0},
12335         {0x138, 0x60, 0},
12336         {0x139, 0x44, 0},
12337         {0x13A, 0x55, 0},
12338         {0x13B, 0x1, 0},
12339         {0x13C, 0x55, 0},
12340         {0x13D, 0x1, 0},
12341         {0x13E, 0x5, 0},
12342         {0x13F, 0x55, 0},
12343         {0x140, 0x55, 0},
12344         {0x148, 0, 0},
12345         {0x149, 0, 0},
12346         {0x14A, 0, 0},
12347         {0x14B, 0, 0},
12348         {0x14C, 0, 0},
12349         {0x14D, 0, 0},
12350         {0x14E, 0x1, 1},
12351         {0x14F, 0, 0},
12352         {0x150, 0, 0},
12353         {0x154, 0xc, 0},
12354         {0x155, 0xc, 0},
12355         {0x156, 0xc, 0},
12356         {0x157, 0, 0},
12357         {0x158, 0x2b, 0},
12358         {0x159, 0x84, 0},
12359         {0x15A, 0x15, 0},
12360         {0x15B, 0xf, 0},
12361         {0x15C, 0, 0},
12362         {0x15D, 0, 0},
12363         {0x15E, 0, 1},
12364         {0x15F, 0, 1},
12365         {0x160, 0, 1},
12366         {0x161, 0, 1},
12367         {0x162, 0, 1},
12368         {0x163, 0, 1},
12369         {0x164, 0, 0},
12370         {0x165, 0, 0},
12371         {0x166, 0, 0},
12372         {0x167, 0, 0},
12373         {0x168, 0, 0},
12374         {0x169, 0, 0},
12375         {0x16A, 0, 1},
12376         {0x16B, 0, 1},
12377         {0x16C, 0, 1},
12378         {0x16D, 0, 0},
12379         {0x170, 0, 0},
12380         {0x171, 0x77, 0},
12381         {0x172, 0x77, 0},
12382         {0x173, 0x77, 0},
12383         {0x174, 0x77, 0},
12384         {0x175, 0, 0},
12385         {0x176, 0x3, 0},
12386         {0x177, 0x37, 0},
12387         {0x178, 0x3, 0},
12388         {0x179, 0, 0},
12389         {0x17B, 0x21, 0},
12390         {0x17C, 0, 0},
12391         {0x17D, 0xaa, 0},
12392         {0x17E, 0, 0},
12393         {0x190, 0, 0},
12394         {0x191, 0x77, 0},
12395         {0x192, 0x77, 0},
12396         {0x193, 0x77, 0},
12397         {0x194, 0x77, 0},
12398         {0x195, 0, 0},
12399         {0x196, 0x3, 0},
12400         {0x197, 0x37, 0},
12401         {0x198, 0x3, 0},
12402         {0x199, 0, 0},
12403         {0x19B, 0x21, 0},
12404         {0x19C, 0, 0},
12405         {0x19D, 0xaa, 0},
12406         {0x19E, 0, 0},
12407         {0x1A1, 0x2, 0},
12408         {0x1A2, 0xf, 0},
12409         {0x1A3, 0xf, 0},
12410         {0x1A4, 0, 1},
12411         {0x1A5, 0, 1},
12412         {0x1A6, 0, 1},
12413         {0x1A7, 0x2, 0},
12414         {0x1A8, 0xf, 0},
12415         {0x1A9, 0xf, 0},
12416         {0x1AA, 0, 1},
12417         {0x1AB, 0, 1},
12418         {0x1AC, 0, 1},
12419         {0x1AD, 0x84, 0},
12420         {0x1AE, 0x60, 0},
12421         {0x1AF, 0x47, 0},
12422         {0x1B0, 0x47, 0},
12423         {0x1B1, 0, 0},
12424         {0x1B2, 0, 0},
12425         {0x1B3, 0, 0},
12426         {0x1B4, 0, 0},
12427         {0x1B5, 0, 0},
12428         {0x1B6, 0, 0},
12429         {0x1B7, 0xc, 1},
12430         {0x1B8, 0, 0},
12431         {0x1B9, 0, 0},
12432         {0x1BA, 0, 0},
12433         {0x1BB, 0, 0},
12434         {0x1BC, 0, 0},
12435         {0x1BD, 0, 0},
12436         {0x1BE, 0, 0},
12437         {0x1BF, 0, 0},
12438         {0x1C0, 0, 0},
12439         {0x1C1, 0x1, 1},
12440         {0x1C2, 0x80, 1},
12441         {0x1C3, 0, 0},
12442         {0x1C4, 0, 0},
12443         {0x1C5, 0, 0},
12444         {0x1C6, 0, 0},
12445         {0x1C7, 0, 0},
12446         {0x1C8, 0, 0},
12447         {0x1C9, 0, 0},
12448         {0x1CA, 0, 0},
12449         {0xFFFF, 0, 0}
12450 };
12451
12452 radio_20xx_regs_t regs_2057_rev7[] = {
12453         {0x00, 0, 1},
12454         {0x01, 0x57, 1},
12455         {0x02, 0x20, 1},
12456         {0x03, 0x1f, 0},
12457         {0x04, 0x4, 0},
12458         {0x05, 0x2, 0},
12459         {0x06, 0x1, 0},
12460         {0x07, 0x1, 0},
12461         {0x08, 0x1, 0},
12462         {0x09, 0x69, 0},
12463         {0x0A, 0x66, 0},
12464         {0x0B, 0x6, 0},
12465         {0x0C, 0x18, 0},
12466         {0x0D, 0x3, 0},
12467         {0x0E, 0x20, 0},
12468         {0x0F, 0x20, 0},
12469         {0x10, 0, 0},
12470         {0x11, 0x7c, 0},
12471         {0x12, 0x42, 0},
12472         {0x13, 0xbd, 0},
12473         {0x14, 0x7, 0},
12474         {0x15, 0x87, 0},
12475         {0x16, 0x8, 0},
12476         {0x17, 0x17, 0},
12477         {0x18, 0x7, 0},
12478         {0x19, 0, 0},
12479         {0x1A, 0x2, 0},
12480         {0x1B, 0x13, 0},
12481         {0x1C, 0x3e, 0},
12482         {0x1D, 0x3e, 0},
12483         {0x1E, 0x96, 0},
12484         {0x1F, 0x4, 0},
12485         {0x20, 0, 0},
12486         {0x21, 0, 0},
12487         {0x22, 0x17, 0},
12488         {0x23, 0x6, 0},
12489         {0x24, 0x1, 0},
12490         {0x25, 0x6, 0},
12491         {0x26, 0x4, 0},
12492         {0x27, 0xd, 0},
12493         {0x28, 0xd, 0},
12494         {0x29, 0x30, 0},
12495         {0x2A, 0x32, 0},
12496         {0x2B, 0x8, 0},
12497         {0x2C, 0x1c, 0},
12498         {0x2D, 0x2, 0},
12499         {0x2E, 0x4, 0},
12500         {0x2F, 0x7f, 0},
12501         {0x30, 0x27, 0},
12502         {0x31, 0, 1},
12503         {0x32, 0, 1},
12504         {0x33, 0, 1},
12505         {0x34, 0, 0},
12506         {0x35, 0x20, 0},
12507         {0x36, 0x18, 0},
12508         {0x37, 0x7, 0},
12509         {0x38, 0x66, 0},
12510         {0x39, 0x66, 0},
12511         {0x3A, 0x66, 0},
12512         {0x3B, 0x66, 0},
12513         {0x3C, 0xff, 0},
12514         {0x3D, 0xff, 0},
12515         {0x3E, 0xff, 0},
12516         {0x3F, 0xff, 0},
12517         {0x40, 0x16, 0},
12518         {0x41, 0x7, 0},
12519         {0x42, 0x19, 0},
12520         {0x43, 0x7, 0},
12521         {0x44, 0x6, 0},
12522         {0x45, 0x3, 0},
12523         {0x46, 0x1, 0},
12524         {0x47, 0x7, 0},
12525         {0x48, 0x33, 0},
12526         {0x49, 0x5, 0},
12527         {0x4A, 0x77, 0},
12528         {0x4B, 0x66, 0},
12529         {0x4C, 0x66, 0},
12530         {0x4D, 0, 0},
12531         {0x4E, 0x4, 0},
12532         {0x4F, 0xc, 0},
12533         {0x50, 0, 0},
12534         {0x51, 0x70, 1},
12535         {0x56, 0x7, 0},
12536         {0x57, 0, 0},
12537         {0x58, 0, 0},
12538         {0x59, 0x88, 1},
12539         {0x5A, 0, 0},
12540         {0x5B, 0x1f, 0},
12541         {0x5C, 0x20, 1},
12542         {0x5D, 0x1, 0},
12543         {0x5E, 0x30, 0},
12544         {0x5F, 0x70, 0},
12545         {0x60, 0, 0},
12546         {0x61, 0, 0},
12547         {0x62, 0x33, 1},
12548         {0x63, 0xf, 1},
12549         {0x64, 0x13, 1},
12550         {0x65, 0, 0},
12551         {0x66, 0xee, 1},
12552         {0x69, 0, 0},
12553         {0x6A, 0x7e, 0},
12554         {0x6B, 0x3f, 0},
12555         {0x6C, 0x7f, 0},
12556         {0x6D, 0x78, 0},
12557         {0x6E, 0x58, 1},
12558         {0x6F, 0x88, 0},
12559         {0x70, 0x8, 0},
12560         {0x71, 0xf, 0},
12561         {0x72, 0xbc, 0},
12562         {0x73, 0x8, 0},
12563         {0x74, 0x60, 0},
12564         {0x75, 0x13, 1},
12565         {0x76, 0x70, 0},
12566         {0x77, 0, 0},
12567         {0x78, 0, 0},
12568         {0x79, 0, 0},
12569         {0x7A, 0x33, 0},
12570         {0x7B, 0x13, 1},
12571         {0x7C, 0x14, 1},
12572         {0x7D, 0xee, 1},
12573         {0x80, 0x3c, 0},
12574         {0x81, 0x1, 1},
12575         {0x82, 0xa, 0},
12576         {0x83, 0x9d, 0},
12577         {0x84, 0xa, 0},
12578         {0x85, 0, 0},
12579         {0x86, 0x40, 0},
12580         {0x87, 0x40, 0},
12581         {0x88, 0x88, 0},
12582         {0x89, 0x10, 0},
12583         {0x8A, 0xf0, 0},
12584         {0x8B, 0x10, 0},
12585         {0x8C, 0xf0, 0},
12586         {0x8D, 0, 0},
12587         {0x8E, 0, 0},
12588         {0x8F, 0x10, 0},
12589         {0x90, 0x55, 0},
12590         {0x91, 0x3f, 1},
12591         {0x92, 0x36, 1},
12592         {0x93, 0, 0},
12593         {0x94, 0, 0},
12594         {0x95, 0, 0},
12595         {0x96, 0x87, 0},
12596         {0x97, 0x11, 0},
12597         {0x98, 0, 0},
12598         {0x99, 0x33, 0},
12599         {0x9A, 0x88, 0},
12600         {0x9B, 0, 0},
12601         {0x9C, 0x87, 0},
12602         {0x9D, 0x11, 0},
12603         {0x9E, 0, 0},
12604         {0x9F, 0x33, 0},
12605         {0xA0, 0x88, 0},
12606         {0xA1, 0x20, 1},
12607         {0xA2, 0x3f, 0},
12608         {0xA3, 0x44, 0},
12609         {0xA4, 0x8c, 0},
12610         {0xA5, 0x6c, 0},
12611         {0xA6, 0x22, 0},
12612         {0xA7, 0xbe, 0},
12613         {0xA8, 0x55, 0},
12614         {0xAA, 0xc, 0},
12615         {0xAB, 0xaa, 0},
12616         {0xAC, 0x2, 0},
12617         {0xAD, 0, 0},
12618         {0xAE, 0x10, 0},
12619         {0xAF, 0x1, 0},
12620         {0xB0, 0, 0},
12621         {0xB1, 0, 0},
12622         {0xB2, 0x80, 0},
12623         {0xB3, 0x60, 0},
12624         {0xB4, 0x44, 0},
12625         {0xB5, 0x55, 0},
12626         {0xB6, 0x1, 0},
12627         {0xB7, 0x55, 0},
12628         {0xB8, 0x1, 0},
12629         {0xB9, 0x5, 0},
12630         {0xBA, 0x55, 0},
12631         {0xBB, 0x55, 0},
12632         {0xC1, 0, 0},
12633         {0xC2, 0, 0},
12634         {0xC3, 0, 0},
12635         {0xC4, 0, 0},
12636         {0xC5, 0, 0},
12637         {0xC6, 0, 0},
12638         {0xC7, 0, 0},
12639         {0xC8, 0, 0},
12640         {0xC9, 0, 0},
12641         {0xCA, 0, 0},
12642         {0xCB, 0, 0},
12643         {0xCC, 0, 0},
12644         {0xCD, 0, 0},
12645         {0xCE, 0x5e, 0},
12646         {0xCF, 0xc, 0},
12647         {0xD0, 0xc, 0},
12648         {0xD1, 0xc, 0},
12649         {0xD2, 0, 0},
12650         {0xD3, 0x2b, 0},
12651         {0xD4, 0xc, 0},
12652         {0xD5, 0, 0},
12653         {0xD6, 0x70, 1},
12654         {0xDB, 0x7, 0},
12655         {0xDC, 0, 0},
12656         {0xDD, 0, 0},
12657         {0xDE, 0x88, 1},
12658         {0xDF, 0, 0},
12659         {0xE0, 0x1f, 0},
12660         {0xE1, 0x20, 1},
12661         {0xE2, 0x1, 0},
12662         {0xE3, 0x30, 0},
12663         {0xE4, 0x70, 0},
12664         {0xE5, 0, 0},
12665         {0xE6, 0, 0},
12666         {0xE7, 0x33, 0},
12667         {0xE8, 0xf, 1},
12668         {0xE9, 0x13, 1},
12669         {0xEA, 0, 0},
12670         {0xEB, 0xee, 1},
12671         {0xEE, 0, 0},
12672         {0xEF, 0x7e, 0},
12673         {0xF0, 0x3f, 0},
12674         {0xF1, 0x7f, 0},
12675         {0xF2, 0x78, 0},
12676         {0xF3, 0x58, 1},
12677         {0xF4, 0x88, 0},
12678         {0xF5, 0x8, 0},
12679         {0xF6, 0xf, 0},
12680         {0xF7, 0xbc, 0},
12681         {0xF8, 0x8, 0},
12682         {0xF9, 0x60, 0},
12683         {0xFA, 0x13, 1},
12684         {0xFB, 0x70, 0},
12685         {0xFC, 0, 0},
12686         {0xFD, 0, 0},
12687         {0xFE, 0, 0},
12688         {0xFF, 0x33, 0},
12689         {0x100, 0x13, 1},
12690         {0x101, 0x14, 1},
12691         {0x102, 0xee, 1},
12692         {0x105, 0x3c, 0},
12693         {0x106, 0x1, 1},
12694         {0x107, 0xa, 0},
12695         {0x108, 0x9d, 0},
12696         {0x109, 0xa, 0},
12697         {0x10A, 0, 0},
12698         {0x10B, 0x40, 0},
12699         {0x10C, 0x40, 0},
12700         {0x10D, 0x88, 0},
12701         {0x10E, 0x10, 0},
12702         {0x10F, 0xf0, 0},
12703         {0x110, 0x10, 0},
12704         {0x111, 0xf0, 0},
12705         {0x112, 0, 0},
12706         {0x113, 0, 0},
12707         {0x114, 0x10, 0},
12708         {0x115, 0x55, 0},
12709         {0x116, 0x3f, 1},
12710         {0x117, 0x36, 1},
12711         {0x118, 0, 0},
12712         {0x119, 0, 0},
12713         {0x11A, 0, 0},
12714         {0x11B, 0x87, 0},
12715         {0x11C, 0x11, 0},
12716         {0x11D, 0, 0},
12717         {0x11E, 0x33, 0},
12718         {0x11F, 0x88, 0},
12719         {0x120, 0, 0},
12720         {0x121, 0x87, 0},
12721         {0x122, 0x11, 0},
12722         {0x123, 0, 0},
12723         {0x124, 0x33, 0},
12724         {0x125, 0x88, 0},
12725         {0x126, 0x20, 1},
12726         {0x127, 0x3f, 0},
12727         {0x128, 0x44, 0},
12728         {0x129, 0x8c, 0},
12729         {0x12A, 0x6c, 0},
12730         {0x12B, 0x22, 0},
12731         {0x12C, 0xbe, 0},
12732         {0x12D, 0x55, 0},
12733         {0x12F, 0xc, 0},
12734         {0x130, 0xaa, 0},
12735         {0x131, 0x2, 0},
12736         {0x132, 0, 0},
12737         {0x133, 0x10, 0},
12738         {0x134, 0x1, 0},
12739         {0x135, 0, 0},
12740         {0x136, 0, 0},
12741         {0x137, 0x80, 0},
12742         {0x138, 0x60, 0},
12743         {0x139, 0x44, 0},
12744         {0x13A, 0x55, 0},
12745         {0x13B, 0x1, 0},
12746         {0x13C, 0x55, 0},
12747         {0x13D, 0x1, 0},
12748         {0x13E, 0x5, 0},
12749         {0x13F, 0x55, 0},
12750         {0x140, 0x55, 0},
12751         {0x146, 0, 0},
12752         {0x147, 0, 0},
12753         {0x148, 0, 0},
12754         {0x149, 0, 0},
12755         {0x14A, 0, 0},
12756         {0x14B, 0, 0},
12757         {0x14C, 0, 0},
12758         {0x14D, 0, 0},
12759         {0x14E, 0, 0},
12760         {0x14F, 0, 0},
12761         {0x150, 0, 0},
12762         {0x151, 0, 0},
12763         {0x154, 0xc, 0},
12764         {0x155, 0xc, 0},
12765         {0x156, 0xc, 0},
12766         {0x157, 0, 0},
12767         {0x158, 0x2b, 0},
12768         {0x159, 0x84, 0},
12769         {0x15A, 0x15, 0},
12770         {0x15B, 0xf, 0},
12771         {0x15C, 0, 0},
12772         {0x15D, 0, 0},
12773         {0x15E, 0, 1},
12774         {0x15F, 0, 1},
12775         {0x160, 0, 1},
12776         {0x161, 0, 1},
12777         {0x162, 0, 1},
12778         {0x163, 0, 1},
12779         {0x164, 0, 0},
12780         {0x165, 0, 0},
12781         {0x166, 0, 0},
12782         {0x167, 0, 0},
12783         {0x168, 0, 0},
12784         {0x169, 0, 0},
12785         {0x16A, 0, 1},
12786         {0x16B, 0, 1},
12787         {0x16C, 0, 1},
12788         {0x16D, 0, 0},
12789         {0x170, 0, 0},
12790         {0x171, 0x77, 0},
12791         {0x172, 0x77, 0},
12792         {0x173, 0x77, 0},
12793         {0x174, 0x77, 0},
12794         {0x175, 0, 0},
12795         {0x176, 0x3, 0},
12796         {0x177, 0x37, 0},
12797         {0x178, 0x3, 0},
12798         {0x179, 0, 0},
12799         {0x17A, 0x21, 0},
12800         {0x17B, 0x21, 0},
12801         {0x17C, 0, 0},
12802         {0x17D, 0xaa, 0},
12803         {0x17E, 0, 0},
12804         {0x17F, 0xaa, 0},
12805         {0x180, 0, 0},
12806         {0x190, 0, 0},
12807         {0x191, 0x77, 0},
12808         {0x192, 0x77, 0},
12809         {0x193, 0x77, 0},
12810         {0x194, 0x77, 0},
12811         {0x195, 0, 0},
12812         {0x196, 0x3, 0},
12813         {0x197, 0x37, 0},
12814         {0x198, 0x3, 0},
12815         {0x199, 0, 0},
12816         {0x19A, 0x21, 0},
12817         {0x19B, 0x21, 0},
12818         {0x19C, 0, 0},
12819         {0x19D, 0xaa, 0},
12820         {0x19E, 0, 0},
12821         {0x19F, 0xaa, 0},
12822         {0x1A0, 0, 0},
12823         {0x1A1, 0x2, 0},
12824         {0x1A2, 0xf, 0},
12825         {0x1A3, 0xf, 0},
12826         {0x1A4, 0, 1},
12827         {0x1A5, 0, 1},
12828         {0x1A6, 0, 1},
12829         {0x1A7, 0x2, 0},
12830         {0x1A8, 0xf, 0},
12831         {0x1A9, 0xf, 0},
12832         {0x1AA, 0, 1},
12833         {0x1AB, 0, 1},
12834         {0x1AC, 0, 1},
12835         {0x1AD, 0x84, 0},
12836         {0x1AE, 0x60, 0},
12837         {0x1AF, 0x47, 0},
12838         {0x1B0, 0x47, 0},
12839         {0x1B1, 0, 0},
12840         {0x1B2, 0, 0},
12841         {0x1B3, 0, 0},
12842         {0x1B4, 0, 0},
12843         {0x1B5, 0, 0},
12844         {0x1B6, 0, 0},
12845         {0x1B7, 0x5, 1},
12846         {0x1B8, 0, 0},
12847         {0x1B9, 0, 0},
12848         {0x1BA, 0, 0},
12849         {0x1BB, 0, 0},
12850         {0x1BC, 0, 0},
12851         {0x1BD, 0, 0},
12852         {0x1BE, 0, 0},
12853         {0x1BF, 0, 0},
12854         {0x1C0, 0, 0},
12855         {0x1C1, 0, 0},
12856         {0x1C2, 0xa0, 1},
12857         {0x1C3, 0, 0},
12858         {0x1C4, 0, 0},
12859         {0x1C5, 0, 0},
12860         {0x1C6, 0, 0},
12861         {0x1C7, 0, 0},
12862         {0x1C8, 0, 0},
12863         {0x1C9, 0, 0},
12864         {0x1CA, 0, 0},
12865         {0xFFFF, 0, 0}
12866 };
12867
12868 radio_20xx_regs_t regs_2057_rev8[] = {
12869         {0x00, 0x8, 1},
12870         {0x01, 0x57, 1},
12871         {0x02, 0x20, 1},
12872         {0x03, 0x1f, 0},
12873         {0x04, 0x4, 0},
12874         {0x05, 0x2, 0},
12875         {0x06, 0x1, 0},
12876         {0x07, 0x1, 0},
12877         {0x08, 0x1, 0},
12878         {0x09, 0x69, 0},
12879         {0x0A, 0x66, 0},
12880         {0x0B, 0x6, 0},
12881         {0x0C, 0x18, 0},
12882         {0x0D, 0x3, 0},
12883         {0x0E, 0x20, 0},
12884         {0x0F, 0x20, 0},
12885         {0x10, 0, 0},
12886         {0x11, 0x7c, 0},
12887         {0x12, 0x42, 0},
12888         {0x13, 0xbd, 0},
12889         {0x14, 0x7, 0},
12890         {0x15, 0x87, 0},
12891         {0x16, 0x8, 0},
12892         {0x17, 0x17, 0},
12893         {0x18, 0x7, 0},
12894         {0x19, 0, 0},
12895         {0x1A, 0x2, 0},
12896         {0x1B, 0x13, 0},
12897         {0x1C, 0x3e, 0},
12898         {0x1D, 0x3e, 0},
12899         {0x1E, 0x96, 0},
12900         {0x1F, 0x4, 0},
12901         {0x20, 0, 0},
12902         {0x21, 0, 0},
12903         {0x22, 0x17, 0},
12904         {0x23, 0x6, 0},
12905         {0x24, 0x1, 0},
12906         {0x25, 0x6, 0},
12907         {0x26, 0x4, 0},
12908         {0x27, 0xd, 0},
12909         {0x28, 0xd, 0},
12910         {0x29, 0x30, 0},
12911         {0x2A, 0x32, 0},
12912         {0x2B, 0x8, 0},
12913         {0x2C, 0x1c, 0},
12914         {0x2D, 0x2, 0},
12915         {0x2E, 0x4, 0},
12916         {0x2F, 0x7f, 0},
12917         {0x30, 0x27, 0},
12918         {0x31, 0, 1},
12919         {0x32, 0, 1},
12920         {0x33, 0, 1},
12921         {0x34, 0, 0},
12922         {0x35, 0x20, 0},
12923         {0x36, 0x18, 0},
12924         {0x37, 0x7, 0},
12925         {0x38, 0x66, 0},
12926         {0x39, 0x66, 0},
12927         {0x3A, 0x66, 0},
12928         {0x3B, 0x66, 0},
12929         {0x3C, 0xff, 0},
12930         {0x3D, 0xff, 0},
12931         {0x3E, 0xff, 0},
12932         {0x3F, 0xff, 0},
12933         {0x40, 0x16, 0},
12934         {0x41, 0x7, 0},
12935         {0x42, 0x19, 0},
12936         {0x43, 0x7, 0},
12937         {0x44, 0x6, 0},
12938         {0x45, 0x3, 0},
12939         {0x46, 0x1, 0},
12940         {0x47, 0x7, 0},
12941         {0x48, 0x33, 0},
12942         {0x49, 0x5, 0},
12943         {0x4A, 0x77, 0},
12944         {0x4B, 0x66, 0},
12945         {0x4C, 0x66, 0},
12946         {0x4D, 0, 0},
12947         {0x4E, 0x4, 0},
12948         {0x4F, 0xc, 0},
12949         {0x50, 0, 0},
12950         {0x51, 0x70, 1},
12951         {0x56, 0x7, 0},
12952         {0x57, 0, 0},
12953         {0x58, 0, 0},
12954         {0x59, 0x88, 1},
12955         {0x5A, 0, 0},
12956         {0x5B, 0x1f, 0},
12957         {0x5C, 0x20, 1},
12958         {0x5D, 0x1, 0},
12959         {0x5E, 0x30, 0},
12960         {0x5F, 0x70, 0},
12961         {0x60, 0, 0},
12962         {0x61, 0, 0},
12963         {0x62, 0x33, 1},
12964         {0x63, 0xf, 1},
12965         {0x64, 0xf, 1},
12966         {0x65, 0, 0},
12967         {0x66, 0x11, 0},
12968         {0x69, 0, 0},
12969         {0x6A, 0x7e, 0},
12970         {0x6B, 0x3f, 0},
12971         {0x6C, 0x7f, 0},
12972         {0x6D, 0x78, 0},
12973         {0x6E, 0x58, 1},
12974         {0x6F, 0x88, 0},
12975         {0x70, 0x8, 0},
12976         {0x71, 0xf, 0},
12977         {0x72, 0xbc, 0},
12978         {0x73, 0x8, 0},
12979         {0x74, 0x60, 0},
12980         {0x75, 0x13, 1},
12981         {0x76, 0x70, 0},
12982         {0x77, 0, 0},
12983         {0x78, 0, 0},
12984         {0x79, 0, 0},
12985         {0x7A, 0x33, 0},
12986         {0x7B, 0x13, 1},
12987         {0x7C, 0xf, 1},
12988         {0x7D, 0xee, 1},
12989         {0x80, 0x3c, 0},
12990         {0x81, 0x1, 1},
12991         {0x82, 0xa, 0},
12992         {0x83, 0x9d, 0},
12993         {0x84, 0xa, 0},
12994         {0x85, 0, 0},
12995         {0x86, 0x40, 0},
12996         {0x87, 0x40, 0},
12997         {0x88, 0x88, 0},
12998         {0x89, 0x10, 0},
12999         {0x8A, 0xf0, 0},
13000         {0x8B, 0x10, 0},
13001         {0x8C, 0xf0, 0},
13002         {0x8D, 0, 0},
13003         {0x8E, 0, 0},
13004         {0x8F, 0x10, 0},
13005         {0x90, 0x55, 0},
13006         {0x91, 0x3f, 1},
13007         {0x92, 0x36, 1},
13008         {0x93, 0, 0},
13009         {0x94, 0, 0},
13010         {0x95, 0, 0},
13011         {0x96, 0x87, 0},
13012         {0x97, 0x11, 0},
13013         {0x98, 0, 0},
13014         {0x99, 0x33, 0},
13015         {0x9A, 0x88, 0},
13016         {0x9B, 0, 0},
13017         {0x9C, 0x87, 0},
13018         {0x9D, 0x11, 0},
13019         {0x9E, 0, 0},
13020         {0x9F, 0x33, 0},
13021         {0xA0, 0x88, 0},
13022         {0xA1, 0x20, 1},
13023         {0xA2, 0x3f, 0},
13024         {0xA3, 0x44, 0},
13025         {0xA4, 0x8c, 0},
13026         {0xA5, 0x6c, 0},
13027         {0xA6, 0x22, 0},
13028         {0xA7, 0xbe, 0},
13029         {0xA8, 0x55, 0},
13030         {0xAA, 0xc, 0},
13031         {0xAB, 0xaa, 0},
13032         {0xAC, 0x2, 0},
13033         {0xAD, 0, 0},
13034         {0xAE, 0x10, 0},
13035         {0xAF, 0x1, 0},
13036         {0xB0, 0, 0},
13037         {0xB1, 0, 0},
13038         {0xB2, 0x80, 0},
13039         {0xB3, 0x60, 0},
13040         {0xB4, 0x44, 0},
13041         {0xB5, 0x55, 0},
13042         {0xB6, 0x1, 0},
13043         {0xB7, 0x55, 0},
13044         {0xB8, 0x1, 0},
13045         {0xB9, 0x5, 0},
13046         {0xBA, 0x55, 0},
13047         {0xBB, 0x55, 0},
13048         {0xC1, 0, 0},
13049         {0xC2, 0, 0},
13050         {0xC3, 0, 0},
13051         {0xC4, 0, 0},
13052         {0xC5, 0, 0},
13053         {0xC6, 0, 0},
13054         {0xC7, 0, 0},
13055         {0xC8, 0, 0},
13056         {0xC9, 0x1, 1},
13057         {0xCA, 0, 0},
13058         {0xCB, 0, 0},
13059         {0xCC, 0, 0},
13060         {0xCD, 0, 0},
13061         {0xCE, 0x5e, 0},
13062         {0xCF, 0xc, 0},
13063         {0xD0, 0xc, 0},
13064         {0xD1, 0xc, 0},
13065         {0xD2, 0, 0},
13066         {0xD3, 0x2b, 0},
13067         {0xD4, 0xc, 0},
13068         {0xD5, 0, 0},
13069         {0xD6, 0x70, 1},
13070         {0xDB, 0x7, 0},
13071         {0xDC, 0, 0},
13072         {0xDD, 0, 0},
13073         {0xDE, 0x88, 1},
13074         {0xDF, 0, 0},
13075         {0xE0, 0x1f, 0},
13076         {0xE1, 0x20, 1},
13077         {0xE2, 0x1, 0},
13078         {0xE3, 0x30, 0},
13079         {0xE4, 0x70, 0},
13080         {0xE5, 0, 0},
13081         {0xE6, 0, 0},
13082         {0xE7, 0x33, 0},
13083         {0xE8, 0xf, 1},
13084         {0xE9, 0xf, 1},
13085         {0xEA, 0, 0},
13086         {0xEB, 0x11, 0},
13087         {0xEE, 0, 0},
13088         {0xEF, 0x7e, 0},
13089         {0xF0, 0x3f, 0},
13090         {0xF1, 0x7f, 0},
13091         {0xF2, 0x78, 0},
13092         {0xF3, 0x58, 1},
13093         {0xF4, 0x88, 0},
13094         {0xF5, 0x8, 0},
13095         {0xF6, 0xf, 0},
13096         {0xF7, 0xbc, 0},
13097         {0xF8, 0x8, 0},
13098         {0xF9, 0x60, 0},
13099         {0xFA, 0x13, 1},
13100         {0xFB, 0x70, 0},
13101         {0xFC, 0, 0},
13102         {0xFD, 0, 0},
13103         {0xFE, 0, 0},
13104         {0xFF, 0x33, 0},
13105         {0x100, 0x13, 1},
13106         {0x101, 0xf, 1},
13107         {0x102, 0xee, 1},
13108         {0x105, 0x3c, 0},
13109         {0x106, 0x1, 1},
13110         {0x107, 0xa, 0},
13111         {0x108, 0x9d, 0},
13112         {0x109, 0xa, 0},
13113         {0x10A, 0, 0},
13114         {0x10B, 0x40, 0},
13115         {0x10C, 0x40, 0},
13116         {0x10D, 0x88, 0},
13117         {0x10E, 0x10, 0},
13118         {0x10F, 0xf0, 0},
13119         {0x110, 0x10, 0},
13120         {0x111, 0xf0, 0},
13121         {0x112, 0, 0},
13122         {0x113, 0, 0},
13123         {0x114, 0x10, 0},
13124         {0x115, 0x55, 0},
13125         {0x116, 0x3f, 1},
13126         {0x117, 0x36, 1},
13127         {0x118, 0, 0},
13128         {0x119, 0, 0},
13129         {0x11A, 0, 0},
13130         {0x11B, 0x87, 0},
13131         {0x11C, 0x11, 0},
13132         {0x11D, 0, 0},
13133         {0x11E, 0x33, 0},
13134         {0x11F, 0x88, 0},
13135         {0x120, 0, 0},
13136         {0x121, 0x87, 0},
13137         {0x122, 0x11, 0},
13138         {0x123, 0, 0},
13139         {0x124, 0x33, 0},
13140         {0x125, 0x88, 0},
13141         {0x126, 0x20, 1},
13142         {0x127, 0x3f, 0},
13143         {0x128, 0x44, 0},
13144         {0x129, 0x8c, 0},
13145         {0x12A, 0x6c, 0},
13146         {0x12B, 0x22, 0},
13147         {0x12C, 0xbe, 0},
13148         {0x12D, 0x55, 0},
13149         {0x12F, 0xc, 0},
13150         {0x130, 0xaa, 0},
13151         {0x131, 0x2, 0},
13152         {0x132, 0, 0},
13153         {0x133, 0x10, 0},
13154         {0x134, 0x1, 0},
13155         {0x135, 0, 0},
13156         {0x136, 0, 0},
13157         {0x137, 0x80, 0},
13158         {0x138, 0x60, 0},
13159         {0x139, 0x44, 0},
13160         {0x13A, 0x55, 0},
13161         {0x13B, 0x1, 0},
13162         {0x13C, 0x55, 0},
13163         {0x13D, 0x1, 0},
13164         {0x13E, 0x5, 0},
13165         {0x13F, 0x55, 0},
13166         {0x140, 0x55, 0},
13167         {0x146, 0, 0},
13168         {0x147, 0, 0},
13169         {0x148, 0, 0},
13170         {0x149, 0, 0},
13171         {0x14A, 0, 0},
13172         {0x14B, 0, 0},
13173         {0x14C, 0, 0},
13174         {0x14D, 0, 0},
13175         {0x14E, 0x1, 1},
13176         {0x14F, 0, 0},
13177         {0x150, 0, 0},
13178         {0x151, 0, 0},
13179         {0x154, 0xc, 0},
13180         {0x155, 0xc, 0},
13181         {0x156, 0xc, 0},
13182         {0x157, 0, 0},
13183         {0x158, 0x2b, 0},
13184         {0x159, 0x84, 0},
13185         {0x15A, 0x15, 0},
13186         {0x15B, 0xf, 0},
13187         {0x15C, 0, 0},
13188         {0x15D, 0, 0},
13189         {0x15E, 0, 1},
13190         {0x15F, 0, 1},
13191         {0x160, 0, 1},
13192         {0x161, 0, 1},
13193         {0x162, 0, 1},
13194         {0x163, 0, 1},
13195         {0x164, 0, 0},
13196         {0x165, 0, 0},
13197         {0x166, 0, 0},
13198         {0x167, 0, 0},
13199         {0x168, 0, 0},
13200         {0x169, 0, 0},
13201         {0x16A, 0, 1},
13202         {0x16B, 0, 1},
13203         {0x16C, 0, 1},
13204         {0x16D, 0, 0},
13205         {0x170, 0, 0},
13206         {0x171, 0x77, 0},
13207         {0x172, 0x77, 0},
13208         {0x173, 0x77, 0},
13209         {0x174, 0x77, 0},
13210         {0x175, 0, 0},
13211         {0x176, 0x3, 0},
13212         {0x177, 0x37, 0},
13213         {0x178, 0x3, 0},
13214         {0x179, 0, 0},
13215         {0x17A, 0x21, 0},
13216         {0x17B, 0x21, 0},
13217         {0x17C, 0, 0},
13218         {0x17D, 0xaa, 0},
13219         {0x17E, 0, 0},
13220         {0x17F, 0xaa, 0},
13221         {0x180, 0, 0},
13222         {0x190, 0, 0},
13223         {0x191, 0x77, 0},
13224         {0x192, 0x77, 0},
13225         {0x193, 0x77, 0},
13226         {0x194, 0x77, 0},
13227         {0x195, 0, 0},
13228         {0x196, 0x3, 0},
13229         {0x197, 0x37, 0},
13230         {0x198, 0x3, 0},
13231         {0x199, 0, 0},
13232         {0x19A, 0x21, 0},
13233         {0x19B, 0x21, 0},
13234         {0x19C, 0, 0},
13235         {0x19D, 0xaa, 0},
13236         {0x19E, 0, 0},
13237         {0x19F, 0xaa, 0},
13238         {0x1A0, 0, 0},
13239         {0x1A1, 0x2, 0},
13240         {0x1A2, 0xf, 0},
13241         {0x1A3, 0xf, 0},
13242         {0x1A4, 0, 1},
13243         {0x1A5, 0, 1},
13244         {0x1A6, 0, 1},
13245         {0x1A7, 0x2, 0},
13246         {0x1A8, 0xf, 0},
13247         {0x1A9, 0xf, 0},
13248         {0x1AA, 0, 1},
13249         {0x1AB, 0, 1},
13250         {0x1AC, 0, 1},
13251         {0x1AD, 0x84, 0},
13252         {0x1AE, 0x60, 0},
13253         {0x1AF, 0x47, 0},
13254         {0x1B0, 0x47, 0},
13255         {0x1B1, 0, 0},
13256         {0x1B2, 0, 0},
13257         {0x1B3, 0, 0},
13258         {0x1B4, 0, 0},
13259         {0x1B5, 0, 0},
13260         {0x1B6, 0, 0},
13261         {0x1B7, 0x5, 1},
13262         {0x1B8, 0, 0},
13263         {0x1B9, 0, 0},
13264         {0x1BA, 0, 0},
13265         {0x1BB, 0, 0},
13266         {0x1BC, 0, 0},
13267         {0x1BD, 0, 0},
13268         {0x1BE, 0, 0},
13269         {0x1BF, 0, 0},
13270         {0x1C0, 0, 0},
13271         {0x1C1, 0, 0},
13272         {0x1C2, 0xa0, 1},
13273         {0x1C3, 0, 0},
13274         {0x1C4, 0, 0},
13275         {0x1C5, 0, 0},
13276         {0x1C6, 0, 0},
13277         {0x1C7, 0, 0},
13278         {0x1C8, 0, 0},
13279         {0x1C9, 0, 0},
13280         {0x1CA, 0, 0},
13281         {0xFFFF, 0, 0}
13282 };
13283
13284 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13285
13286 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13287 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13288
13289 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13290         {
13291          {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13292          {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13293          {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13294          {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13295          {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13296          {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13297          {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13298          {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13299          {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13300          },
13301         {
13302          {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13303          {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13304          {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13305          {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13306          {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13307          {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13308          {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13309          {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13310          {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13311          }
13312 };
13313
13314 static const u32 nphy_tpc_txgain[] = {
13315         0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13316         0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13317         0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13318         0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13319         0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13320         0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13321         0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13322         0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13323         0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13324         0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13325         0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13326         0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13327         0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13328         0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13329         0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13330         0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13331         0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13332         0x03902942, 0x03902844, 0x03902842, 0x03902744,
13333         0x03902742, 0x03902644, 0x03902642, 0x03902544,
13334         0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13335         0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13336         0x03802842, 0x03802744, 0x03802742, 0x03802644,
13337         0x03802642, 0x03802544, 0x03802542, 0x03802444,
13338         0x03802442, 0x03802344, 0x03802342, 0x03802244,
13339         0x03802242, 0x03802144, 0x03802142, 0x03802044,
13340         0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13341         0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13342         0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13343         0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13344         0x03801842, 0x03801744, 0x03801742, 0x03801644,
13345         0x03801642, 0x03801544, 0x03801542, 0x03801444,
13346         0x03801442, 0x03801344, 0x03801342, 0x00002b00
13347 };
13348
13349 static const u16 nphy_tpc_loscale[] = {
13350         256, 256, 271, 271, 287, 256, 256, 271,
13351         271, 287, 287, 304, 304, 256, 256, 271,
13352         271, 287, 287, 304, 304, 322, 322, 341,
13353         341, 362, 362, 383, 383, 256, 256, 271,
13354         271, 287, 287, 304, 304, 322, 322, 256,
13355         256, 271, 271, 287, 287, 304, 304, 322,
13356         322, 341, 341, 362, 362, 256, 256, 271,
13357         271, 287, 287, 304, 304, 322, 322, 256,
13358         256, 271, 271, 287, 287, 304, 304, 322,
13359         322, 341, 341, 362, 362, 256, 256, 271,
13360         271, 287, 287, 304, 304, 322, 322, 341,
13361         341, 362, 362, 383, 383, 406, 406, 430,
13362         430, 455, 455, 482, 482, 511, 511, 541,
13363         541, 573, 573, 607, 607, 643, 643, 681,
13364         681, 722, 722, 764, 764, 810, 810, 858,
13365         858, 908, 908, 962, 962, 1019, 1019, 256
13366 };
13367
13368 static u32 nphy_tpc_txgain_ipa[] = {
13369         0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13370         0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13371         0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13372         0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13373         0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13374         0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13375         0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13376         0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13377         0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13378         0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13379         0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13380         0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13381         0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13382         0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13383         0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13384         0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13385         0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13386         0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13387         0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13388         0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13389         0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13390         0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13391         0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13392         0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13393         0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13394         0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13395         0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13396         0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13397         0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13398         0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13399         0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13400         0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13401 };
13402
13403 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13404         0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13405         0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13406         0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13407         0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13408         0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13409         0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13410         0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13411         0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13412         0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13413         0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13414         0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13415         0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13416         0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13417         0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13418         0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13419         0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13420         0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13421         0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13422         0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13423         0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13424         0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13425         0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13426         0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13427         0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13428         0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13429         0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13430         0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13431         0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13432         0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13433         0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13434         0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13435         0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13436 };
13437
13438 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13439         0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13440         0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13441         0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13442         0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13443         0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13444         0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13445         0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13446         0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13447         0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13448         0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13449         0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13450         0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13451         0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13452         0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13453         0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13454         0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13455         0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13456         0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13457         0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13458         0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13459         0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13460         0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13461         0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13462         0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13463         0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13464         0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13465         0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13466         0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13467         0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13468         0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13469         0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13470         0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13471 };
13472
13473 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13474         0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13475         0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13476         0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13477         0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13478         0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13479         0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13480         0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13481         0x70470028, 0x70470026, 0x70470024, 0x70470022,
13482         0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13483         0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13484         0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13485         0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13486         0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13487         0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13488         0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13489         0x70170019, 0x70170018, 0x70170016, 0x70170015,
13490         0x70170014, 0x70170013, 0x70170012, 0x70170010,
13491         0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13492         0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13493         0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13494         0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13495         0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13496         0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13497         0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13498         0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13499         0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13500         0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13501         0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13502         0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13503         0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13504         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13505         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13506 };
13507
13508 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13509         0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13510         0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13511         0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13512         0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13513         0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13514         0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13515         0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13516         0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13517         0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13518         0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13519         0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13520         0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13521         0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13522         0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13523         0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13524         0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13525         0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13526         0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13527         0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13528         0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13529         0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13530         0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13531         0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13532         0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13533         0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13534         0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13535         0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13536         0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13537         0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13538         0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13539         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13540         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13541 };
13542
13543 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13544         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13545         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13546         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13547         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13548         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13549         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13550         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13551         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13552         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13553         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13554         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13555         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13556         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13557         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13558         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13559         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13560         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13561         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13562         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13563         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
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 };
13577
13578 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13579         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13580         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13581         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13582         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13583         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13584         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13585         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13586         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13587         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13588         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13589         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13590         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13591         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13592         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13593         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13594         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13595         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13596         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13597         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13598         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13599         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13600         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13601         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13602         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13603         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13604         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13605         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13606         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13607         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13608         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13609         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13610         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13611 };
13612
13613 static u32 nphy_tpc_txgain_ipa_5g[] = {
13614         0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13615         0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13616         0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13617         0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13618         0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13619         0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13620         0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13621         0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13622         0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13623         0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13624         0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13625         0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13626         0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13627         0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13628         0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13629         0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13630         0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13631         0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13632         0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13633         0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13634         0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13635         0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13636         0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13637         0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13638         0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13639         0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13640         0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13641         0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13642         0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13643         0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13644         0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13645         0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13646 };
13647
13648 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13649         0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13650         0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13651         0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13652         0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13653         0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13654         0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13655         0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13656         0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13657         0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13658         0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13659         0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13660         0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13661         0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13662         0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13663         0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13664         0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13665         0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13666         0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13667         0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13668         0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13669         0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13670         0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13671         0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13672         0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13673         0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13674         0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13675         0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13676         0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13677         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13678         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13679         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13680         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13681 };
13682
13683 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13684         0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13685         0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13686         0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13687         0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13688         0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13689         0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13690         0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13691         0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13692         0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13693         0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13694         0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13695         0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13696         0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13697         0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13698         0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13699         0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13700         0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13701         0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13702         0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13703         0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13704         0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13705         0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13706         0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13707         0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13708         0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13709         0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13710         0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13711         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13712         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13713         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13714         0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13715         0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13716 };
13717
13718 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13719         -114, -108, -98, -91, -84, -78, -70, -62,
13720         -54, -46, -39, -31, -23, -15, -8, 0
13721 };
13722
13723 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13724         -100, -95, -89, -83, -77, -70, -63, -56,
13725         -48, -41, -33, -25, -19, -12, -6, 0
13726 };
13727
13728 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13729         -159, -113, -86, -72, -62, -54, -48, -43,
13730         -39, -35, -31, -28, -25, -23, -20, -18,
13731         -17, -15, -13, -11, -10, -8, -7, -6,
13732         -5, -4, -3, -3, -2, -1, -1, 0
13733 };
13734
13735 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13736         -109, -109, -82, -68, -58, -50, -44, -39,
13737         -35, -31, -28, -26, -23, -21, -19, -17,
13738         -16, -14, -13, -11, -10, -9, -8, -7,
13739         -5, -5, -4, -3, -2, -1, -1, 0
13740 };
13741
13742 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13743         -122, -122, -95, -80, -69, -61, -54, -49,
13744         -43, -39, -35, -32, -28, -26, -23, -21,
13745         -18, -16, -15, -13, -11, -10, -8, -7,
13746         -6, -5, -4, -3, -2, -1, -1, 0
13747 };
13748
13749 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13750         -107, -101, -92, -85, -78, -71, -62, -55,
13751         -47, -39, -32, -24, -19, -12, -6, 0
13752 };
13753
13754 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13755         -110, -104, -95, -88, -81, -74, -66, -58,
13756         -50, -44, -36, -28, -23, -15, -8, 0
13757 };
13758
13759 static u8 pad_gain_codes_used_2057rev5[] = {
13760         20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13761         10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13762 };
13763
13764 static u8 pad_gain_codes_used_2057rev7[] = {
13765         15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13766         5, 4, 3, 2, 1
13767 };
13768
13769 static u8 pad_all_gain_codes_2057[] = {
13770         31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13771         21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13772         11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13773         1, 0
13774 };
13775
13776 static u8 pga_all_gain_codes_2057[] = {
13777         15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13778 };
13779
13780 static u32 nphy_papd_scaltbl[] = {
13781         0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13782         0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13783         0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13784         0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13785         0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13786         0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13787         0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13788         0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13789         0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13790         0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13791         0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13792         0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13793         0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13794         0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13795         0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13796         0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13797 };
13798
13799 static u32 nphy_tpc_txgain_rev3[] = {
13800         0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13801         0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13802         0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13803         0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13804         0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13805         0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13806         0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13807         0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13808         0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13809         0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13810         0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13811         0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13812         0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13813         0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13814         0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13815         0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13816         0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13817         0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13818         0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13819         0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13820         0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13821         0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13822         0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13823         0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13824         0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13825         0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13826         0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13827         0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13828         0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13829         0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13830         0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13831         0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13832 };
13833
13834 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13835         0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13836         0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13837         0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13838         0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13839         0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13840         0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13841         0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13842         0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13843         0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13844         0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13845         0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13846         0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13847         0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13848         0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13849         0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13850         0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13851         0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13852         0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13853         0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13854         0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13855         0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13856         0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13857         0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13858         0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13859         0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13860         0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13861         0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13862         0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13863         0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13864         0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13865         0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13866         0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13867 };
13868
13869 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13870         0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13871         0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13872         0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13873         0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13874         0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13875         0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13876         0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13877         0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13878         0x80290031, 0x80210039, 0x80210036, 0x80210033,
13879         0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13880         0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13881         0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13882         0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13883         0x80110027, 0x80110024, 0x80110022, 0x80110020,
13884         0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13885         0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13886         0x80090029, 0x80090027, 0x80090025, 0x80090023,
13887         0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13888         0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13889         0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13890         0x8009071d, 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 };
13903
13904 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13905         0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13906         0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13907         0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13908         0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13909         0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13910         0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13911         0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13912         0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13913         0x10290031, 0x10210039, 0x10210036, 0x10210033,
13914         0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13915         0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13916         0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13917         0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13918         0x10110027, 0x10110024, 0x10110022, 0x10110020,
13919         0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13920         0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13921         0x10090029, 0x10090027, 0x10090025, 0x10090023,
13922         0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13923         0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13924         0x10090015, 0x10090013, 0x10090012, 0x10090011,
13925         0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13926         0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13927         0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13928         0x10090008, 0x10090008, 0x10090007, 0x10090007,
13929         0x10090007, 0x10090006, 0x10090006, 0x10090005,
13930         0x10090005, 0x10090005, 0x10090005, 0x10090004,
13931         0x10090004, 0x10090004, 0x10090004, 0x10090003,
13932         0x10090003, 0x10090003, 0x10090003, 0x10090003,
13933         0x10090003, 0x10090002, 0x10090002, 0x10090002,
13934         0x10090002, 0x10090002, 0x10090002, 0x10090002,
13935         0x10090002, 0x10090002, 0x10090001, 0x10090001,
13936         0x10090001, 0x10090001, 0x10090001, 0x10090001
13937 };
13938
13939 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13940         0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13941         0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13942         0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13943         0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13944         0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13945         0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13946         0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13947         0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13948         0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13949         0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13950         0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13951         0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13952         0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13953         0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13954         0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13955         0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13956         0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13957         0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13958         0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13959         0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13960         0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13961         0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13962         0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13963         0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13964         0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13965         0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
13966         0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
13967         0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
13968         0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
13969         0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
13970         0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
13971         0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
13972 };
13973
13974 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
13975         0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
13976         0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
13977         0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
13978         0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
13979         0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
13980         0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
13981         0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
13982         0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
13983         0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
13984         0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
13985         0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
13986         0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
13987         0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
13988         0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
13989         0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
13990         0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
13991         0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
13992         0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
13993         0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
13994         0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
13995         0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
13996         0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
13997         0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
13998         0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
13999         0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14000         0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14001         0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14002         0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14003         0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14004         0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14005         0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14006         0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14007 };
14008
14009 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14010         0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14011         0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14012         0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14013         0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14014         0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14015         0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14016         0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14017         0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14018         0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14019         0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14020         0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14021         0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14022         0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14023         0x09620039, 0x09620037, 0x09620035, 0x09620033,
14024         0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14025         0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14026         0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14027         0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14028         0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14029         0x06620039, 0x06620037, 0x06620035, 0x06620033,
14030         0x05620046, 0x05620044, 0x05620042, 0x05620040,
14031         0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14032         0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14033         0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14034         0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14035         0x03620038, 0x03620037, 0x03620035, 0x03620033,
14036         0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14037         0x02620046, 0x02620044, 0x02620043, 0x02620042,
14038         0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14039         0x01620043, 0x01620042, 0x01620041, 0x01620040,
14040         0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14041         0x0062003b, 0x00620039, 0x00620037, 0x00620035
14042 };
14043
14044 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14045         0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14046         0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14047         0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14048         0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14049         0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14050         0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14051         0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14052         0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14053         0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14054         0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14055         0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14056         0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14057         0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14058         0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14059         0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14060         0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14061         0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14062         0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14063         0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14064         0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14065         0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14066         0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14067         0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14068         0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14069         0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14070         0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14071         0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14072         0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14073         0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14074         0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14075         0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14076         0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14077 };
14078
14079 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14080 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14081 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14082         0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a };
14083 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14084         0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16 };
14085
14086 static bool wlc_phy_chan2freq_nphy(phy_info_t *pi, uint channel, int *f,
14087                                    chan_info_nphy_radio2057_t **t0,
14088                                    chan_info_nphy_radio205x_t **t1,
14089                                    chan_info_nphy_radio2057_rev5_t **t2,
14090                                    chan_info_nphy_2055_t **t3);
14091 static void wlc_phy_chanspec_nphy_setup(phy_info_t *pi, chanspec_t chans,
14092                                         const nphy_sfo_cfg_t *c);
14093
14094 static void wlc_phy_adjust_rx_analpfbw_nphy(phy_info_t *pi,
14095                                             u16 reduction_factr);
14096 static void wlc_phy_adjust_min_noisevar_nphy(phy_info_t *pi, int ntones, int *,
14097                                              u32 *buf);
14098 static void wlc_phy_adjust_crsminpwr_nphy(phy_info_t *pi, u8 minpwr);
14099 static void wlc_phy_txlpfbw_nphy(phy_info_t *pi);
14100 static void wlc_phy_spurwar_nphy(phy_info_t *pi);
14101
14102 static void wlc_phy_radio_preinit_2055(phy_info_t *pi);
14103 static void wlc_phy_radio_init_2055(phy_info_t *pi);
14104 static void wlc_phy_radio_postinit_2055(phy_info_t *pi);
14105 static void wlc_phy_radio_preinit_205x(phy_info_t *pi);
14106 static void wlc_phy_radio_init_2056(phy_info_t *pi);
14107 static void wlc_phy_radio_postinit_2056(phy_info_t *pi);
14108 static void wlc_phy_radio_init_2057(phy_info_t *pi);
14109 static void wlc_phy_radio_postinit_2057(phy_info_t *pi);
14110 static void wlc_phy_workarounds_nphy(phy_info_t *pi);
14111 static void wlc_phy_workarounds_nphy_gainctrl(phy_info_t *pi);
14112 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(phy_info_t *pi);
14113 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(phy_info_t *pi);
14114 static void wlc_phy_adjust_lnagaintbl_nphy(phy_info_t *pi);
14115
14116 static void wlc_phy_restore_rssical_nphy(phy_info_t *pi);
14117 static void wlc_phy_reapply_txcal_coeffs_nphy(phy_info_t *pi);
14118 static void wlc_phy_tx_iq_war_nphy(phy_info_t *pi);
14119 static int wlc_phy_cal_rxiq_nphy_rev3(phy_info_t *pi, nphy_txgains_t tg,
14120                                       u8 type, bool d);
14121 static void wlc_phy_rxcal_gainctrl_nphy_rev5(phy_info_t *pi, u8 rxcore,
14122                                              u16 *rg, u8 type);
14123 static void wlc_phy_update_mimoconfig_nphy(phy_info_t *pi, s32 preamble);
14124 static void wlc_phy_savecal_nphy(phy_info_t *pi);
14125 static void wlc_phy_restorecal_nphy(phy_info_t *pi);
14126 static void wlc_phy_resetcca_nphy(phy_info_t *pi);
14127
14128 static void wlc_phy_txpwrctrl_config_nphy(phy_info_t *pi);
14129 static void wlc_phy_internal_cal_txgain_nphy(phy_info_t *pi);
14130 static void wlc_phy_precal_txgain_nphy(phy_info_t *pi);
14131 static void wlc_phy_update_txcal_ladder_nphy(phy_info_t *pi, u16 core);
14132
14133 static void wlc_phy_extpa_set_tx_digi_filts_nphy(phy_info_t *pi);
14134 static void wlc_phy_ipa_set_tx_digi_filts_nphy(phy_info_t *pi);
14135 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(phy_info_t *pi);
14136 static u16 wlc_phy_ipa_get_bbmult_nphy(phy_info_t *pi);
14137 static void wlc_phy_ipa_set_bbmult_nphy(phy_info_t *pi, u8 m0, u8 m1);
14138 static u32 *wlc_phy_get_ipa_gaintbl_nphy(phy_info_t *pi);
14139
14140 static void wlc_phy_a1_nphy(phy_info_t *pi, u8 core, u32 winsz, u32,
14141                             u32 e);
14142 static u8 wlc_phy_a3_nphy(phy_info_t *pi, u8 start_gain, u8 core);
14143 static void wlc_phy_a2_nphy(phy_info_t *pi, nphy_ipa_txcalgains_t *,
14144                             phy_cal_mode_t, u8);
14145 static void wlc_phy_papd_cal_cleanup_nphy(phy_info_t *pi,
14146                                           nphy_papd_restore_state *state);
14147 static void wlc_phy_papd_cal_setup_nphy(phy_info_t *pi,
14148                                         nphy_papd_restore_state *state, u8);
14149
14150 static void wlc_phy_clip_det_nphy(phy_info_t *pi, u8 write, u16 *vals);
14151
14152 static void wlc_phy_set_rfseq_nphy(phy_info_t *pi, u8 cmd, u8 *evts,
14153                                    u8 *dlys, u8 len);
14154
14155 static u16 wlc_phy_read_lpf_bw_ctl_nphy(phy_info_t *pi, u16 offset);
14156
14157 static void
14158 wlc_phy_rfctrl_override_nphy_rev7(phy_info_t *pi, u16 field, u16 value,
14159                                   u8 core_mask, u8 off,
14160                                   u8 override_id);
14161
14162 static void wlc_phy_rssi_cal_nphy_rev2(phy_info_t *pi, u8 rssi_type);
14163 static void wlc_phy_rssi_cal_nphy_rev3(phy_info_t *pi);
14164
14165 static bool wlc_phy_txpwr_srom_read_nphy(phy_info_t *pi);
14166 static void wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max,
14167                                             u16 *pwr_offset,
14168                                             u8 tmp_max_pwr, u8 rate_start,
14169                                             u8 rate_end);
14170
14171 static void wlc_phy_txpwr_limit_to_tbl_nphy(phy_info_t *pi);
14172 static void wlc_phy_txpwrctrl_coeff_setup_nphy(phy_info_t *pi);
14173 static void wlc_phy_txpwrctrl_idle_tssi_nphy(phy_info_t *pi);
14174 static void wlc_phy_txpwrctrl_pwr_setup_nphy(phy_info_t *pi);
14175
14176 static bool wlc_phy_txpwr_ison_nphy(phy_info_t *pi);
14177 static u8 wlc_phy_txpwr_idx_cur_get_nphy(phy_info_t *pi, u8 core);
14178 static void wlc_phy_txpwr_idx_cur_set_nphy(phy_info_t *pi, u8 idx0,
14179                                            u8 idx1);
14180 static void wlc_phy_a4(phy_info_t *pi, bool full_cal);
14181
14182 static u16 wlc_phy_radio205x_rcal(phy_info_t *pi);
14183
14184 static u16 wlc_phy_radio2057_rccal(phy_info_t *pi);
14185
14186 static u16 wlc_phy_gen_load_samples_nphy(phy_info_t *pi, u32 f_kHz,
14187                                             u16 max_val,
14188                                             u8 dac_test_mode);
14189 static void wlc_phy_loadsampletable_nphy(phy_info_t *pi, cs32 *tone_buf,
14190                                          u16 num_samps);
14191 static void wlc_phy_runsamples_nphy(phy_info_t *pi, u16 n, u16 lps,
14192                                     u16 wait, u8 iq, u8 dac_test_mode,
14193                                     bool modify_bbmult);
14194
14195 bool wlc_phy_bist_check_phy(wlc_phy_t *pih)
14196 {
14197         phy_info_t *pi = (phy_info_t *) pih;
14198         u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14199
14200         if (NREV_GE(pi->pubpi.phy_rev, 16))
14201                 return true;
14202
14203         phybist0 = read_phy_reg(pi, 0x0e);
14204         phybist1 = read_phy_reg(pi, 0x0f);
14205         phybist2 = read_phy_reg(pi, 0xea);
14206         phybist3 = read_phy_reg(pi, 0xeb);
14207         phybist4 = read_phy_reg(pi, 0x156);
14208
14209         if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14210             (phybist3 == 0) && (phybist4 == 0)) {
14211                 return true;
14212         }
14213
14214         return false;
14215 }
14216
14217 static void WLBANDINITFN(wlc_phy_bphy_init_nphy) (phy_info_t *pi)
14218 {
14219         u16 addr, val;
14220
14221         val = 0x1e1f;
14222         for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14223              addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14224                 write_phy_reg(pi, addr, val);
14225                 if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14226                         val = 0x3e3f;
14227                 else
14228                         val -= 0x0202;
14229         }
14230
14231         if (NORADIO_ENAB(pi->pubpi)) {
14232
14233                 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_PHYCRSTH, 0x3206);
14234
14235                 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_RSSI_TRESH, 0x281e);
14236
14237                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_LNA_GAIN_RANGE, 0x1a);
14238
14239         } else {
14240
14241                 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14242         }
14243 }
14244
14245 void
14246 wlc_phy_table_write_nphy(phy_info_t *pi, u32 id, u32 len, u32 offset,
14247                          u32 width, const void *data)
14248 {
14249         mimophytbl_info_t tbl;
14250
14251         tbl.tbl_id = id;
14252         tbl.tbl_len = len;
14253         tbl.tbl_offset = offset;
14254         tbl.tbl_width = width;
14255         tbl.tbl_ptr = data;
14256         wlc_phy_write_table_nphy(pi, &tbl);
14257 }
14258
14259 void
14260 wlc_phy_table_read_nphy(phy_info_t *pi, u32 id, u32 len, u32 offset,
14261                         u32 width, void *data)
14262 {
14263         mimophytbl_info_t tbl;
14264
14265         tbl.tbl_id = id;
14266         tbl.tbl_len = len;
14267         tbl.tbl_offset = offset;
14268         tbl.tbl_width = width;
14269         tbl.tbl_ptr = data;
14270         wlc_phy_read_table_nphy(pi, &tbl);
14271 }
14272
14273 static void WLBANDINITFN(wlc_phy_static_table_download_nphy) (phy_info_t *pi)
14274 {
14275         uint idx;
14276
14277         if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14278                 for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14279                         wlc_phy_write_table_nphy(pi,
14280                                                  &mimophytbl_info_rev16[idx]);
14281         } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14282                 for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14283                         wlc_phy_write_table_nphy(pi,
14284                                                  &mimophytbl_info_rev7[idx]);
14285         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14286                 for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14287                         wlc_phy_write_table_nphy(pi,
14288                                                  &mimophytbl_info_rev3[idx]);
14289         } else {
14290                 for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14291                         wlc_phy_write_table_nphy(pi,
14292                                                  &mimophytbl_info_rev0[idx]);
14293         }
14294 }
14295
14296 static void WLBANDINITFN(wlc_phy_tbl_init_nphy) (phy_info_t *pi)
14297 {
14298         uint idx = 0;
14299         u8 antswctrllut;
14300
14301         if (pi->phy_init_por)
14302                 wlc_phy_static_table_download_nphy(pi);
14303
14304         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14305
14306                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14307                     pi->srom_fem2g.antswctrllut : pi->srom_fem5g.antswctrllut;
14308
14309                 switch (antswctrllut) {
14310                 case 0:
14311
14312                         break;
14313
14314                 case 1:
14315
14316                         if (pi->aa2g == 7) {
14317
14318                                 wlc_phy_table_write_nphy(pi,
14319                                                          NPHY_TBL_ID_ANTSWCTRLLUT,
14320                                                          2, 0x21, 8,
14321                                                          &ant_sw_ctrl_tbl_rev8_2o3
14322                                                          [0]);
14323                         } else {
14324                                 wlc_phy_table_write_nphy(pi,
14325                                                          NPHY_TBL_ID_ANTSWCTRLLUT,
14326                                                          2, 0x21, 8,
14327                                                          &ant_sw_ctrl_tbl_rev8
14328                                                          [0]);
14329                         }
14330                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14331                                                  2, 0x25, 8,
14332                                                  &ant_sw_ctrl_tbl_rev8[2]);
14333                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14334                                                  2, 0x29, 8,
14335                                                  &ant_sw_ctrl_tbl_rev8[4]);
14336                         break;
14337
14338                 case 2:
14339
14340                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14341                                                  2, 0x1, 8,
14342                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core0
14343                                                  [0]);
14344                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14345                                                  2, 0x5, 8,
14346                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core0
14347                                                  [2]);
14348                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14349                                                  2, 0x9, 8,
14350                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core0
14351                                                  [4]);
14352
14353                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14354                                                  2, 0x21, 8,
14355                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core1
14356                                                  [0]);
14357                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14358                                                  2, 0x25, 8,
14359                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core1
14360                                                  [2]);
14361                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14362                                                  2, 0x29, 8,
14363                                                  &ant_sw_ctrl_tbl_rev8_2057v7_core1
14364                                                  [4]);
14365                         break;
14366
14367                 default:
14368                         break;
14369                 }
14370
14371         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14372                 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14373
14374                         if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14375                                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14376                                     pi->srom_fem2g.antswctrllut : pi->
14377                                     srom_fem5g.antswctrllut;
14378                                 switch (antswctrllut) {
14379                                 case 0:
14380                                         wlc_phy_write_table_nphy(pi,
14381                                                                  &mimophytbl_info_rev3_volatile
14382                                                                  [idx]);
14383                                         break;
14384                                 case 1:
14385                                         wlc_phy_write_table_nphy(pi,
14386                                                                  &mimophytbl_info_rev3_volatile1
14387                                                                  [idx]);
14388                                         break;
14389                                 case 2:
14390                                         wlc_phy_write_table_nphy(pi,
14391                                                                  &mimophytbl_info_rev3_volatile2
14392                                                                  [idx]);
14393                                         break;
14394                                 case 3:
14395                                         wlc_phy_write_table_nphy(pi,
14396                                                                  &mimophytbl_info_rev3_volatile3
14397                                                                  [idx]);
14398                                         break;
14399                                 default:
14400                                         break;
14401                                 }
14402                         } else {
14403                                 wlc_phy_write_table_nphy(pi,
14404                                                          &mimophytbl_info_rev3_volatile
14405                                                          [idx]);
14406                         }
14407                 }
14408         } else {
14409                 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++) {
14410                         wlc_phy_write_table_nphy(pi,
14411                                                  &mimophytbl_info_rev0_volatile
14412                                                  [idx]);
14413                 }
14414         }
14415 }
14416
14417 static void
14418 wlc_phy_write_txmacreg_nphy(phy_info_t *pi, u16 holdoff, u16 delay)
14419 {
14420         write_phy_reg(pi, 0x77, holdoff);
14421         write_phy_reg(pi, 0xb4, delay);
14422 }
14423
14424 void wlc_phy_nphy_tkip_rifs_war(phy_info_t *pi, u8 rifs)
14425 {
14426         u16 holdoff, delay;
14427
14428         if (rifs) {
14429
14430                 holdoff = 0x10;
14431                 delay = 0x258;
14432         } else {
14433
14434                 holdoff = 0x15;
14435                 delay = 0x320;
14436         }
14437
14438         wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14439
14440         if (pi && pi->sh && (pi->sh->_rifs_phy != rifs)) {
14441                 pi->sh->_rifs_phy = rifs;
14442         }
14443 }
14444
14445 bool wlc_phy_attach_nphy(phy_info_t *pi)
14446 {
14447         uint i;
14448
14449         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6)) {
14450                 pi->phyhang_avoid = true;
14451         }
14452
14453         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14454
14455                 pi->nphy_gband_spurwar_en = true;
14456
14457                 if (pi->sh->boardflags2 & BFL2_SPUR_WAR) {
14458                         pi->nphy_aband_spurwar_en = true;
14459                 }
14460         }
14461         if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14462
14463                 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR) {
14464                         pi->nphy_gband_spurwar2_en = true;
14465                 }
14466         }
14467
14468         pi->n_preamble_override = AUTO;
14469         if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14470                 pi->n_preamble_override = WLC_N_PREAMBLE_MIXEDMODE;
14471
14472         pi->nphy_txrx_chain = AUTO;
14473         pi->phy_scraminit = AUTO;
14474
14475         pi->nphy_rxcalparams = 0x010100B5;
14476
14477         pi->nphy_perical = PHY_PERICAL_MPHASE;
14478         pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14479         pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14480
14481         pi->nphy_gain_boost = true;
14482         pi->nphy_elna_gain_config = false;
14483         pi->radio_is_on = false;
14484
14485         for (i = 0; i < pi->pubpi.phy_corenum; i++) {
14486                 pi->nphy_txpwrindex[i].index = AUTO;
14487         }
14488
14489         wlc_phy_txpwrctrl_config_nphy(pi);
14490         if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14491                 pi->hwpwrctrl_capable = true;
14492
14493         pi->pi_fptr.init = wlc_phy_init_nphy;
14494         pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14495         pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14496         pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14497
14498         if (!wlc_phy_txpwr_srom_read_nphy(pi))
14499                 return false;
14500
14501         return true;
14502 }
14503
14504 static void wlc_phy_txpwrctrl_config_nphy(phy_info_t *pi)
14505 {
14506
14507         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14508                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14509                 pi->phy_5g_pwrgain = true;
14510                 return;
14511         }
14512
14513         pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14514         pi->phy_5g_pwrgain = false;
14515
14516         if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14517             NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14518                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14519         else if ((pi->sh->sromrev >= 4)
14520                  && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14521                 pi->phy_5g_pwrgain = true;
14522 }
14523
14524 void WLBANDINITFN(wlc_phy_init_nphy) (phy_info_t *pi)
14525 {
14526         u16 val;
14527         u16 clip1_ths[2];
14528         nphy_txgains_t target_gain;
14529         u8 tx_pwr_ctrl_state;
14530         bool do_nphy_cal = false;
14531         uint core;
14532         uint origidx, intr_val;
14533         d11regs_t *regs;
14534         u32 d11_clk_ctl_st;
14535
14536         core = 0;
14537
14538         if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN)) {
14539                 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
14540         }
14541
14542         if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
14543             ((pi->sh->chippkg == BCM4717_PKG_ID) ||
14544              (pi->sh->chippkg == BCM4718_PKG_ID))) {
14545                 if ((pi->sh->boardflags & BFL_EXTLNA) &&
14546                     (CHSPEC_IS2G(pi->radio_chanspec))) {
14547                         ai_corereg(pi->sh->sih, SI_CC_IDX,
14548                                    offsetof(chipcregs_t, chipcontrol), 0x40,
14549                                    0x40);
14550                 }
14551         }
14552
14553         if ((!PHY_IPA(pi)) && (pi->sh->chip == BCM5357_CHIP_ID)) {
14554                 si_pmu_chipcontrol(pi->sh->sih, 1, CCTRL5357_EXTPA,
14555                                    CCTRL5357_EXTPA);
14556         }
14557
14558         if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
14559             CHSPEC_IS40(pi->radio_chanspec)) {
14560
14561                 regs = (d11regs_t *) ai_switch_core(pi->sh->sih, D11_CORE_ID,
14562                                                     &origidx, &intr_val);
14563                 d11_clk_ctl_st = R_REG(&regs->clk_ctl_st);
14564                 AND_REG(&regs->clk_ctl_st,
14565                         ~(CCS_FORCEHT | CCS_HTAREQ));
14566
14567                 W_REG(&regs->clk_ctl_st, d11_clk_ctl_st);
14568
14569                 ai_restore_core(pi->sh->sih, origidx, intr_val);
14570         }
14571
14572         pi->use_int_tx_iqlo_cal_nphy =
14573             (PHY_IPA(pi) ||
14574              (NREV_GE(pi->pubpi.phy_rev, 7) ||
14575               (NREV_GE(pi->pubpi.phy_rev, 5)
14576                && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
14577
14578         pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
14579
14580         pi->nphy_deaf_count = 0;
14581
14582         wlc_phy_tbl_init_nphy(pi);
14583
14584         pi->nphy_crsminpwr_adjusted = false;
14585         pi->nphy_noisevars_adjusted = false;
14586
14587         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14588                 write_phy_reg(pi, 0xe7, 0);
14589                 write_phy_reg(pi, 0xec, 0);
14590                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14591                         write_phy_reg(pi, 0x342, 0);
14592                         write_phy_reg(pi, 0x343, 0);
14593                         write_phy_reg(pi, 0x346, 0);
14594                         write_phy_reg(pi, 0x347, 0);
14595                 }
14596                 write_phy_reg(pi, 0xe5, 0);
14597                 write_phy_reg(pi, 0xe6, 0);
14598         } else {
14599                 write_phy_reg(pi, 0xec, 0);
14600         }
14601
14602         write_phy_reg(pi, 0x91, 0);
14603         write_phy_reg(pi, 0x92, 0);
14604         if (NREV_LT(pi->pubpi.phy_rev, 6)) {
14605                 write_phy_reg(pi, 0x93, 0);
14606                 write_phy_reg(pi, 0x94, 0);
14607         }
14608
14609         and_phy_reg(pi, 0xa1, ~3);
14610
14611         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14612                 write_phy_reg(pi, 0x8f, 0);
14613                 write_phy_reg(pi, 0xa5, 0);
14614         } else {
14615                 write_phy_reg(pi, 0xa5, 0);
14616         }
14617
14618         if (NREV_IS(pi->pubpi.phy_rev, 2))
14619                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
14620         else if (NREV_LT(pi->pubpi.phy_rev, 2))
14621                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
14622
14623         write_phy_reg(pi, 0x203, 32);
14624         write_phy_reg(pi, 0x201, 32);
14625
14626         if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
14627                 write_phy_reg(pi, 0x20d, 160);
14628         else
14629                 write_phy_reg(pi, 0x20d, 184);
14630
14631         write_phy_reg(pi, 0x13a, 200);
14632
14633         write_phy_reg(pi, 0x70, 80);
14634
14635         write_phy_reg(pi, 0x1ff, 48);
14636
14637         if (NREV_LT(pi->pubpi.phy_rev, 8)) {
14638                 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
14639         }
14640
14641         wlc_phy_stf_chain_upd_nphy(pi);
14642
14643         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
14644                 write_phy_reg(pi, 0x180, 0xaa8);
14645                 write_phy_reg(pi, 0x181, 0x9a4);
14646         }
14647
14648         if (PHY_IPA(pi)) {
14649                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
14650
14651                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
14652                                     0x29b, (0x1 << 0), (1) << 0);
14653
14654                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
14655                                     0x29c, (0x1ff << 7),
14656                                     (pi->nphy_papd_epsilon_offset[core]) << 7);
14657
14658                 }
14659
14660                 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
14661         } else {
14662
14663                 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
14664                         wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
14665                 }
14666         }
14667
14668         wlc_phy_workarounds_nphy(pi);
14669
14670         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
14671
14672         val = read_phy_reg(pi, 0x01);
14673         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
14674         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
14675         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
14676
14677         wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
14678
14679         wlc_phy_pa_override_nphy(pi, OFF);
14680         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
14681         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
14682         wlc_phy_pa_override_nphy(pi, ON);
14683
14684         wlc_phy_classifier_nphy(pi, 0, 0);
14685         wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
14686
14687         if (CHSPEC_IS2G(pi->radio_chanspec))
14688                 wlc_phy_bphy_init_nphy(pi);
14689
14690         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
14691         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
14692
14693         wlc_phy_txpwr_fixpower_nphy(pi);
14694
14695         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
14696
14697         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
14698
14699         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14700                 u32 *tx_pwrctrl_tbl = NULL;
14701                 u16 idx;
14702                 s16 pga_gn = 0;
14703                 s16 pad_gn = 0;
14704                 s32 rfpwr_offset = 0;
14705
14706                 if (PHY_IPA(pi)) {
14707                         tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
14708                 } else {
14709                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
14710                                 if NREV_IS
14711                                         (pi->pubpi.phy_rev, 3) {
14712                                         tx_pwrctrl_tbl =
14713                                             nphy_tpc_5GHz_txgain_rev3;
14714                                 } else if NREV_IS
14715                                         (pi->pubpi.phy_rev, 4) {
14716                                         tx_pwrctrl_tbl =
14717                                             (pi->srom_fem5g.extpagain == 3) ?
14718                                             nphy_tpc_5GHz_txgain_HiPwrEPA :
14719                                             nphy_tpc_5GHz_txgain_rev4;
14720                                 } else {
14721                                         tx_pwrctrl_tbl =
14722                                             nphy_tpc_5GHz_txgain_rev5;
14723                                 }
14724
14725                         } else {
14726                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14727                                         if (pi->pubpi.radiorev == 5) {
14728                                                 tx_pwrctrl_tbl =
14729                                                     nphy_tpc_txgain_epa_2057rev5;
14730                                         } else if (pi->pubpi.radiorev == 3) {
14731                                                 tx_pwrctrl_tbl =
14732                                                     nphy_tpc_txgain_epa_2057rev3;
14733                                         }
14734
14735                                 } else {
14736                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
14737                                             (pi->srom_fem2g.extpagain == 3)) {
14738                                                 tx_pwrctrl_tbl =
14739                                                     nphy_tpc_txgain_HiPwrEPA;
14740                                         } else {
14741                                                 tx_pwrctrl_tbl =
14742                                                     nphy_tpc_txgain_rev3;
14743                                         }
14744                                 }
14745                         }
14746                 }
14747
14748                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
14749                                          192, 32, tx_pwrctrl_tbl);
14750                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
14751                                          192, 32, tx_pwrctrl_tbl);
14752
14753                 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
14754
14755                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14756
14757                         for (idx = 0; idx < 128; idx++) {
14758                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
14759                                 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
14760
14761                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14762                                         if ((pi->pubpi.radiorev == 3) ||
14763                                             (pi->pubpi.radiorev == 4) ||
14764                                             (pi->pubpi.radiorev == 6)) {
14765                                                 rfpwr_offset = (s16)
14766                                                     nphy_papd_padgain_dlt_2g_2057rev3n4
14767                                                     [pad_gn];
14768                                         } else if (pi->pubpi.radiorev == 5) {
14769                                                 rfpwr_offset = (s16)
14770                                                     nphy_papd_padgain_dlt_2g_2057rev5
14771                                                     [pad_gn];
14772                                         } else if ((pi->pubpi.radiorev == 7)
14773                                                    || (pi->pubpi.radiorev ==
14774                                                        8)) {
14775                                                 rfpwr_offset = (s16)
14776                                                     nphy_papd_padgain_dlt_2g_2057rev7
14777                                                     [pad_gn];
14778                                         }
14779                                 } else {
14780                                         if ((pi->pubpi.radiorev == 3) ||
14781                                             (pi->pubpi.radiorev == 4) ||
14782                                             (pi->pubpi.radiorev == 6)) {
14783                                                 rfpwr_offset = (s16)
14784                                                     nphy_papd_pgagain_dlt_5g_2057
14785                                                     [pga_gn];
14786                                         } else if ((pi->pubpi.radiorev == 7)
14787                                                    || (pi->pubpi.radiorev ==
14788                                                        8)) {
14789                                                 rfpwr_offset = (s16)
14790                                                     nphy_papd_pgagain_dlt_5g_2057rev7
14791                                                     [pga_gn];
14792                                         }
14793                                 }
14794                                 wlc_phy_table_write_nphy(pi,
14795                                                          NPHY_TBL_ID_CORE1TXPWRCTL,
14796                                                          1, 576 + idx, 32,
14797                                                          &rfpwr_offset);
14798                                 wlc_phy_table_write_nphy(pi,
14799                                                          NPHY_TBL_ID_CORE2TXPWRCTL,
14800                                                          1, 576 + idx, 32,
14801                                                          &rfpwr_offset);
14802                         }
14803                 } else {
14804
14805                         for (idx = 0; idx < 128; idx++) {
14806                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
14807                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14808                                         rfpwr_offset = (s16)
14809                                             nphy_papd_pga_gain_delta_ipa_2g
14810                                             [pga_gn];
14811                                 } else {
14812                                         rfpwr_offset = (s16)
14813                                             nphy_papd_pga_gain_delta_ipa_5g
14814                                             [pga_gn];
14815                                 }
14816
14817                                 wlc_phy_table_write_nphy(pi,
14818                                                          NPHY_TBL_ID_CORE1TXPWRCTL,
14819                                                          1, 576 + idx, 32,
14820                                                          &rfpwr_offset);
14821                                 wlc_phy_table_write_nphy(pi,
14822                                                          NPHY_TBL_ID_CORE2TXPWRCTL,
14823                                                          1, 576 + idx, 32,
14824                                                          &rfpwr_offset);
14825                         }
14826
14827                 }
14828         } else {
14829
14830                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
14831                                          192, 32, nphy_tpc_txgain);
14832                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
14833                                          192, 32, nphy_tpc_txgain);
14834         }
14835
14836         if (pi->sh->phyrxchain != 0x3) {
14837                 wlc_phy_rxcore_setstate_nphy((wlc_phy_t *) pi,
14838                                              pi->sh->phyrxchain);
14839         }
14840
14841         if (PHY_PERICAL_MPHASE_PENDING(pi)) {
14842                 wlc_phy_cal_perical_mphase_restart(pi);
14843         }
14844
14845         if (!NORADIO_ENAB(pi->pubpi)) {
14846                 bool do_rssi_cal = false;
14847
14848                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14849                         do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
14850                             (pi->nphy_rssical_chanspec_2G == 0) :
14851                             (pi->nphy_rssical_chanspec_5G == 0);
14852
14853                         if (do_rssi_cal) {
14854                                 wlc_phy_rssi_cal_nphy(pi);
14855                         } else {
14856                                 wlc_phy_restore_rssical_nphy(pi);
14857                         }
14858                 } else {
14859                         wlc_phy_rssi_cal_nphy(pi);
14860                 }
14861
14862                 if (!SCAN_RM_IN_PROGRESS(pi)) {
14863                         do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
14864                             (pi->nphy_iqcal_chanspec_2G == 0) :
14865                             (pi->nphy_iqcal_chanspec_5G == 0);
14866                 }
14867
14868                 if (!pi->do_initcal)
14869                         do_nphy_cal = false;
14870
14871                 if (do_nphy_cal) {
14872
14873                         target_gain = wlc_phy_get_tx_gain_nphy(pi);
14874
14875                         if (pi->antsel_type == ANTSEL_2x3)
14876                                 wlc_phy_antsel_init((wlc_phy_t *) pi, true);
14877
14878                         if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
14879                                 wlc_phy_rssi_cal_nphy(pi);
14880
14881                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14882                                         pi->nphy_cal_orig_pwr_idx[0] =
14883                                             pi->nphy_txpwrindex[PHY_CORE_0].
14884                                             index_internal;
14885                                         pi->nphy_cal_orig_pwr_idx[1] =
14886                                             pi->nphy_txpwrindex[PHY_CORE_1].
14887                                             index_internal;
14888
14889                                         wlc_phy_precal_txgain_nphy(pi);
14890                                         target_gain =
14891                                             wlc_phy_get_tx_gain_nphy(pi);
14892                                 }
14893
14894                                 if (wlc_phy_cal_txiqlo_nphy
14895                                     (pi, target_gain, true, false) == 0) {
14896                                         if (wlc_phy_cal_rxiq_nphy
14897                                             (pi, target_gain, 2,
14898                                              false) == 0) {
14899                                                 wlc_phy_savecal_nphy(pi);
14900
14901                                         }
14902                                 }
14903                         } else if (pi->mphase_cal_phase_id ==
14904                                    MPHASE_CAL_STATE_IDLE) {
14905
14906                                 wlc_phy_cal_perical((wlc_phy_t *) pi,
14907                                                     PHY_PERICAL_PHYINIT);
14908                         }
14909                 } else {
14910                         wlc_phy_restorecal_nphy(pi);
14911                 }
14912         }
14913
14914         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
14915
14916         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
14917
14918         wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
14919
14920         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
14921
14922                 write_phy_reg(pi, 0x70, 50);
14923
14924         wlc_phy_txlpfbw_nphy(pi);
14925
14926         wlc_phy_spurwar_nphy(pi);
14927
14928 }
14929
14930 static void wlc_phy_update_mimoconfig_nphy(phy_info_t *pi, s32 preamble)
14931 {
14932         bool gf_preamble = false;
14933         u16 val;
14934
14935         if (preamble == WLC_N_PREAMBLE_GF) {
14936                 gf_preamble = true;
14937         }
14938
14939         val = read_phy_reg(pi, 0xed);
14940
14941         val |= RX_GF_MM_AUTO;
14942         val &= ~RX_GF_OR_MM;
14943         if (gf_preamble)
14944                 val |= RX_GF_OR_MM;
14945
14946         write_phy_reg(pi, 0xed, val);
14947 }
14948
14949 static void wlc_phy_resetcca_nphy(phy_info_t *pi)
14950 {
14951         u16 val;
14952
14953         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
14954
14955         val = read_phy_reg(pi, 0x01);
14956         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
14957         udelay(1);
14958         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
14959
14960         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
14961
14962         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
14963 }
14964
14965 void wlc_phy_pa_override_nphy(phy_info_t *pi, bool en)
14966 {
14967         u16 rfctrlintc_override_val;
14968
14969         if (!en) {
14970
14971                 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
14972                 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
14973
14974                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14975                         rfctrlintc_override_val = 0x1480;
14976                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14977                         rfctrlintc_override_val =
14978                             CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
14979                 } else {
14980                         rfctrlintc_override_val =
14981                             CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
14982                 }
14983
14984                 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
14985                 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
14986         } else {
14987
14988                 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
14989                 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
14990         }
14991
14992 }
14993
14994 void wlc_phy_stf_chain_upd_nphy(phy_info_t *pi)
14995 {
14996
14997         u16 txrx_chain =
14998             (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
14999         bool CoreActv_override = false;
15000
15001         if (pi->nphy_txrx_chain == WLC_N_TXRX_CHAIN0) {
15002                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
15003                 CoreActv_override = true;
15004
15005                 if (NREV_LE(pi->pubpi.phy_rev, 2)) {
15006                         and_phy_reg(pi, 0xa0, ~0x20);
15007                 }
15008         } else if (pi->nphy_txrx_chain == WLC_N_TXRX_CHAIN1) {
15009                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
15010                 CoreActv_override = true;
15011
15012                 if (NREV_LE(pi->pubpi.phy_rev, 2)) {
15013                         or_phy_reg(pi, 0xa0, 0x20);
15014                 }
15015         }
15016
15017         mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
15018
15019         if (CoreActv_override) {
15020
15021                 pi->nphy_perical = PHY_PERICAL_DISABLE;
15022                 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
15023         } else {
15024                 pi->nphy_perical = PHY_PERICAL_MPHASE;
15025                 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
15026         }
15027 }
15028
15029 void wlc_phy_rxcore_setstate_nphy(wlc_phy_t *pih, u8 rxcore_bitmask)
15030 {
15031         u16 regval;
15032         u16 tbl_buf[16];
15033         uint i;
15034         phy_info_t *pi = (phy_info_t *) pih;
15035         u16 tbl_opcode;
15036         bool suspend;
15037
15038         pi->sh->phyrxchain = rxcore_bitmask;
15039
15040         if (!pi->sh->clk)
15041                 return;
15042
15043         suspend =
15044             (0 == (R_REG(&pi->regs->maccontrol) & MCTL_EN_MAC));
15045         if (!suspend)
15046                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
15047
15048         if (pi->phyhang_avoid)
15049                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15050
15051         regval = read_phy_reg(pi, 0xa2);
15052         regval &= ~(0xf << 4);
15053         regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
15054         write_phy_reg(pi, 0xa2, regval);
15055
15056         if ((rxcore_bitmask & 0x3) != 0x3) {
15057
15058                 write_phy_reg(pi, 0x20e, 1);
15059
15060                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15061                         if (pi->rx2tx_biasentry == -1) {
15062                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
15063                                                         ARRAY_SIZE(tbl_buf), 80,
15064                                                         16, tbl_buf);
15065
15066                                 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
15067                                         if (tbl_buf[i] ==
15068                                             NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
15069
15070                                                 pi->rx2tx_biasentry = (u8) i;
15071                                                 tbl_opcode =
15072                                                     NPHY_REV3_RFSEQ_CMD_NOP;
15073                                                 wlc_phy_table_write_nphy(pi,
15074                                                                          NPHY_TBL_ID_RFSEQ,
15075                                                                          1, i,
15076                                                                          16,
15077                                                                          &tbl_opcode);
15078                                                 break;
15079                                         } else if (tbl_buf[i] ==
15080                                                    NPHY_REV3_RFSEQ_CMD_END) {
15081                                                 break;
15082                                         }
15083                                 }
15084                         }
15085                 }
15086         } else {
15087
15088                 write_phy_reg(pi, 0x20e, 30);
15089
15090                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15091                         if (pi->rx2tx_biasentry != -1) {
15092                                 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
15093                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15094                                                          1, pi->rx2tx_biasentry,
15095                                                          16, &tbl_opcode);
15096                                 pi->rx2tx_biasentry = -1;
15097                         }
15098                 }
15099         }
15100
15101         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
15102
15103         if (pi->phyhang_avoid)
15104                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15105
15106         if (!suspend)
15107                 wlapi_enable_mac(pi->sh->physhim);
15108 }
15109
15110 u8 wlc_phy_rxcore_getstate_nphy(wlc_phy_t *pih)
15111 {
15112         u16 regval, rxen_bits;
15113         phy_info_t *pi = (phy_info_t *) pih;
15114
15115         regval = read_phy_reg(pi, 0xa2);
15116         rxen_bits = (regval >> 4) & 0xf;
15117
15118         return (u8) rxen_bits;
15119 }
15120
15121 bool wlc_phy_n_txpower_ipa_ison(phy_info_t *pi)
15122 {
15123         return PHY_IPA(pi);
15124 }
15125
15126 static void wlc_phy_txpwr_limit_to_tbl_nphy(phy_info_t *pi)
15127 {
15128         u8 idx, idx2, i, delta_ind;
15129
15130         for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++) {
15131                 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
15132         }
15133
15134         for (i = 0; i < 4; i++) {
15135                 idx2 = 0;
15136
15137                 delta_ind = 0;
15138
15139                 switch (i) {
15140                 case 0:
15141
15142                         if (CHSPEC_IS40(pi->radio_chanspec)
15143                             && NPHY_IS_SROM_REINTERPRET) {
15144                                 idx = TXP_FIRST_MCS_40_SISO;
15145                         } else {
15146                                 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15147                                     TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
15148                                 delta_ind = 1;
15149                         }
15150                         break;
15151
15152                 case 1:
15153
15154                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15155                             TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
15156                         break;
15157
15158                 case 2:
15159
15160                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15161                             TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
15162                         break;
15163
15164                 case 3:
15165
15166                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15167                             TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
15168                         break;
15169                 }
15170
15171                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15172                     pi->tx_power_offset[idx];
15173                 idx = idx + delta_ind;
15174                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15175                     pi->tx_power_offset[idx];
15176                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15177                     pi->tx_power_offset[idx];
15178                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15179                     pi->tx_power_offset[idx++];
15180
15181                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15182                     pi->tx_power_offset[idx++];
15183                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15184                     pi->tx_power_offset[idx];
15185                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15186                     pi->tx_power_offset[idx];
15187                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15188                     pi->tx_power_offset[idx++];
15189
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                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15197                     pi->tx_power_offset[idx++];
15198
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                 idx = idx + 1 - delta_ind;
15206                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15207                     pi->tx_power_offset[idx];
15208
15209                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15210                     pi->tx_power_offset[idx];
15211                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15212                     pi->tx_power_offset[idx];
15213                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15214                     pi->tx_power_offset[idx];
15215                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15216                     pi->tx_power_offset[idx];
15217         }
15218 }
15219
15220 void wlc_phy_cal_init_nphy(phy_info_t *pi)
15221 {
15222 }
15223
15224 static void wlc_phy_war_force_trsw_to_R_cliplo_nphy(phy_info_t *pi, u8 core)
15225 {
15226         if (core == PHY_CORE_0) {
15227                 write_phy_reg(pi, 0x38, 0x4);
15228                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15229                         write_phy_reg(pi, 0x37, 0x0060);
15230                 } else {
15231                         write_phy_reg(pi, 0x37, 0x1080);
15232                 }
15233         } else if (core == PHY_CORE_1) {
15234                 write_phy_reg(pi, 0x2ae, 0x4);
15235                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15236                         write_phy_reg(pi, 0x2ad, 0x0060);
15237                 } else {
15238                         write_phy_reg(pi, 0x2ad, 0x1080);
15239                 }
15240         }
15241 }
15242
15243 static void wlc_phy_war_txchain_upd_nphy(phy_info_t *pi, u8 txchain)
15244 {
15245         u8 txchain0, txchain1;
15246
15247         txchain0 = txchain & 0x1;
15248         txchain1 = (txchain & 0x2) >> 1;
15249         if (!txchain0) {
15250                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15251         }
15252
15253         if (!txchain1) {
15254                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15255         }
15256 }
15257
15258 static void wlc_phy_workarounds_nphy(phy_info_t *pi)
15259 {
15260         u8 rfseq_rx2tx_events[] = {
15261                 NPHY_RFSEQ_CMD_NOP,
15262                 NPHY_RFSEQ_CMD_RXG_FBW,
15263                 NPHY_RFSEQ_CMD_TR_SWITCH,
15264                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15265                 NPHY_RFSEQ_CMD_RXPD_TXPD,
15266                 NPHY_RFSEQ_CMD_TX_GAIN,
15267                 NPHY_RFSEQ_CMD_EXT_PA
15268         };
15269         u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
15270         u8 rfseq_tx2rx_events[] = {
15271                 NPHY_RFSEQ_CMD_NOP,
15272                 NPHY_RFSEQ_CMD_EXT_PA,
15273                 NPHY_RFSEQ_CMD_TX_GAIN,
15274                 NPHY_RFSEQ_CMD_RXPD_TXPD,
15275                 NPHY_RFSEQ_CMD_TR_SWITCH,
15276                 NPHY_RFSEQ_CMD_RXG_FBW,
15277                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
15278         };
15279         u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
15280         u8 rfseq_tx2rx_events_rev3[] = {
15281                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
15282                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15283                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15284                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15285                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15286                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15287                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15288                 NPHY_REV3_RFSEQ_CMD_END
15289         };
15290         u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
15291         u8 rfseq_rx2tx_events_rev3[] = {
15292                 NPHY_REV3_RFSEQ_CMD_NOP,
15293                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15294                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15295                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15296                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15297                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15298                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15299                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
15300                 NPHY_REV3_RFSEQ_CMD_END
15301         };
15302         u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
15303
15304         u8 rfseq_rx2tx_events_rev3_ipa[] = {
15305                 NPHY_REV3_RFSEQ_CMD_NOP,
15306                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15307                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15308                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15309                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15310                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15311                 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
15312                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15313                 NPHY_REV3_RFSEQ_CMD_END
15314         };
15315         u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
15316         u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
15317
15318         s16 alpha0, alpha1, alpha2;
15319         s16 beta0, beta1, beta2;
15320         u32 leg_data_weights, ht_data_weights, nss1_data_weights,
15321             stbc_data_weights;
15322         u8 chan_freq_range = 0;
15323         u16 dac_control = 0x0002;
15324         u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
15325         u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
15326         u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
15327         u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
15328         u16 *aux_adc_vmid;
15329         u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
15330         u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
15331         u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
15332         u16 *aux_adc_gain;
15333         u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
15334         u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
15335         s32 min_nvar_val = 0x18d;
15336         s32 min_nvar_offset_6mbps = 20;
15337         u8 pdetrange;
15338         u8 triso;
15339         u16 regval;
15340         u16 afectrl_adc_ctrl1_rev7 = 0x20;
15341         u16 afectrl_adc_ctrl2_rev7 = 0x0;
15342         u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
15343         u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
15344         u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
15345         u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
15346         u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
15347         u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
15348         u16 ipalvlshift_3p3_war_en = 0;
15349         u16 rccal_bcap_val, rccal_scap_val;
15350         u16 rccal_tx20_11b_bcap = 0;
15351         u16 rccal_tx20_11b_scap = 0;
15352         u16 rccal_tx20_11n_bcap = 0;
15353         u16 rccal_tx20_11n_scap = 0;
15354         u16 rccal_tx40_11n_bcap = 0;
15355         u16 rccal_tx40_11n_scap = 0;
15356         u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
15357         u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
15358         u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
15359         u16 tx_lpf_bw_ofdm_20mhz = 0;
15360         u16 tx_lpf_bw_ofdm_40mhz = 0;
15361         u16 tx_lpf_bw_11b = 0;
15362         u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
15363         u16 txgm_idac_bleed = 0;
15364         bool rccal_ovrd = false;
15365         u16 freq;
15366         int coreNum;
15367
15368         if (CHSPEC_IS5G(pi->radio_chanspec)) {
15369                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
15370         } else {
15371                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
15372         }
15373
15374         if (pi->phyhang_avoid)
15375                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15376
15377         if (!ISSIM_ENAB(pi->sh->sih)) {
15378                 or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
15379         }
15380
15381         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15382
15383                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
15384                         mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
15385
15386                         mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
15387                         mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
15388                         mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
15389                         mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
15390                         mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
15391                         mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
15392                         mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
15393                         mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
15394                         mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
15395                         mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
15396                         mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
15397                         mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
15398                         mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
15399                         mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
15400                         mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
15401                         mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
15402                 }
15403
15404                 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
15405                         write_phy_reg(pi, 0x23f, 0x1b0);
15406                         write_phy_reg(pi, 0x240, 0x1b0);
15407                 }
15408
15409                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
15410                         mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
15411                 }
15412
15413                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
15414                                          &dac_control);
15415                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
15416                                          &dac_control);
15417
15418                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15419                                         1, 0, 32, &leg_data_weights);
15420                 leg_data_weights = leg_data_weights & 0xffffff;
15421                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15422                                          1, 0, 32, &leg_data_weights);
15423
15424                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15425                                          2, 0x15e, 16,
15426                                          rfseq_rx2tx_dacbufpu_rev7);
15427                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
15428                                          rfseq_rx2tx_dacbufpu_rev7);
15429
15430                 if (PHY_IPA(pi)) {
15431                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15432                                                rfseq_rx2tx_events_rev3_ipa,
15433                                                rfseq_rx2tx_dlys_rev3_ipa,
15434                                                sizeof
15435                                                (rfseq_rx2tx_events_rev3_ipa) /
15436                                                sizeof
15437                                                (rfseq_rx2tx_events_rev3_ipa
15438                                                 [0]));
15439                 }
15440
15441                 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
15442                 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
15443
15444                 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
15445                 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
15446                 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
15447
15448                 if (PHY_IPA(pi)) {
15449
15450                         if (((pi->pubpi.radiorev == 5)
15451                              && (CHSPEC_IS40(pi->radio_chanspec) == 1))
15452                             || (pi->pubpi.radiorev == 7)
15453                             || (pi->pubpi.radiorev == 8)) {
15454
15455                                 rccal_bcap_val =
15456                                     read_radio_reg(pi,
15457                                                    RADIO_2057_RCCAL_BCAP_VAL);
15458                                 rccal_scap_val =
15459                                     read_radio_reg(pi,
15460                                                    RADIO_2057_RCCAL_SCAP_VAL);
15461
15462                                 rccal_tx20_11b_bcap = rccal_bcap_val;
15463                                 rccal_tx20_11b_scap = rccal_scap_val;
15464
15465                                 if ((pi->pubpi.radiorev == 5) &&
15466                                     (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
15467
15468                                         rccal_tx20_11n_bcap = rccal_bcap_val;
15469                                         rccal_tx20_11n_scap = rccal_scap_val;
15470                                         rccal_tx40_11n_bcap = 0xc;
15471                                         rccal_tx40_11n_scap = 0xc;
15472
15473                                         rccal_ovrd = true;
15474
15475                                 } else if ((pi->pubpi.radiorev == 7)
15476                                            || (pi->pubpi.radiorev == 8)) {
15477
15478                                         tx_lpf_bw_ofdm_20mhz = 4;
15479                                         tx_lpf_bw_11b = 1;
15480
15481                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15482                                                 rccal_tx20_11n_bcap = 0xc;
15483                                                 rccal_tx20_11n_scap = 0xc;
15484                                                 rccal_tx40_11n_bcap = 0xa;
15485                                                 rccal_tx40_11n_scap = 0xa;
15486                                         } else {
15487                                                 rccal_tx20_11n_bcap = 0x14;
15488                                                 rccal_tx20_11n_scap = 0x14;
15489                                                 rccal_tx40_11n_bcap = 0xf;
15490                                                 rccal_tx40_11n_scap = 0xf;
15491                                         }
15492
15493                                         rccal_ovrd = true;
15494                                 }
15495                         }
15496
15497                 } else {
15498
15499                         if (pi->pubpi.radiorev == 5) {
15500
15501                                 tx_lpf_bw_ofdm_20mhz = 1;
15502                                 tx_lpf_bw_ofdm_40mhz = 3;
15503
15504                                 rccal_bcap_val =
15505                                     read_radio_reg(pi,
15506                                                    RADIO_2057_RCCAL_BCAP_VAL);
15507                                 rccal_scap_val =
15508                                     read_radio_reg(pi,
15509                                                    RADIO_2057_RCCAL_SCAP_VAL);
15510
15511                                 rccal_tx20_11b_bcap = rccal_bcap_val;
15512                                 rccal_tx20_11b_scap = rccal_scap_val;
15513
15514                                 rccal_tx20_11n_bcap = 0x13;
15515                                 rccal_tx20_11n_scap = 0x11;
15516                                 rccal_tx40_11n_bcap = 0x13;
15517                                 rccal_tx40_11n_scap = 0x11;
15518
15519                                 rccal_ovrd = true;
15520                         }
15521                 }
15522
15523                 if (rccal_ovrd) {
15524
15525                         rx2tx_lpf_rc_lut_tx20_11b = (rccal_tx20_11b_bcap << 8) |
15526                             (rccal_tx20_11b_scap << 3) | tx_lpf_bw_11b;
15527                         rx2tx_lpf_rc_lut_tx20_11n = (rccal_tx20_11n_bcap << 8) |
15528                             (rccal_tx20_11n_scap << 3) | tx_lpf_bw_ofdm_20mhz;
15529                         rx2tx_lpf_rc_lut_tx40_11n = (rccal_tx40_11n_bcap << 8) |
15530                             (rccal_tx40_11n_scap << 3) | tx_lpf_bw_ofdm_40mhz;
15531
15532                         for (coreNum = 0; coreNum <= 1; coreNum++) {
15533                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15534                                                          1,
15535                                                          0x152 + coreNum * 0x10,
15536                                                          16,
15537                                                          &rx2tx_lpf_rc_lut_tx20_11b);
15538                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15539                                                          1,
15540                                                          0x153 + coreNum * 0x10,
15541                                                          16,
15542                                                          &rx2tx_lpf_rc_lut_tx20_11n);
15543                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15544                                                          1,
15545                                                          0x154 + coreNum * 0x10,
15546                                                          16,
15547                                                          &rx2tx_lpf_rc_lut_tx20_11n);
15548                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15549                                                          1,
15550                                                          0x155 + coreNum * 0x10,
15551                                                          16,
15552                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15553                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15554                                                          1,
15555                                                          0x156 + coreNum * 0x10,
15556                                                          16,
15557                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15558                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15559                                                          1,
15560                                                          0x157 + coreNum * 0x10,
15561                                                          16,
15562                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15563                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15564                                                          1,
15565                                                          0x158 + coreNum * 0x10,
15566                                                          16,
15567                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15568                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15569                                                          1,
15570                                                          0x159 + coreNum * 0x10,
15571                                                          16,
15572                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15573                         }
15574
15575                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4),
15576                                                           1, 0x3, 0,
15577                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
15578                 }
15579
15580                 if (!NORADIO_ENAB(pi->pubpi)) {
15581                         write_phy_reg(pi, 0x32f, 0x3);
15582                 }
15583
15584                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6)) {
15585                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
15586                                                           1, 0x3, 0,
15587                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
15588                 }
15589
15590                 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
15591                     (pi->pubpi.radiorev == 6)) {
15592                         if ((pi->sh->sromrev >= 8)
15593                             && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
15594                                 ipalvlshift_3p3_war_en = 1;
15595
15596                         if (ipalvlshift_3p3_war_en) {
15597                                 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
15598                                                 0x5);
15599                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
15600                                                 0x30);
15601                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
15602                                 or_radio_reg(pi,
15603                                              RADIO_2057_RXTXBIAS_CONFIG_CORE0,
15604                                              0x1);
15605                                 or_radio_reg(pi,
15606                                              RADIO_2057_RXTXBIAS_CONFIG_CORE1,
15607                                              0x1);
15608
15609                                 ipa2g_mainbias = 0x1f;
15610
15611                                 ipa2g_casconv = 0x6f;
15612
15613                                 ipa2g_biasfilt = 0xaa;
15614                         } else {
15615
15616                                 ipa2g_mainbias = 0x2b;
15617
15618                                 ipa2g_casconv = 0x7f;
15619
15620                                 ipa2g_biasfilt = 0xee;
15621                         }
15622
15623                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15624                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15625                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15626                                                          coreNum, IPA2G_IMAIN,
15627                                                          ipa2g_mainbias);
15628                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15629                                                          coreNum, IPA2G_CASCONV,
15630                                                          ipa2g_casconv);
15631                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15632                                                          coreNum,
15633                                                          IPA2G_BIAS_FILTER,
15634                                                          ipa2g_biasfilt);
15635                                 }
15636                         }
15637                 }
15638
15639                 if (PHY_IPA(pi)) {
15640                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15641                                 if ((pi->pubpi.radiorev == 3)
15642                                     || (pi->pubpi.radiorev == 4)
15643                                     || (pi->pubpi.radiorev == 6)) {
15644
15645                                         txgm_idac_bleed = 0x7f;
15646                                 }
15647
15648                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15649                                         if (txgm_idac_bleed != 0)
15650                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15651                                                                  CORE, coreNum,
15652                                                                  TXGM_IDAC_BLEED,
15653                                                                  txgm_idac_bleed);
15654                                 }
15655
15656                                 if (pi->pubpi.radiorev == 5) {
15657
15658                                         for (coreNum = 0; coreNum <= 1;
15659                                              coreNum++) {
15660                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15661                                                                  CORE, coreNum,
15662                                                                  IPA2G_CASCONV,
15663                                                                  0x13);
15664                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15665                                                                  CORE, coreNum,
15666                                                                  IPA2G_IMAIN,
15667                                                                  0x1f);
15668                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15669                                                                  CORE, coreNum,
15670                                                                  IPA2G_BIAS_FILTER,
15671                                                                  0xee);
15672                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15673                                                                  CORE, coreNum,
15674                                                                  PAD2G_IDACS,
15675                                                                  0x8a);
15676                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15677                                                                  CORE, coreNum,
15678                                                                  PAD_BIAS_FILTER_BWS,
15679                                                                  0x3e);
15680                                         }
15681
15682                                 } else if ((pi->pubpi.radiorev == 7)
15683                                            || (pi->pubpi.radiorev == 8)) {
15684
15685                                         if (CHSPEC_IS40(pi->radio_chanspec) ==
15686                                             0) {
15687                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15688                                                                  CORE, 0,
15689                                                                  IPA2G_IMAIN,
15690                                                                  0x14);
15691                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15692                                                                  CORE, 1,
15693                                                                  IPA2G_IMAIN,
15694                                                                  0x12);
15695                                         } else {
15696                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15697                                                                  CORE, 0,
15698                                                                  IPA2G_IMAIN,
15699                                                                  0x16);
15700                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15701                                                                  CORE, 1,
15702                                                                  IPA2G_IMAIN,
15703                                                                  0x16);
15704                                         }
15705                                 }
15706
15707                         } else {
15708                                 freq =
15709                                     CHAN5G_FREQ(CHSPEC_CHANNEL
15710                                                 (pi->radio_chanspec));
15711                                 if (((freq >= 5180) && (freq <= 5230))
15712                                     || ((freq >= 5745) && (freq <= 5805))) {
15713                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15714                                                          0, IPA5G_BIAS_FILTER,
15715                                                          0xff);
15716                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15717                                                          1, IPA5G_BIAS_FILTER,
15718                                                          0xff);
15719                                 }
15720                         }
15721                 } else {
15722
15723                         if (pi->pubpi.radiorev != 5) {
15724                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15725                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15726                                                          coreNum,
15727                                                          TXMIX2G_TUNE_BOOST_PU,
15728                                                          0x61);
15729                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15730                                                          coreNum,
15731                                                          TXGM_IDAC_BLEED, 0x70);
15732                                 }
15733                         }
15734                 }
15735
15736                 if (pi->pubpi.radiorev == 4) {
15737                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15738                                                  0x05, 16,
15739                                                  &afectrl_adc_ctrl1_rev7);
15740                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15741                                                  0x15, 16,
15742                                                  &afectrl_adc_ctrl1_rev7);
15743
15744                         for (coreNum = 0; coreNum <= 1; coreNum++) {
15745                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15746                                                  AFE_VCM_CAL_MASTER, 0x0);
15747                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15748                                                  AFE_SET_VCM_I, 0x3f);
15749                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15750                                                  AFE_SET_VCM_Q, 0x3f);
15751                         }
15752                 } else {
15753                         mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
15754                         mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
15755                         mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
15756                         mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
15757
15758                         mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
15759                         mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
15760                         mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
15761                         mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
15762
15763                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15764                                                  0x05, 16,
15765                                                  &afectrl_adc_ctrl2_rev7);
15766                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15767                                                  0x15, 16,
15768                                                  &afectrl_adc_ctrl2_rev7);
15769
15770                         mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
15771                         mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
15772                         mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
15773                         mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
15774                 }
15775
15776                 write_phy_reg(pi, 0x6a, 0x2);
15777
15778                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
15779                                          &min_nvar_offset_6mbps);
15780
15781                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
15782                                          &rfseq_pktgn_lpf_hpc_rev7);
15783
15784                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
15785                                          &rfseq_pktgn_lpf_h_hpc_rev7);
15786
15787                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
15788                                          &rfseq_htpktgn_lpf_hpc_rev7);
15789
15790                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
15791                                          &rfseq_cckpktgn_lpf_hpc_rev7);
15792
15793                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
15794                                          &rfseq_tx2rx_lpf_h_hpc_rev7);
15795
15796                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
15797                                          &rfseq_rx2tx_lpf_h_hpc_rev7);
15798
15799                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
15800                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15801                                                  32, &min_nvar_val);
15802                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15803                                                  127, 32, &min_nvar_val);
15804                 } else {
15805                         min_nvar_val = noise_var_tbl_rev7[3];
15806                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15807                                                  32, &min_nvar_val);
15808
15809                         min_nvar_val = noise_var_tbl_rev7[127];
15810                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15811                                                  127, 32, &min_nvar_val);
15812                 }
15813
15814                 wlc_phy_workarounds_nphy_gainctrl(pi);
15815
15816                 pdetrange =
15817                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
15818                     pdetrange : pi->srom_fem2g.pdetrange;
15819
15820                 if (pdetrange == 0) {
15821                         chan_freq_range =
15822                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
15823                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15824                                 aux_adc_vmid_rev7_core0[3] = 0x70;
15825                                 aux_adc_vmid_rev7_core1[3] = 0x70;
15826                                 aux_adc_gain_rev7[3] = 2;
15827                         } else {
15828                                 aux_adc_vmid_rev7_core0[3] = 0x80;
15829                                 aux_adc_vmid_rev7_core1[3] = 0x80;
15830                                 aux_adc_gain_rev7[3] = 3;
15831                         }
15832                 } else if (pdetrange == 1) {
15833                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15834                                 aux_adc_vmid_rev7_core0[3] = 0x7c;
15835                                 aux_adc_vmid_rev7_core1[3] = 0x7c;
15836                                 aux_adc_gain_rev7[3] = 2;
15837                         } else {
15838                                 aux_adc_vmid_rev7_core0[3] = 0x8c;
15839                                 aux_adc_vmid_rev7_core1[3] = 0x8c;
15840                                 aux_adc_gain_rev7[3] = 1;
15841                         }
15842                 } else if (pdetrange == 2) {
15843                         if (pi->pubpi.radioid == BCM2057_ID) {
15844                                 if ((pi->pubpi.radiorev == 5)
15845                                     || (pi->pubpi.radiorev == 7)
15846                                     || (pi->pubpi.radiorev == 8)) {
15847                                         if (chan_freq_range ==
15848                                             WL_CHAN_FREQ_RANGE_2G) {
15849                                                 aux_adc_vmid_rev7_core0[3] =
15850                                                     0x8c;
15851                                                 aux_adc_vmid_rev7_core1[3] =
15852                                                     0x8c;
15853                                                 aux_adc_gain_rev7[3] = 0;
15854                                         } else {
15855                                                 aux_adc_vmid_rev7_core0[3] =
15856                                                     0x96;
15857                                                 aux_adc_vmid_rev7_core1[3] =
15858                                                     0x96;
15859                                                 aux_adc_gain_rev7[3] = 0;
15860                                         }
15861                                 }
15862                         }
15863
15864                 } else if (pdetrange == 3) {
15865                         if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
15866                                 aux_adc_vmid_rev7_core0[3] = 0x89;
15867                                 aux_adc_vmid_rev7_core1[3] = 0x89;
15868                                 aux_adc_gain_rev7[3] = 0;
15869                         }
15870
15871                 } else if (pdetrange == 5) {
15872
15873                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15874                                 aux_adc_vmid_rev7_core0[3] = 0x80;
15875                                 aux_adc_vmid_rev7_core1[3] = 0x80;
15876                                 aux_adc_gain_rev7[3] = 3;
15877                         } else {
15878                                 aux_adc_vmid_rev7_core0[3] = 0x70;
15879                                 aux_adc_vmid_rev7_core1[3] = 0x70;
15880                                 aux_adc_gain_rev7[3] = 2;
15881                         }
15882                 }
15883
15884                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
15885                                          &aux_adc_vmid_rev7_core0);
15886                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
15887                                          &aux_adc_vmid_rev7_core1);
15888                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
15889                                          &aux_adc_gain_rev7);
15890                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
15891                                          &aux_adc_gain_rev7);
15892
15893         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15894
15895                 write_phy_reg(pi, 0x23f, 0x1f8);
15896                 write_phy_reg(pi, 0x240, 0x1f8);
15897
15898                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15899                                         1, 0, 32, &leg_data_weights);
15900                 leg_data_weights = leg_data_weights & 0xffffff;
15901                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15902                                          1, 0, 32, &leg_data_weights);
15903
15904                 alpha0 = 293;
15905                 alpha1 = 435;
15906                 alpha2 = 261;
15907                 beta0 = 366;
15908                 beta1 = 205;
15909                 beta2 = 32;
15910                 write_phy_reg(pi, 0x145, alpha0);
15911                 write_phy_reg(pi, 0x146, alpha1);
15912                 write_phy_reg(pi, 0x147, alpha2);
15913                 write_phy_reg(pi, 0x148, beta0);
15914                 write_phy_reg(pi, 0x149, beta1);
15915                 write_phy_reg(pi, 0x14a, beta2);
15916
15917                 write_phy_reg(pi, 0x38, 0xC);
15918                 write_phy_reg(pi, 0x2ae, 0xC);
15919
15920                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
15921                                        rfseq_tx2rx_events_rev3,
15922                                        rfseq_tx2rx_dlys_rev3,
15923                                        sizeof(rfseq_tx2rx_events_rev3) /
15924                                        sizeof(rfseq_tx2rx_events_rev3[0]));
15925
15926                 if (PHY_IPA(pi)) {
15927                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15928                                                rfseq_rx2tx_events_rev3_ipa,
15929                                                rfseq_rx2tx_dlys_rev3_ipa,
15930                                                sizeof
15931                                                (rfseq_rx2tx_events_rev3_ipa) /
15932                                                sizeof
15933                                                (rfseq_rx2tx_events_rev3_ipa
15934                                                 [0]));
15935                 }
15936
15937                 if ((pi->sh->hw_phyrxchain != 0x3) &&
15938                     (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
15939
15940                         if (PHY_IPA(pi)) {
15941                                 rfseq_rx2tx_dlys_rev3[5] = 59;
15942                                 rfseq_rx2tx_dlys_rev3[6] = 1;
15943                                 rfseq_rx2tx_events_rev3[7] =
15944                                     NPHY_REV3_RFSEQ_CMD_END;
15945                         }
15946
15947                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15948                                                rfseq_rx2tx_events_rev3,
15949                                                rfseq_rx2tx_dlys_rev3,
15950                                                sizeof(rfseq_rx2tx_events_rev3) /
15951                                                sizeof(rfseq_rx2tx_events_rev3
15952                                                       [0]));
15953                 }
15954
15955                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15956                         write_phy_reg(pi, 0x6a, 0x2);
15957                 } else {
15958                         write_phy_reg(pi, 0x6a, 0x9c40);
15959                 }
15960
15961                 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
15962
15963                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
15964                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15965                                                  32, &min_nvar_val);
15966                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15967                                                  127, 32, &min_nvar_val);
15968                 } else {
15969                         min_nvar_val = noise_var_tbl_rev3[3];
15970                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15971                                                  32, &min_nvar_val);
15972
15973                         min_nvar_val = noise_var_tbl_rev3[127];
15974                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15975                                                  127, 32, &min_nvar_val);
15976                 }
15977
15978                 wlc_phy_workarounds_nphy_gainctrl(pi);
15979
15980                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
15981                                          &dac_control);
15982                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
15983                                          &dac_control);
15984
15985                 pdetrange =
15986                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
15987                     pdetrange : pi->srom_fem2g.pdetrange;
15988
15989                 if (pdetrange == 0) {
15990                         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
15991                                 aux_adc_vmid = aux_adc_vmid_rev4;
15992                                 aux_adc_gain = aux_adc_gain_rev4;
15993                         } else {
15994                                 aux_adc_vmid = aux_adc_vmid_rev3;
15995                                 aux_adc_gain = aux_adc_gain_rev3;
15996                         }
15997                         chan_freq_range =
15998                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
15999                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16000                                 switch (chan_freq_range) {
16001                                 case WL_CHAN_FREQ_RANGE_5GL:
16002                                         aux_adc_vmid[3] = 0x89;
16003                                         aux_adc_gain[3] = 0;
16004                                         break;
16005                                 case WL_CHAN_FREQ_RANGE_5GM:
16006                                         aux_adc_vmid[3] = 0x89;
16007                                         aux_adc_gain[3] = 0;
16008                                         break;
16009                                 case WL_CHAN_FREQ_RANGE_5GH:
16010                                         aux_adc_vmid[3] = 0x89;
16011                                         aux_adc_gain[3] = 0;
16012                                         break;
16013                                 default:
16014                                         break;
16015                                 }
16016                         }
16017                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16018                                                  0x08, 16, aux_adc_vmid);
16019                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16020                                                  0x18, 16, aux_adc_vmid);
16021                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16022                                                  0x0c, 16, aux_adc_gain);
16023                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16024                                                  0x1c, 16, aux_adc_gain);
16025                 } else if (pdetrange == 1) {
16026                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16027                                                  0x08, 16, sk_adc_vmid);
16028                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16029                                                  0x18, 16, sk_adc_vmid);
16030                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16031                                                  0x0c, 16, sk_adc_gain);
16032                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16033                                                  0x1c, 16, sk_adc_gain);
16034                 } else if (pdetrange == 2) {
16035
16036                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16037                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16038
16039                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16040                                 chan_freq_range =
16041                                     wlc_phy_get_chan_freq_range_nphy(pi, 0);
16042                                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16043                                         bcm_adc_vmid[3] = 0x8e;
16044                                         bcm_adc_gain[3] = 0x03;
16045                                 } else {
16046                                         bcm_adc_vmid[3] = 0x94;
16047                                         bcm_adc_gain[3] = 0x03;
16048                                 }
16049                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16050                                 bcm_adc_vmid[3] = 0x84;
16051                                 bcm_adc_gain[3] = 0x02;
16052                         }
16053
16054                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16055                                                  0x08, 16, bcm_adc_vmid);
16056                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16057                                                  0x18, 16, bcm_adc_vmid);
16058                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16059                                                  0x0c, 16, bcm_adc_gain);
16060                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16061                                                  0x1c, 16, bcm_adc_gain);
16062                 } else if (pdetrange == 3) {
16063                         chan_freq_range =
16064                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16065                         if ((NREV_GE(pi->pubpi.phy_rev, 4))
16066                             && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16067
16068                                 u16 auxadc_vmid[] = {
16069                                         0xa2, 0xb4, 0xb4, 0x270 };
16070                                 u16 auxadc_gain[] = {
16071                                         0x02, 0x02, 0x02, 0x00 };
16072
16073                                 wlc_phy_table_write_nphy(pi,
16074                                                          NPHY_TBL_ID_AFECTRL, 4,
16075                                                          0x08, 16, auxadc_vmid);
16076                                 wlc_phy_table_write_nphy(pi,
16077                                                          NPHY_TBL_ID_AFECTRL, 4,
16078                                                          0x18, 16, auxadc_vmid);
16079                                 wlc_phy_table_write_nphy(pi,
16080                                                          NPHY_TBL_ID_AFECTRL, 4,
16081                                                          0x0c, 16, auxadc_gain);
16082                                 wlc_phy_table_write_nphy(pi,
16083                                                          NPHY_TBL_ID_AFECTRL, 4,
16084                                                          0x1c, 16, auxadc_gain);
16085                         }
16086                 } else if ((pdetrange == 4) || (pdetrange == 5)) {
16087                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16088                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16089                         u16 Vmid[2], Av[2];
16090
16091                         chan_freq_range =
16092                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16093                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16094                                 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16095                                 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16096                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16097                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16098                         } else {
16099                                 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16100                                 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16101                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16102                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16103                         }
16104
16105                         bcm_adc_vmid[3] = Vmid[0];
16106                         bcm_adc_gain[3] = Av[0];
16107                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16108                                                  0x08, 16, bcm_adc_vmid);
16109                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16110                                                  0x0c, 16, bcm_adc_gain);
16111
16112                         bcm_adc_vmid[3] = Vmid[1];
16113                         bcm_adc_gain[3] = Av[1];
16114                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16115                                                  0x18, 16, bcm_adc_vmid);
16116                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16117                                                  0x1c, 16, bcm_adc_gain);
16118                 }
16119
16120                 write_radio_reg(pi,
16121                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
16122                                 0x0);
16123                 write_radio_reg(pi,
16124                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
16125                                 0x0);
16126
16127                 write_radio_reg(pi,
16128                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
16129                                 0x6);
16130                 write_radio_reg(pi,
16131                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
16132                                 0x6);
16133
16134                 write_radio_reg(pi,
16135                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
16136                                 0x7);
16137                 write_radio_reg(pi,
16138                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
16139                                 0x7);
16140
16141                 write_radio_reg(pi,
16142                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
16143                                 0x88);
16144                 write_radio_reg(pi,
16145                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
16146                                 0x88);
16147
16148                 write_radio_reg(pi,
16149                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
16150                                 0x0);
16151                 write_radio_reg(pi,
16152                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
16153                                 0x0);
16154
16155                 write_radio_reg(pi,
16156                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
16157                                 0x0);
16158                 write_radio_reg(pi,
16159                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
16160                                 0x0);
16161
16162                 triso =
16163                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16164                     triso : pi->srom_fem2g.triso;
16165                 if (triso == 7) {
16166                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16167                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16168                 }
16169
16170                 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16171
16172                 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16173                      (CHSPEC_IS5G(pi->radio_chanspec))) ||
16174                     (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16175                       (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16176                      (CHSPEC_IS2G(pi->radio_chanspec)))) {
16177                         nss1_data_weights = 0x00088888;
16178                         ht_data_weights = 0x00088888;
16179                         stbc_data_weights = 0x00088888;
16180                 } else {
16181                         nss1_data_weights = 0x88888888;
16182                         ht_data_weights = 0x88888888;
16183                         stbc_data_weights = 0x88888888;
16184                 }
16185                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16186                                          1, 1, 32, &nss1_data_weights);
16187                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16188                                          1, 2, 32, &ht_data_weights);
16189                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16190                                          1, 3, 32, &stbc_data_weights);
16191
16192                 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16193                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
16194                                 write_radio_reg(pi,
16195                                                 RADIO_2056_TX_GMBB_IDAC |
16196                                                 RADIO_2056_TX0, 0x70);
16197                                 write_radio_reg(pi,
16198                                                 RADIO_2056_TX_GMBB_IDAC |
16199                                                 RADIO_2056_TX1, 0x70);
16200                         }
16201                 }
16202
16203                 if (!pi->edcrs_threshold_lock) {
16204                         write_phy_reg(pi, 0x224, 0x3eb);
16205                         write_phy_reg(pi, 0x225, 0x3eb);
16206                         write_phy_reg(pi, 0x226, 0x341);
16207                         write_phy_reg(pi, 0x227, 0x341);
16208                         write_phy_reg(pi, 0x228, 0x42b);
16209                         write_phy_reg(pi, 0x229, 0x42b);
16210                         write_phy_reg(pi, 0x22a, 0x381);
16211                         write_phy_reg(pi, 0x22b, 0x381);
16212                         write_phy_reg(pi, 0x22c, 0x42b);
16213                         write_phy_reg(pi, 0x22d, 0x42b);
16214                         write_phy_reg(pi, 0x22e, 0x381);
16215                         write_phy_reg(pi, 0x22f, 0x381);
16216                 }
16217
16218                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16219
16220                         if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK) {
16221                                 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
16222                                                MHF4_BPHY_TXCORE0,
16223                                                MHF4_BPHY_TXCORE0, WLC_BAND_ALL);
16224                         }
16225                 }
16226         } else {
16227
16228                 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
16229                     (pi->sh->boardtype == 0x8b)) {
16230                         uint i;
16231                         u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
16232                         for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
16233                                 rfseq_rx2tx_dlys[i] = war_dlys[i];
16234                 }
16235
16236                 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
16237                         and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
16238                         and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
16239                 } else {
16240                         or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
16241                         or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
16242                 }
16243
16244                 regval = 0x000a;
16245                 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
16246                 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
16247
16248                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16249                         regval = 0xcdaa;
16250                         wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
16251                         wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
16252                 }
16253
16254                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16255                         regval = 0x0000;
16256                         wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
16257                         wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
16258
16259                         regval = 0x7aab;
16260                         wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
16261                         wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
16262
16263                         regval = 0x0800;
16264                         wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
16265                         wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
16266                 }
16267
16268                 write_phy_reg(pi, 0xf8, 0x02d8);
16269                 write_phy_reg(pi, 0xf9, 0x0301);
16270                 write_phy_reg(pi, 0xfa, 0x02d8);
16271                 write_phy_reg(pi, 0xfb, 0x0301);
16272
16273                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
16274                                        rfseq_rx2tx_dlys,
16275                                        sizeof(rfseq_rx2tx_events) /
16276                                        sizeof(rfseq_rx2tx_events[0]));
16277
16278                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
16279                                        rfseq_tx2rx_dlys,
16280                                        sizeof(rfseq_tx2rx_events) /
16281                                        sizeof(rfseq_tx2rx_events[0]));
16282
16283                 wlc_phy_workarounds_nphy_gainctrl(pi);
16284
16285                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16286
16287                         if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
16288                                 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
16289                                                MHF3_NPHY_MLADV_WAR,
16290                                                MHF3_NPHY_MLADV_WAR,
16291                                                WLC_BAND_ALL);
16292
16293                 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16294                         write_phy_reg(pi, 0x1e3, 0x0);
16295                         write_phy_reg(pi, 0x1e4, 0x0);
16296                 }
16297
16298                 if (NREV_LT(pi->pubpi.phy_rev, 2))
16299                         mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
16300
16301                 alpha0 = 293;
16302                 alpha1 = 435;
16303                 alpha2 = 261;
16304                 beta0 = 366;
16305                 beta1 = 205;
16306                 beta2 = 32;
16307                 write_phy_reg(pi, 0x145, alpha0);
16308                 write_phy_reg(pi, 0x146, alpha1);
16309                 write_phy_reg(pi, 0x147, alpha2);
16310                 write_phy_reg(pi, 0x148, beta0);
16311                 write_phy_reg(pi, 0x149, beta1);
16312                 write_phy_reg(pi, 0x14a, beta2);
16313
16314                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16315                         mod_phy_reg(pi, 0x142, (0xf << 12), 0);
16316
16317                         write_phy_reg(pi, 0x192, 0xb5);
16318                         write_phy_reg(pi, 0x193, 0xa4);
16319                         write_phy_reg(pi, 0x194, 0x0);
16320                 }
16321
16322                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16323                         mod_phy_reg(pi, 0x221,
16324                                     NPHY_FORCESIG_DECODEGATEDCLKS,
16325                                     NPHY_FORCESIG_DECODEGATEDCLKS);
16326                 }
16327         }
16328
16329         if (pi->phyhang_avoid)
16330                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
16331 }
16332
16333 static void wlc_phy_workarounds_nphy_gainctrl(phy_info_t *pi)
16334 {
16335         u16 w1th, hpf_code, currband;
16336         int ctr;
16337         u8 rfseq_updategainu_events[] = {
16338                 NPHY_RFSEQ_CMD_RX_GAIN,
16339                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16340                 NPHY_RFSEQ_CMD_SET_HPF_BW
16341         };
16342         u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
16343         s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
16344         s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
16345         s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
16346         s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
16347         s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
16348         s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
16349         s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
16350         s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
16351         s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
16352         s8 *lna1_gain_db = NULL;
16353         s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
16354         s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
16355         s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
16356         s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
16357         s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
16358         s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
16359         s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
16360         s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
16361         s8 *lna2_gain_db = NULL;
16362         s8 tiaG_gain_db[] = {
16363                 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
16364         s8 tiaA_gain_db[] = {
16365                 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
16366         s8 tiaA_gain_db_rev4[] = {
16367                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16368         s8 tiaA_gain_db_rev5[] = {
16369                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16370         s8 tiaA_gain_db_rev6[] = {
16371                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16372         s8 *tia_gain_db;
16373         s8 tiaG_gainbits[] = {
16374                 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
16375         s8 tiaA_gainbits[] = {
16376                 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
16377         s8 tiaA_gainbits_rev4[] = {
16378                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16379         s8 tiaA_gainbits_rev5[] = {
16380                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16381         s8 tiaA_gainbits_rev6[] = {
16382                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16383         s8 *tia_gainbits;
16384         s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
16385         s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
16386         u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
16387         u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
16388         u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
16389         u16 rfseqG_init_gain_rev5_elna[] = {
16390                 0x013f, 0x013f, 0x013f, 0x013f };
16391         u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
16392         u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
16393         u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
16394         u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
16395         u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
16396         u16 rfseqA_init_gain_rev4_elna[] = {
16397                 0x314f, 0x314f, 0x314f, 0x314f };
16398         u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
16399         u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
16400         u16 *rfseq_init_gain;
16401         u16 initG_gaincode = 0x627e;
16402         u16 initG_gaincode_rev4 = 0x527e;
16403         u16 initG_gaincode_rev5 = 0x427e;
16404         u16 initG_gaincode_rev5_elna = 0x027e;
16405         u16 initG_gaincode_rev6 = 0x527e;
16406         u16 initG_gaincode_rev6_224B0 = 0x427e;
16407         u16 initG_gaincode_rev6_elna = 0x127e;
16408         u16 initA_gaincode = 0x52de;
16409         u16 initA_gaincode_rev4 = 0x629e;
16410         u16 initA_gaincode_rev4_elna = 0x329e;
16411         u16 initA_gaincode_rev5 = 0x729e;
16412         u16 initA_gaincode_rev6 = 0x729e;
16413         u16 init_gaincode;
16414         u16 clip1hiG_gaincode = 0x107e;
16415         u16 clip1hiG_gaincode_rev4 = 0x007e;
16416         u16 clip1hiG_gaincode_rev5 = 0x1076;
16417         u16 clip1hiG_gaincode_rev6 = 0x007e;
16418         u16 clip1hiA_gaincode = 0x00de;
16419         u16 clip1hiA_gaincode_rev4 = 0x029e;
16420         u16 clip1hiA_gaincode_rev5 = 0x029e;
16421         u16 clip1hiA_gaincode_rev6 = 0x029e;
16422         u16 clip1hi_gaincode;
16423         u16 clip1mdG_gaincode = 0x0066;
16424         u16 clip1mdA_gaincode = 0x00ca;
16425         u16 clip1mdA_gaincode_rev4 = 0x1084;
16426         u16 clip1mdA_gaincode_rev5 = 0x2084;
16427         u16 clip1mdA_gaincode_rev6 = 0x2084;
16428         u16 clip1md_gaincode = 0;
16429         u16 clip1loG_gaincode = 0x0074;
16430         u16 clip1loG_gaincode_rev5[] = {
16431                 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
16432         };
16433         u16 clip1loG_gaincode_rev6[] = {
16434                 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
16435         };
16436         u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
16437         u16 clip1loA_gaincode = 0x00cc;
16438         u16 clip1loA_gaincode_rev4 = 0x0086;
16439         u16 clip1loA_gaincode_rev5 = 0x2086;
16440         u16 clip1loA_gaincode_rev6 = 0x2086;
16441         u16 clip1lo_gaincode;
16442         u8 crsminG_th = 0x18;
16443         u8 crsminG_th_rev5 = 0x18;
16444         u8 crsminG_th_rev6 = 0x18;
16445         u8 crsminA_th = 0x1e;
16446         u8 crsminA_th_rev4 = 0x24;
16447         u8 crsminA_th_rev5 = 0x24;
16448         u8 crsminA_th_rev6 = 0x24;
16449         u8 crsmin_th;
16450         u8 crsminlG_th = 0x18;
16451         u8 crsminlG_th_rev5 = 0x18;
16452         u8 crsminlG_th_rev6 = 0x18;
16453         u8 crsminlA_th = 0x1e;
16454         u8 crsminlA_th_rev4 = 0x24;
16455         u8 crsminlA_th_rev5 = 0x24;
16456         u8 crsminlA_th_rev6 = 0x24;
16457         u8 crsminl_th = 0;
16458         u8 crsminuG_th = 0x18;
16459         u8 crsminuG_th_rev5 = 0x18;
16460         u8 crsminuG_th_rev6 = 0x18;
16461         u8 crsminuA_th = 0x1e;
16462         u8 crsminuA_th_rev4 = 0x24;
16463         u8 crsminuA_th_rev5 = 0x24;
16464         u8 crsminuA_th_rev6 = 0x24;
16465         u8 crsminuA_th_rev6_224B0 = 0x2d;
16466         u8 crsminu_th;
16467         u16 nbclipG_th = 0x20d;
16468         u16 nbclipG_th_rev4 = 0x1a1;
16469         u16 nbclipG_th_rev5 = 0x1d0;
16470         u16 nbclipG_th_rev6 = 0x1d0;
16471         u16 nbclipA_th = 0x1a1;
16472         u16 nbclipA_th_rev4 = 0x107;
16473         u16 nbclipA_th_rev5 = 0x0a9;
16474         u16 nbclipA_th_rev6 = 0x0f0;
16475         u16 nbclip_th = 0;
16476         u8 w1clipG_th = 5;
16477         u8 w1clipG_th_rev5 = 9;
16478         u8 w1clipG_th_rev6 = 5;
16479         u8 w1clipA_th = 25, w1clip_th;
16480         u8 rssi_gain_default = 0x50;
16481         u8 rssiG_gain_rev6_224B0 = 0x50;
16482         u8 rssiA_gain_rev5 = 0x90;
16483         u8 rssiA_gain_rev6 = 0x90;
16484         u8 rssi_gain;
16485         u16 regval[21];
16486         u8 triso;
16487
16488         triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
16489             pi->srom_fem2g.triso;
16490
16491         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16492                 if (pi->pubpi.radiorev == 5) {
16493
16494                         wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
16495                 } else if (pi->pubpi.radiorev == 7) {
16496                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16497
16498                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
16499                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
16500
16501                 } else if ((pi->pubpi.radiorev == 3)
16502                            || (pi->pubpi.radiorev == 8)) {
16503                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16504
16505                         if (pi->pubpi.radiorev == 8) {
16506                                 mod_phy_reg(pi, 0x283,
16507                                             (0xff << 0), (0x44 << 0));
16508                                 mod_phy_reg(pi, 0x280,
16509                                             (0xff << 0), (0x44 << 0));
16510                         }
16511                 } else {
16512                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16513                 }
16514         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16515
16516                 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
16517
16518                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16519                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16520
16521                 currband =
16522                     read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
16523                 if (currband == 0) {
16524                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16525                                 if (pi->pubpi.radiorev == 11) {
16526                                         lna1_gain_db = lna1G_gain_db_rev6_224B0;
16527                                         lna2_gain_db = lna2G_gain_db_rev6_224B0;
16528                                         rfseq_init_gain =
16529                                             rfseqG_init_gain_rev6_224B0;
16530                                         init_gaincode =
16531                                             initG_gaincode_rev6_224B0;
16532                                         clip1hi_gaincode =
16533                                             clip1hiG_gaincode_rev6;
16534                                         clip1lo_gaincode =
16535                                             clip1loG_gaincode_rev6_224B0;
16536                                         nbclip_th = nbclipG_th_rev6;
16537                                         w1clip_th = w1clipG_th_rev6;
16538                                         crsmin_th = crsminG_th_rev6;
16539                                         crsminl_th = crsminlG_th_rev6;
16540                                         crsminu_th = crsminuG_th_rev6;
16541                                         rssi_gain = rssiG_gain_rev6_224B0;
16542                                 } else {
16543                                         lna1_gain_db = lna1G_gain_db_rev6;
16544                                         lna2_gain_db = lna2G_gain_db_rev6;
16545                                         if (pi->sh->boardflags & BFL_EXTLNA) {
16546
16547                                                 rfseq_init_gain =
16548                                                     rfseqG_init_gain_rev6_elna;
16549                                                 init_gaincode =
16550                                                     initG_gaincode_rev6_elna;
16551                                         } else {
16552                                                 rfseq_init_gain =
16553                                                     rfseqG_init_gain_rev6;
16554                                                 init_gaincode =
16555                                                     initG_gaincode_rev6;
16556                                         }
16557                                         clip1hi_gaincode =
16558                                             clip1hiG_gaincode_rev6;
16559                                         switch (triso) {
16560                                         case 0:
16561                                                 clip1lo_gaincode =
16562                                                     clip1loG_gaincode_rev6[0];
16563                                                 break;
16564                                         case 1:
16565                                                 clip1lo_gaincode =
16566                                                     clip1loG_gaincode_rev6[1];
16567                                                 break;
16568                                         case 2:
16569                                                 clip1lo_gaincode =
16570                                                     clip1loG_gaincode_rev6[2];
16571                                                 break;
16572                                         case 3:
16573                                         default:
16574
16575                                                 clip1lo_gaincode =
16576                                                     clip1loG_gaincode_rev6[3];
16577                                                 break;
16578                                         case 4:
16579                                                 clip1lo_gaincode =
16580                                                     clip1loG_gaincode_rev6[4];
16581                                                 break;
16582                                         case 5:
16583                                                 clip1lo_gaincode =
16584                                                     clip1loG_gaincode_rev6[5];
16585                                                 break;
16586                                         case 6:
16587                                                 clip1lo_gaincode =
16588                                                     clip1loG_gaincode_rev6[6];
16589                                                 break;
16590                                         case 7:
16591                                                 clip1lo_gaincode =
16592                                                     clip1loG_gaincode_rev6[7];
16593                                                 break;
16594                                         }
16595                                         nbclip_th = nbclipG_th_rev6;
16596                                         w1clip_th = w1clipG_th_rev6;
16597                                         crsmin_th = crsminG_th_rev6;
16598                                         crsminl_th = crsminlG_th_rev6;
16599                                         crsminu_th = crsminuG_th_rev6;
16600                                         rssi_gain = rssi_gain_default;
16601                                 }
16602                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16603                                 lna1_gain_db = lna1G_gain_db_rev5;
16604                                 lna2_gain_db = lna2G_gain_db_rev5;
16605                                 if (pi->sh->boardflags & BFL_EXTLNA) {
16606
16607                                         rfseq_init_gain =
16608                                             rfseqG_init_gain_rev5_elna;
16609                                         init_gaincode =
16610                                             initG_gaincode_rev5_elna;
16611                                 } else {
16612                                         rfseq_init_gain = rfseqG_init_gain_rev5;
16613                                         init_gaincode = initG_gaincode_rev5;
16614                                 }
16615                                 clip1hi_gaincode = clip1hiG_gaincode_rev5;
16616                                 switch (triso) {
16617                                 case 0:
16618                                         clip1lo_gaincode =
16619                                             clip1loG_gaincode_rev5[0];
16620                                         break;
16621                                 case 1:
16622                                         clip1lo_gaincode =
16623                                             clip1loG_gaincode_rev5[1];
16624                                         break;
16625                                 case 2:
16626                                         clip1lo_gaincode =
16627                                             clip1loG_gaincode_rev5[2];
16628                                         break;
16629                                 case 3:
16630
16631                                         clip1lo_gaincode =
16632                                             clip1loG_gaincode_rev5[3];
16633                                         break;
16634                                 case 4:
16635                                         clip1lo_gaincode =
16636                                             clip1loG_gaincode_rev5[4];
16637                                         break;
16638                                 case 5:
16639                                         clip1lo_gaincode =
16640                                             clip1loG_gaincode_rev5[5];
16641                                         break;
16642                                 case 6:
16643                                         clip1lo_gaincode =
16644                                             clip1loG_gaincode_rev5[6];
16645                                         break;
16646                                 case 7:
16647                                         clip1lo_gaincode =
16648                                             clip1loG_gaincode_rev5[7];
16649                                         break;
16650                                 default:
16651                                         clip1lo_gaincode =
16652                                             clip1loG_gaincode_rev5[3];
16653                                         break;
16654                                 }
16655                                 nbclip_th = nbclipG_th_rev5;
16656                                 w1clip_th = w1clipG_th_rev5;
16657                                 crsmin_th = crsminG_th_rev5;
16658                                 crsminl_th = crsminlG_th_rev5;
16659                                 crsminu_th = crsminuG_th_rev5;
16660                                 rssi_gain = rssi_gain_default;
16661                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16662                                 lna1_gain_db = lna1G_gain_db_rev4;
16663                                 lna2_gain_db = lna2G_gain_db;
16664                                 rfseq_init_gain = rfseqG_init_gain_rev4;
16665                                 init_gaincode = initG_gaincode_rev4;
16666                                 clip1hi_gaincode = clip1hiG_gaincode_rev4;
16667                                 clip1lo_gaincode = clip1loG_gaincode;
16668                                 nbclip_th = nbclipG_th_rev4;
16669                                 w1clip_th = w1clipG_th;
16670                                 crsmin_th = crsminG_th;
16671                                 crsminl_th = crsminlG_th;
16672                                 crsminu_th = crsminuG_th;
16673                                 rssi_gain = rssi_gain_default;
16674                         } else {
16675                                 lna1_gain_db = lna1G_gain_db;
16676                                 lna2_gain_db = lna2G_gain_db;
16677                                 rfseq_init_gain = rfseqG_init_gain;
16678                                 init_gaincode = initG_gaincode;
16679                                 clip1hi_gaincode = clip1hiG_gaincode;
16680                                 clip1lo_gaincode = clip1loG_gaincode;
16681                                 nbclip_th = nbclipG_th;
16682                                 w1clip_th = w1clipG_th;
16683                                 crsmin_th = crsminG_th;
16684                                 crsminl_th = crsminlG_th;
16685                                 crsminu_th = crsminuG_th;
16686                                 rssi_gain = rssi_gain_default;
16687                         }
16688                         tia_gain_db = tiaG_gain_db;
16689                         tia_gainbits = tiaG_gainbits;
16690                         clip1md_gaincode = clip1mdG_gaincode;
16691                 } else {
16692                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16693                                 lna1_gain_db = lna1A_gain_db_rev6;
16694                                 lna2_gain_db = lna2A_gain_db_rev6;
16695                                 tia_gain_db = tiaA_gain_db_rev6;
16696                                 tia_gainbits = tiaA_gainbits_rev6;
16697                                 rfseq_init_gain = rfseqA_init_gain_rev6;
16698                                 init_gaincode = initA_gaincode_rev6;
16699                                 clip1hi_gaincode = clip1hiA_gaincode_rev6;
16700                                 clip1md_gaincode = clip1mdA_gaincode_rev6;
16701                                 clip1lo_gaincode = clip1loA_gaincode_rev6;
16702                                 crsmin_th = crsminA_th_rev6;
16703                                 crsminl_th = crsminlA_th_rev6;
16704                                 if ((pi->pubpi.radiorev == 11) &&
16705                                     (CHSPEC_IS40(pi->radio_chanspec) == 0)) {
16706                                         crsminu_th = crsminuA_th_rev6_224B0;
16707                                 } else {
16708                                         crsminu_th = crsminuA_th_rev6;
16709                                 }
16710                                 nbclip_th = nbclipA_th_rev6;
16711                                 rssi_gain = rssiA_gain_rev6;
16712                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16713                                 lna1_gain_db = lna1A_gain_db_rev5;
16714                                 lna2_gain_db = lna2A_gain_db_rev5;
16715                                 tia_gain_db = tiaA_gain_db_rev5;
16716                                 tia_gainbits = tiaA_gainbits_rev5;
16717                                 rfseq_init_gain = rfseqA_init_gain_rev5;
16718                                 init_gaincode = initA_gaincode_rev5;
16719                                 clip1hi_gaincode = clip1hiA_gaincode_rev5;
16720                                 clip1md_gaincode = clip1mdA_gaincode_rev5;
16721                                 clip1lo_gaincode = clip1loA_gaincode_rev5;
16722                                 crsmin_th = crsminA_th_rev5;
16723                                 crsminl_th = crsminlA_th_rev5;
16724                                 crsminu_th = crsminuA_th_rev5;
16725                                 nbclip_th = nbclipA_th_rev5;
16726                                 rssi_gain = rssiA_gain_rev5;
16727                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16728                                 lna1_gain_db = lna1A_gain_db_rev4;
16729                                 lna2_gain_db = lna2A_gain_db_rev4;
16730                                 tia_gain_db = tiaA_gain_db_rev4;
16731                                 tia_gainbits = tiaA_gainbits_rev4;
16732                                 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
16733
16734                                         rfseq_init_gain =
16735                                             rfseqA_init_gain_rev4_elna;
16736                                         init_gaincode =
16737                                             initA_gaincode_rev4_elna;
16738                                 } else {
16739                                         rfseq_init_gain = rfseqA_init_gain_rev4;
16740                                         init_gaincode = initA_gaincode_rev4;
16741                                 }
16742                                 clip1hi_gaincode = clip1hiA_gaincode_rev4;
16743                                 clip1md_gaincode = clip1mdA_gaincode_rev4;
16744                                 clip1lo_gaincode = clip1loA_gaincode_rev4;
16745                                 crsmin_th = crsminA_th_rev4;
16746                                 crsminl_th = crsminlA_th_rev4;
16747                                 crsminu_th = crsminuA_th_rev4;
16748                                 nbclip_th = nbclipA_th_rev4;
16749                                 rssi_gain = rssi_gain_default;
16750                         } else {
16751                                 lna1_gain_db = lna1A_gain_db;
16752                                 lna2_gain_db = lna2A_gain_db;
16753                                 tia_gain_db = tiaA_gain_db;
16754                                 tia_gainbits = tiaA_gainbits;
16755                                 rfseq_init_gain = rfseqA_init_gain;
16756                                 init_gaincode = initA_gaincode;
16757                                 clip1hi_gaincode = clip1hiA_gaincode;
16758                                 clip1md_gaincode = clip1mdA_gaincode;
16759                                 clip1lo_gaincode = clip1loA_gaincode;
16760                                 crsmin_th = crsminA_th;
16761                                 crsminl_th = crsminlA_th;
16762                                 crsminu_th = crsminuA_th;
16763                                 nbclip_th = nbclipA_th;
16764                                 rssi_gain = rssi_gain_default;
16765                         }
16766                         w1clip_th = w1clipA_th;
16767                 }
16768
16769                 write_radio_reg(pi,
16770                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16771                                  RADIO_2056_RX0), 0x17);
16772                 write_radio_reg(pi,
16773                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16774                                  RADIO_2056_RX1), 0x17);
16775
16776                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
16777                                 0xf0);
16778                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
16779                                 0xf0);
16780
16781                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
16782                                 0x0);
16783                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
16784                                 0x0);
16785
16786                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
16787                                 rssi_gain);
16788                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
16789                                 rssi_gain);
16790
16791                 write_radio_reg(pi,
16792                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16793                                  RADIO_2056_RX0), 0x17);
16794                 write_radio_reg(pi,
16795                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16796                                  RADIO_2056_RX1), 0x17);
16797
16798                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
16799                                 0xFF);
16800                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
16801                                 0xFF);
16802
16803                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
16804                                          8, lna1_gain_db);
16805                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
16806                                          8, lna1_gain_db);
16807
16808                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
16809                                          8, lna2_gain_db);
16810                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
16811                                          8, lna2_gain_db);
16812
16813                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
16814                                          8, tia_gain_db);
16815                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
16816                                          8, tia_gain_db);
16817
16818                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
16819                                          8, tia_gainbits);
16820                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
16821                                          8, tia_gainbits);
16822
16823                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
16824                                          8, &lpf_gain_db);
16825                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
16826                                          8, &lpf_gain_db);
16827                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
16828                                          8, &lpf_gainbits);
16829                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
16830                                          8, &lpf_gainbits);
16831
16832                 write_phy_reg(pi, 0x20, init_gaincode);
16833                 write_phy_reg(pi, 0x2a7, init_gaincode);
16834
16835                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16836                                          pi->pubpi.phy_corenum, 0x106, 16,
16837                                          rfseq_init_gain);
16838
16839                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
16840                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
16841
16842                 write_phy_reg(pi, 0x24, clip1md_gaincode);
16843                 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
16844
16845                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
16846                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
16847
16848                 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
16849                 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
16850                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
16851
16852                 write_phy_reg(pi, 0x2b, nbclip_th);
16853                 write_phy_reg(pi, 0x41, nbclip_th);
16854
16855                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
16856                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
16857
16858                 write_phy_reg(pi, 0x150, 0x809c);
16859
16860         } else {
16861
16862                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16863                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16864
16865                 write_phy_reg(pi, 0x2b, 0x84);
16866                 write_phy_reg(pi, 0x41, 0x84);
16867
16868                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16869                         write_phy_reg(pi, 0x6b, 0x2b);
16870                         write_phy_reg(pi, 0x6c, 0x2b);
16871                         write_phy_reg(pi, 0x6d, 0x9);
16872                         write_phy_reg(pi, 0x6e, 0x9);
16873                 }
16874
16875                 w1th = NPHY_RSSICAL_W1_TARGET - 4;
16876                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
16877                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
16878
16879                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16880                         mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
16881                         mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16882
16883                         mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16884                         mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16885                 }
16886
16887                 write_phy_reg(pi, 0x150, 0x809c);
16888
16889                 if (pi->nphy_gain_boost)
16890                         if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16891                             (CHSPEC_IS40(pi->radio_chanspec)))
16892                                 hpf_code = 4;
16893                         else
16894                                 hpf_code = 5;
16895                 else if (CHSPEC_IS40(pi->radio_chanspec))
16896                         hpf_code = 6;
16897                 else
16898                         hpf_code = 7;
16899
16900                 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16901                 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16902
16903                 for (ctr = 0; ctr < 4; ctr++) {
16904                         regval[ctr] = (hpf_code << 8) | 0x7c;
16905                 }
16906                 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16907
16908                 wlc_phy_adjust_lnagaintbl_nphy(pi);
16909
16910                 if (pi->nphy_elna_gain_config) {
16911                         regval[0] = 0;
16912                         regval[1] = 1;
16913                         regval[2] = 1;
16914                         regval[3] = 1;
16915                         wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16916                         wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16917
16918                         for (ctr = 0; ctr < 4; ctr++) {
16919                                 regval[ctr] = (hpf_code << 8) | 0x74;
16920                         }
16921                         wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16922                 }
16923
16924                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16925                         for (ctr = 0; ctr < 21; ctr++) {
16926                                 regval[ctr] = 3 * ctr;
16927                         }
16928                         wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16929                         wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16930
16931                         for (ctr = 0; ctr < 21; ctr++) {
16932                                 regval[ctr] = (u16) ctr;
16933                         }
16934                         wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16935                         wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16936                 }
16937
16938                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16939                                        rfseq_updategainu_events,
16940                                        rfseq_updategainu_dlys,
16941                                        sizeof(rfseq_updategainu_events) /
16942                                        sizeof(rfseq_updategainu_events[0]));
16943
16944                 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16945
16946                 if (CHSPEC_IS2G(pi->radio_chanspec))
16947                         mod_phy_reg(pi,
16948                                     (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16949                                     0x7f, 0x4);
16950         }
16951 }
16952
16953 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(phy_info_t *pi)
16954 {
16955         s8 lna1_gain_db[] = { 8, 13, 17, 22 };
16956         s8 lna2_gain_db[] = { -2, 7, 11, 15 };
16957         s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
16958         s8 tia_gainbits[] = {
16959                 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
16960
16961         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16962         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16963
16964         mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
16965
16966         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
16967         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
16968
16969         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
16970                                  lna1_gain_db);
16971         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
16972                                  lna1_gain_db);
16973
16974         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
16975                                  lna2_gain_db);
16976         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
16977                                  lna2_gain_db);
16978
16979         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
16980                                  tia_gain_db);
16981         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
16982                                  tia_gain_db);
16983
16984         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
16985                                  tia_gainbits);
16986         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
16987                                  tia_gainbits);
16988
16989         write_phy_reg(pi, 0x37, 0x74);
16990         write_phy_reg(pi, 0x2ad, 0x74);
16991         write_phy_reg(pi, 0x38, 0x18);
16992         write_phy_reg(pi, 0x2ae, 0x18);
16993
16994         write_phy_reg(pi, 0x2b, 0xe8);
16995         write_phy_reg(pi, 0x41, 0xe8);
16996
16997         if (CHSPEC_IS20(pi->radio_chanspec)) {
16998
16999                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
17000                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
17001         } else {
17002
17003                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
17004                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
17005         }
17006 }
17007
17008 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(phy_info_t *pi)
17009 {
17010         u16 currband;
17011         s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
17012         s8 *lna1_gain_db = NULL;
17013         s8 *lna1_gain_db_2 = NULL;
17014         s8 *lna2_gain_db = NULL;
17015         s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
17016         s8 *tia_gain_db;
17017         s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
17018         s8 *tia_gainbits;
17019         u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
17020         u16 *rfseq_init_gain;
17021         u16 init_gaincode;
17022         u16 clip1hi_gaincode;
17023         u16 clip1md_gaincode = 0;
17024         u16 clip1md_gaincode_B;
17025         u16 clip1lo_gaincode;
17026         u16 clip1lo_gaincode_B;
17027         u8 crsminl_th = 0;
17028         u8 crsminu_th;
17029         u16 nbclip_th = 0;
17030         u8 w1clip_th;
17031         u16 freq;
17032         s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
17033         u8 chg_nbclip_th = 0;
17034
17035         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
17036         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
17037
17038         currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
17039         if (currband == 0) {
17040
17041                 lna1_gain_db = lna1G_gain_db_rev7;
17042
17043                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
17044                                          lna1_gain_db);
17045                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
17046                                          lna1_gain_db);
17047
17048                 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
17049
17050                 if (CHSPEC_IS40(pi->radio_chanspec)) {
17051                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
17052                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
17053                 }
17054
17055                 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
17056
17057                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17058                         mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
17059                         mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
17060                 }
17061         } else {
17062
17063                 init_gaincode = 0x9e;
17064                 clip1hi_gaincode = 0x9e;
17065                 clip1md_gaincode_B = 0x24;
17066                 clip1lo_gaincode = 0x8a;
17067                 clip1lo_gaincode_B = 8;
17068                 rfseq_init_gain = rfseqA_init_gain_rev7;
17069
17070                 tia_gain_db = tiaA_gain_db_rev7;
17071                 tia_gainbits = tiaA_gainbits_rev7;
17072
17073                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
17074                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17075
17076                         w1clip_th = 25;
17077                         clip1md_gaincode = 0x82;
17078
17079                         if ((freq <= 5080) || (freq == 5825)) {
17080
17081                                 s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
17082                                 s8 lna1A_gain_db_2_rev7[] = {
17083                                         11, 17, 22, 25 };
17084                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
17085
17086                                 crsminu_th = 0x3e;
17087                                 lna1_gain_db = lna1A_gain_db_rev7;
17088                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17089                                 lna2_gain_db = lna2A_gain_db_rev7;
17090                         } else if ((freq >= 5500) && (freq <= 5700)) {
17091
17092                                 s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
17093                                 s8 lna1A_gain_db_2_rev7[] = {
17094                                         12, 18, 22, 26 };
17095                                 s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
17096
17097                                 crsminu_th = 0x45;
17098                                 clip1md_gaincode_B = 0x14;
17099                                 nbclip_th = 0xff;
17100                                 chg_nbclip_th = 1;
17101                                 lna1_gain_db = lna1A_gain_db_rev7;
17102                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17103                                 lna2_gain_db = lna2A_gain_db_rev7;
17104                         } else {
17105
17106                                 s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
17107                                 s8 lna1A_gain_db_2_rev7[] = {
17108                                         12, 18, 22, 26 };
17109                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
17110
17111                                 crsminu_th = 0x41;
17112                                 lna1_gain_db = lna1A_gain_db_rev7;
17113                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17114                                 lna2_gain_db = lna2A_gain_db_rev7;
17115                         }
17116
17117                         if (freq <= 4920) {
17118                                 nvar_baseline_offset0 = 5;
17119                                 nvar_baseline_offset1 = 5;
17120                         } else if ((freq > 4920) && (freq <= 5320)) {
17121                                 nvar_baseline_offset0 = 3;
17122                                 nvar_baseline_offset1 = 5;
17123                         } else if ((freq > 5320) && (freq <= 5700)) {
17124                                 nvar_baseline_offset0 = 3;
17125                                 nvar_baseline_offset1 = 2;
17126                         } else {
17127                                 nvar_baseline_offset0 = 4;
17128                                 nvar_baseline_offset1 = 0;
17129                         }
17130                 } else {
17131
17132                         crsminu_th = 0x3a;
17133                         crsminl_th = 0x3a;
17134                         w1clip_th = 20;
17135
17136                         if ((freq >= 4920) && (freq <= 5320)) {
17137                                 nvar_baseline_offset0 = 4;
17138                                 nvar_baseline_offset1 = 5;
17139                         } else if ((freq > 5320) && (freq <= 5550)) {
17140                                 nvar_baseline_offset0 = 4;
17141                                 nvar_baseline_offset1 = 2;
17142                         } else {
17143                                 nvar_baseline_offset0 = 5;
17144                                 nvar_baseline_offset1 = 3;
17145                         }
17146                 }
17147
17148                 write_phy_reg(pi, 0x20, init_gaincode);
17149                 write_phy_reg(pi, 0x2a7, init_gaincode);
17150
17151                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
17152                                          pi->pubpi.phy_corenum, 0x106, 16,
17153                                          rfseq_init_gain);
17154
17155                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
17156                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
17157
17158                 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
17159                 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
17160
17161                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
17162                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
17163                 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
17164                 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
17165
17166                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
17167                                          tia_gain_db);
17168                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
17169                                          tia_gain_db);
17170
17171                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
17172                                          tia_gainbits);
17173                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
17174                                          tia_gainbits);
17175
17176                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
17177
17178                 if (chg_nbclip_th == 1) {
17179                         write_phy_reg(pi, 0x2b, nbclip_th);
17180                         write_phy_reg(pi, 0x41, nbclip_th);
17181                 }
17182
17183                 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
17184                 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
17185
17186                 mod_phy_reg(pi, 0x2e4,
17187                             (0x3f << 0), (nvar_baseline_offset0 << 0));
17188
17189                 mod_phy_reg(pi, 0x2e4,
17190                             (0x3f << 6), (nvar_baseline_offset1 << 6));
17191
17192                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17193
17194                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
17195                                                  lna1_gain_db);
17196                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
17197                                                  lna1_gain_db_2);
17198
17199                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
17200                                                  8, lna2_gain_db);
17201                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
17202                                                  8, lna2_gain_db);
17203
17204                         write_phy_reg(pi, 0x24, clip1md_gaincode);
17205                         write_phy_reg(pi, 0x2ab, clip1md_gaincode);
17206                 } else {
17207                         mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
17208                 }
17209
17210         }
17211
17212 }
17213
17214 static void wlc_phy_adjust_lnagaintbl_nphy(phy_info_t *pi)
17215 {
17216         uint core;
17217         int ctr;
17218         s16 gain_delta[2];
17219         u8 curr_channel;
17220         u16 minmax_gain[2];
17221         u16 regval[4];
17222
17223         if (pi->phyhang_avoid)
17224                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17225
17226         if (pi->nphy_gain_boost) {
17227                 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
17228
17229                         gain_delta[0] = 6;
17230                         gain_delta[1] = 6;
17231                 } else {
17232
17233                         curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
17234                         gain_delta[0] =
17235                             (s16)
17236                             PHY_HW_ROUND(((nphy_lnagain_est0[0] *
17237                                            curr_channel) +
17238                                           nphy_lnagain_est0[1]), 13);
17239                         gain_delta[1] =
17240                             (s16)
17241                             PHY_HW_ROUND(((nphy_lnagain_est1[0] *
17242                                            curr_channel) +
17243                                           nphy_lnagain_est1[1]), 13);
17244                 }
17245         } else {
17246
17247                 gain_delta[0] = 0;
17248                 gain_delta[1] = 0;
17249         }
17250
17251         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17252                 if (pi->nphy_elna_gain_config) {
17253
17254                         regval[0] = nphy_def_lnagains[2] + gain_delta[core];
17255                         regval[1] = nphy_def_lnagains[3] + gain_delta[core];
17256                         regval[2] = nphy_def_lnagains[3] + gain_delta[core];
17257                         regval[3] = nphy_def_lnagains[3] + gain_delta[core];
17258                 } else {
17259                         for (ctr = 0; ctr < 4; ctr++) {
17260                                 regval[ctr] =
17261                                     nphy_def_lnagains[ctr] + gain_delta[core];
17262                         }
17263                 }
17264                 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
17265
17266                 minmax_gain[core] =
17267                     (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
17268         }
17269
17270         mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
17271         mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
17272
17273         if (pi->phyhang_avoid)
17274                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17275 }
17276
17277 void wlc_phy_switch_radio_nphy(phy_info_t *pi, bool on)
17278 {
17279         if (on) {
17280                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17281                         if (!pi->radio_is_on) {
17282                                 wlc_phy_radio_preinit_205x(pi);
17283                                 wlc_phy_radio_init_2057(pi);
17284                                 wlc_phy_radio_postinit_2057(pi);
17285                         }
17286
17287                         wlc_phy_chanspec_set((wlc_phy_t *) pi,
17288                                              pi->radio_chanspec);
17289                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17290                         wlc_phy_radio_preinit_205x(pi);
17291                         wlc_phy_radio_init_2056(pi);
17292                         wlc_phy_radio_postinit_2056(pi);
17293
17294                         wlc_phy_chanspec_set((wlc_phy_t *) pi,
17295                                              pi->radio_chanspec);
17296                 } else {
17297                         wlc_phy_radio_preinit_2055(pi);
17298                         wlc_phy_radio_init_2055(pi);
17299                         wlc_phy_radio_postinit_2055(pi);
17300                 }
17301
17302                 pi->radio_is_on = true;
17303
17304         } else {
17305
17306                 if (NREV_GE(pi->pubpi.phy_rev, 3)
17307                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
17308                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17309                         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
17310
17311                         write_radio_reg(pi,
17312                                         RADIO_2056_TX_PADA_BOOST_TUNE |
17313                                         RADIO_2056_TX0, 0);
17314                         write_radio_reg(pi,
17315                                         RADIO_2056_TX_PADG_BOOST_TUNE |
17316                                         RADIO_2056_TX0, 0);
17317                         write_radio_reg(pi,
17318                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
17319                                         RADIO_2056_TX0, 0);
17320                         write_radio_reg(pi,
17321                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
17322                                         RADIO_2056_TX0, 0);
17323                         mod_radio_reg(pi,
17324                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
17325                                       RADIO_2056_TX0, 0xf0, 0);
17326                         write_radio_reg(pi,
17327                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
17328                                         RADIO_2056_TX0, 0);
17329
17330                         write_radio_reg(pi,
17331                                         RADIO_2056_TX_PADA_BOOST_TUNE |
17332                                         RADIO_2056_TX1, 0);
17333                         write_radio_reg(pi,
17334                                         RADIO_2056_TX_PADG_BOOST_TUNE |
17335                                         RADIO_2056_TX1, 0);
17336                         write_radio_reg(pi,
17337                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
17338                                         RADIO_2056_TX1, 0);
17339                         write_radio_reg(pi,
17340                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
17341                                         RADIO_2056_TX1, 0);
17342                         mod_radio_reg(pi,
17343                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
17344                                       RADIO_2056_TX1, 0xf0, 0);
17345                         write_radio_reg(pi,
17346                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
17347                                         RADIO_2056_TX1, 0);
17348
17349                         pi->radio_is_on = false;
17350                 }
17351
17352                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
17353                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17354                         pi->radio_is_on = false;
17355                 }
17356
17357         }
17358 }
17359
17360 static void wlc_phy_radio_preinit_2055(phy_info_t *pi)
17361 {
17362
17363         and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
17364         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
17365
17366         or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
17367 }
17368
17369 static void wlc_phy_radio_init_2055(phy_info_t *pi)
17370 {
17371         wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
17372 }
17373
17374 static void wlc_phy_radio_postinit_2055(phy_info_t *pi)
17375 {
17376
17377         and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
17378                       ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
17379
17380         if (((pi->sh->sromrev >= 4)
17381              && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
17382             || ((pi->sh->sromrev < 4))) {
17383                 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
17384                 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
17385         }
17386
17387         mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
17388         write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
17389
17390         and_radio_reg(pi, RADIO_2055_CAL_MISC,
17391                       ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
17392
17393         or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
17394
17395         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
17396
17397         udelay(1000);
17398
17399         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
17400
17401         SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
17402                    RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
17403
17404         if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
17405                  RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
17406                  "HW error: radio calibration1\n"))
17407                 return;
17408
17409         and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
17410                       ~(RADIO_2055_CAL_LPO_ENABLE));
17411
17412         wlc_phy_chanspec_set((wlc_phy_t *) pi, pi->radio_chanspec);
17413
17414         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
17415         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
17416
17417         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
17418         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
17419
17420         mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
17421                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
17422         mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
17423                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
17424         if (pi->nphy_gain_boost) {
17425                 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
17426                               ~(RADIO_2055_GAINBST_DISABLE));
17427                 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
17428                               ~(RADIO_2055_GAINBST_DISABLE));
17429         } else {
17430                 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
17431                              RADIO_2055_GAINBST_DISABLE);
17432                 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
17433                              RADIO_2055_GAINBST_DISABLE);
17434         }
17435
17436         udelay(2);
17437 }
17438
17439 static void wlc_phy_radio_preinit_205x(phy_info_t *pi)
17440 {
17441
17442         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17443         and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
17444
17445         or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
17446         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
17447
17448 }
17449
17450 static void wlc_phy_radio_init_2056(phy_info_t *pi)
17451 {
17452         radio_regs_t *regs_SYN_2056_ptr = NULL;
17453         radio_regs_t *regs_TX_2056_ptr = NULL;
17454         radio_regs_t *regs_RX_2056_ptr = NULL;
17455
17456         if (NREV_IS(pi->pubpi.phy_rev, 3)) {
17457                 regs_SYN_2056_ptr = regs_SYN_2056;
17458                 regs_TX_2056_ptr = regs_TX_2056;
17459                 regs_RX_2056_ptr = regs_RX_2056;
17460         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17461                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
17462                 regs_TX_2056_ptr = regs_TX_2056_A1;
17463                 regs_RX_2056_ptr = regs_RX_2056_A1;
17464         } else {
17465                 switch (pi->pubpi.radiorev) {
17466                 case 5:
17467                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
17468                         regs_TX_2056_ptr = regs_TX_2056_rev5;
17469                         regs_RX_2056_ptr = regs_RX_2056_rev5;
17470                         break;
17471
17472                 case 6:
17473                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
17474                         regs_TX_2056_ptr = regs_TX_2056_rev6;
17475                         regs_RX_2056_ptr = regs_RX_2056_rev6;
17476                         break;
17477
17478                 case 7:
17479                 case 9:
17480                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
17481                         regs_TX_2056_ptr = regs_TX_2056_rev7;
17482                         regs_RX_2056_ptr = regs_RX_2056_rev7;
17483                         break;
17484
17485                 case 8:
17486                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
17487                         regs_TX_2056_ptr = regs_TX_2056_rev8;
17488                         regs_RX_2056_ptr = regs_RX_2056_rev8;
17489                         break;
17490
17491                 case 11:
17492                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
17493                         regs_TX_2056_ptr = regs_TX_2056_rev11;
17494                         regs_RX_2056_ptr = regs_RX_2056_rev11;
17495                         break;
17496
17497                 default:
17498                         break;
17499                 }
17500         }
17501
17502         wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
17503
17504         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
17505
17506         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
17507
17508         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
17509
17510         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
17511 }
17512
17513 static void wlc_phy_radio_postinit_2056(phy_info_t *pi)
17514 {
17515         mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
17516
17517         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
17518         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
17519         udelay(1000);
17520         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
17521
17522         if ((pi->sh->boardflags2 & BFL2_LEGACY)
17523             || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN)) {
17524
17525                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
17526         } else {
17527
17528                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
17529         }
17530
17531         mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
17532
17533         if (pi->phy_init_por) {
17534                 wlc_phy_radio205x_rcal(pi);
17535         }
17536 }
17537
17538 static void wlc_phy_radio_init_2057(phy_info_t *pi)
17539 {
17540         radio_20xx_regs_t *regs_2057_ptr = NULL;
17541
17542         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
17543
17544                 regs_2057_ptr = regs_2057_rev4;
17545         } else if (NREV_IS(pi->pubpi.phy_rev, 8)
17546                    || NREV_IS(pi->pubpi.phy_rev, 9)) {
17547                 switch (pi->pubpi.radiorev) {
17548                 case 5:
17549
17550                         if (pi->pubpi.radiover == 0x0) {
17551
17552                                 regs_2057_ptr = regs_2057_rev5;
17553
17554                         } else if (pi->pubpi.radiover == 0x1) {
17555
17556                                 regs_2057_ptr = regs_2057_rev5v1;
17557                         } else {
17558                                 break;
17559                         }
17560
17561                 case 7:
17562
17563                         regs_2057_ptr = regs_2057_rev7;
17564                         break;
17565
17566                 case 8:
17567
17568                         regs_2057_ptr = regs_2057_rev8;
17569                         break;
17570
17571                 default:
17572                         break;
17573                 }
17574         }
17575
17576         wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
17577 }
17578
17579 static void wlc_phy_radio_postinit_2057(phy_info_t *pi)
17580 {
17581
17582         mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
17583
17584         if (pi->sh->chip == !BCM6362_CHIP_ID) {
17585
17586                 mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x2, 0x2);
17587         }
17588
17589         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
17590         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
17591         mdelay(2);
17592         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
17593         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
17594
17595         if (pi->phy_init_por) {
17596                 wlc_phy_radio205x_rcal(pi);
17597                 wlc_phy_radio2057_rccal(pi);
17598         }
17599
17600         mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
17601 }
17602
17603 static bool
17604 wlc_phy_chan2freq_nphy(phy_info_t *pi, uint channel, int *f,
17605                        chan_info_nphy_radio2057_t **t0,
17606                        chan_info_nphy_radio205x_t **t1,
17607                        chan_info_nphy_radio2057_rev5_t **t2,
17608                        chan_info_nphy_2055_t **t3)
17609 {
17610         uint i;
17611         chan_info_nphy_radio2057_t *chan_info_tbl_p_0 = NULL;
17612         chan_info_nphy_radio205x_t *chan_info_tbl_p_1 = NULL;
17613         chan_info_nphy_radio2057_rev5_t *chan_info_tbl_p_2 = NULL;
17614         u32 tbl_len = 0;
17615
17616         int freq = 0;
17617
17618         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17619
17620                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
17621
17622                         chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
17623                         tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
17624
17625                 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
17626                            || NREV_IS(pi->pubpi.phy_rev, 9)) {
17627                         switch (pi->pubpi.radiorev) {
17628
17629                         case 5:
17630
17631                                 if (pi->pubpi.radiover == 0x0) {
17632
17633                                         chan_info_tbl_p_2 =
17634                                             chan_info_nphyrev8_2057_rev5;
17635                                         tbl_len =
17636                                             ARRAY_SIZE
17637                                             (chan_info_nphyrev8_2057_rev5);
17638
17639                                 } else if (pi->pubpi.radiover == 0x1) {
17640
17641                                         chan_info_tbl_p_2 =
17642                                             chan_info_nphyrev9_2057_rev5v1;
17643                                         tbl_len =
17644                                             ARRAY_SIZE
17645                                             (chan_info_nphyrev9_2057_rev5v1);
17646
17647                                 }
17648                                 break;
17649
17650                         case 7:
17651                                 chan_info_tbl_p_0 =
17652                                     chan_info_nphyrev8_2057_rev7;
17653                                 tbl_len =
17654                                     ARRAY_SIZE(chan_info_nphyrev8_2057_rev7);
17655                                 break;
17656
17657                         case 8:
17658                                 chan_info_tbl_p_0 =
17659                                     chan_info_nphyrev8_2057_rev8;
17660                                 tbl_len =
17661                                     ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
17662                                 break;
17663
17664                         default:
17665                                 if (NORADIO_ENAB(pi->pubpi)) {
17666                                         goto fail;
17667                                 }
17668                                 break;
17669                         }
17670                 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
17671
17672                         chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
17673                         tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
17674                 } else {
17675                         goto fail;
17676                 }
17677
17678                 for (i = 0; i < tbl_len; i++) {
17679                         if (pi->pubpi.radiorev == 5) {
17680
17681                                 if (chan_info_tbl_p_2[i].chan == channel)
17682                                         break;
17683                         } else {
17684
17685                                 if (chan_info_tbl_p_0[i].chan == channel)
17686                                         break;
17687                         }
17688                 }
17689
17690                 if (i >= tbl_len) {
17691                         goto fail;
17692                 }
17693                 if (pi->pubpi.radiorev == 5) {
17694                         *t2 = &chan_info_tbl_p_2[i];
17695                         freq = chan_info_tbl_p_2[i].freq;
17696                 } else {
17697                         *t0 = &chan_info_tbl_p_0[i];
17698                         freq = chan_info_tbl_p_0[i].freq;
17699                 }
17700
17701         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17702                 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
17703                         chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
17704                         tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
17705                 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17706                         chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
17707                         tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
17708                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
17709                            || NREV_IS(pi->pubpi.phy_rev, 6)) {
17710                         switch (pi->pubpi.radiorev) {
17711                         case 5:
17712                                 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
17713                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
17714                                 break;
17715                         case 6:
17716                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
17717                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
17718                                 break;
17719                         case 7:
17720                         case 9:
17721                                 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
17722                                 tbl_len =
17723                                     ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
17724                                 break;
17725                         case 8:
17726                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
17727                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
17728                                 break;
17729                         case 11:
17730                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
17731                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v11);
17732                                 break;
17733                         default:
17734                                 if (NORADIO_ENAB(pi->pubpi)) {
17735                                         goto fail;
17736                                 }
17737                                 break;
17738                         }
17739                 }
17740
17741                 for (i = 0; i < tbl_len; i++) {
17742                         if (chan_info_tbl_p_1[i].chan == channel)
17743                                 break;
17744                 }
17745
17746                 if (i >= tbl_len) {
17747                         goto fail;
17748                 }
17749                 *t1 = &chan_info_tbl_p_1[i];
17750                 freq = chan_info_tbl_p_1[i].freq;
17751
17752         } else {
17753                 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
17754                         if (chan_info_nphy_2055[i].chan == channel)
17755                                 break;
17756
17757                 if (i >= ARRAY_SIZE(chan_info_nphy_2055)) {
17758                         goto fail;
17759                 }
17760                 *t3 = &chan_info_nphy_2055[i];
17761                 freq = chan_info_nphy_2055[i].freq;
17762         }
17763
17764         *f = freq;
17765         return true;
17766
17767  fail:
17768         *f = WL_CHAN_FREQ_RANGE_2G;
17769         return false;
17770 }
17771
17772 u8 wlc_phy_get_chan_freq_range_nphy(phy_info_t *pi, uint channel)
17773 {
17774         int freq;
17775         chan_info_nphy_radio2057_t *t0 = NULL;
17776         chan_info_nphy_radio205x_t *t1 = NULL;
17777         chan_info_nphy_radio2057_rev5_t *t2 = NULL;
17778         chan_info_nphy_2055_t *t3 = NULL;
17779
17780         if (NORADIO_ENAB(pi->pubpi))
17781                 return WL_CHAN_FREQ_RANGE_2G;
17782
17783         if (channel == 0)
17784                 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
17785
17786         wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
17787
17788         if (CHSPEC_IS2G(pi->radio_chanspec))
17789                 return WL_CHAN_FREQ_RANGE_2G;
17790
17791         if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN)) {
17792                 return WL_CHAN_FREQ_RANGE_5GL;
17793         } else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN)) {
17794                 return WL_CHAN_FREQ_RANGE_5GM;
17795         } else {
17796                 return WL_CHAN_FREQ_RANGE_5GH;
17797         }
17798 }
17799
17800 static void
17801 wlc_phy_chanspec_radio2055_setup(phy_info_t *pi, chan_info_nphy_2055_t *ci)
17802 {
17803
17804         write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
17805         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
17806         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
17807         write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
17808
17809         WLC_PHY_WAR_PR51571(pi);
17810
17811         write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
17812         write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
17813         write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
17814         write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
17815
17816         WLC_PHY_WAR_PR51571(pi);
17817
17818         write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
17819         write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
17820         write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
17821         write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
17822
17823         WLC_PHY_WAR_PR51571(pi);
17824
17825         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
17826                         ci->RF_core1_lgbuf_a_tune);
17827         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
17828                         ci->RF_core1_lgbuf_g_tune);
17829         write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
17830         write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
17831                         ci->RF_core1_tx_pga_pad_tn);
17832
17833         WLC_PHY_WAR_PR51571(pi);
17834
17835         write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
17836                         ci->RF_core1_tx_mx_bgtrim);
17837         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
17838                         ci->RF_core2_lgbuf_a_tune);
17839         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
17840                         ci->RF_core2_lgbuf_g_tune);
17841         write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
17842
17843         WLC_PHY_WAR_PR51571(pi);
17844
17845         write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
17846                         ci->RF_core2_tx_pga_pad_tn);
17847         write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
17848                         ci->RF_core2_tx_mx_bgtrim);
17849
17850         udelay(50);
17851
17852         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
17853         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
17854
17855         WLC_PHY_WAR_PR51571(pi);
17856
17857         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
17858
17859         udelay(300);
17860 }
17861
17862 static void
17863 wlc_phy_chanspec_radio2056_setup(phy_info_t *pi,
17864                                  const chan_info_nphy_radio205x_t *ci)
17865 {
17866         radio_regs_t *regs_SYN_2056_ptr = NULL;
17867
17868         write_radio_reg(pi,
17869                         RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
17870                         ci->RF_SYN_pll_vcocal1);
17871         write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
17872                         ci->RF_SYN_pll_vcocal2);
17873         write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
17874                         ci->RF_SYN_pll_refdiv);
17875         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
17876                         ci->RF_SYN_pll_mmd2);
17877         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
17878                         ci->RF_SYN_pll_mmd1);
17879         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
17880                         ci->RF_SYN_pll_loopfilter1);
17881         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
17882                         ci->RF_SYN_pll_loopfilter2);
17883         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
17884                         ci->RF_SYN_pll_loopfilter3);
17885         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
17886                         ci->RF_SYN_pll_loopfilter4);
17887         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
17888                         ci->RF_SYN_pll_loopfilter5);
17889         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
17890                         ci->RF_SYN_reserved_addr27);
17891         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
17892                         ci->RF_SYN_reserved_addr28);
17893         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
17894                         ci->RF_SYN_reserved_addr29);
17895         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
17896                         ci->RF_SYN_logen_VCOBUF1);
17897         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
17898                         ci->RF_SYN_logen_MIXER2);
17899         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
17900                         ci->RF_SYN_logen_BUF3);
17901         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
17902                         ci->RF_SYN_logen_BUF4);
17903
17904         write_radio_reg(pi,
17905                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
17906                         ci->RF_RX0_lnaa_tune);
17907         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
17908                         ci->RF_RX0_lnag_tune);
17909         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
17910                         ci->RF_TX0_intpaa_boost_tune);
17911         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
17912                         ci->RF_TX0_intpag_boost_tune);
17913         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
17914                         ci->RF_TX0_pada_boost_tune);
17915         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
17916                         ci->RF_TX0_padg_boost_tune);
17917         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
17918                         ci->RF_TX0_pgaa_boost_tune);
17919         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
17920                         ci->RF_TX0_pgag_boost_tune);
17921         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
17922                         ci->RF_TX0_mixa_boost_tune);
17923         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
17924                         ci->RF_TX0_mixg_boost_tune);
17925
17926         write_radio_reg(pi,
17927                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
17928                         ci->RF_RX1_lnaa_tune);
17929         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
17930                         ci->RF_RX1_lnag_tune);
17931         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
17932                         ci->RF_TX1_intpaa_boost_tune);
17933         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
17934                         ci->RF_TX1_intpag_boost_tune);
17935         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
17936                         ci->RF_TX1_pada_boost_tune);
17937         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
17938                         ci->RF_TX1_padg_boost_tune);
17939         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
17940                         ci->RF_TX1_pgaa_boost_tune);
17941         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
17942                         ci->RF_TX1_pgag_boost_tune);
17943         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
17944                         ci->RF_TX1_mixa_boost_tune);
17945         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
17946                         ci->RF_TX1_mixg_boost_tune);
17947
17948         if (NREV_IS(pi->pubpi.phy_rev, 3))
17949                 regs_SYN_2056_ptr = regs_SYN_2056;
17950         else if (NREV_IS(pi->pubpi.phy_rev, 4))
17951                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
17952         else {
17953                 switch (pi->pubpi.radiorev) {
17954                 case 5:
17955                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
17956                         break;
17957                 case 6:
17958                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
17959                         break;
17960                 case 7:
17961                 case 9:
17962                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
17963                         break;
17964                 case 8:
17965                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
17966                         break;
17967                 case 11:
17968                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
17969                         break;
17970                 }
17971         }
17972         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17973                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
17974                                 RADIO_2056_SYN,
17975                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
17976         } else {
17977                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
17978                                 RADIO_2056_SYN,
17979                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
17980         }
17981
17982         if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
17983                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17984                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
17985                                         RADIO_2056_SYN, 0x1f);
17986                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
17987                                         RADIO_2056_SYN, 0x1f);
17988
17989                         if ((pi->sh->chip == BCM4716_CHIP_ID) ||
17990                             (pi->sh->chip == BCM47162_CHIP_ID)) {
17991
17992                                 write_radio_reg(pi,
17993                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
17994                                                 RADIO_2056_SYN, 0x14);
17995                                 write_radio_reg(pi,
17996                                                 RADIO_2056_SYN_PLL_CP2 |
17997                                                 RADIO_2056_SYN, 0x00);
17998                         } else {
17999                                 write_radio_reg(pi,
18000                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
18001                                                 RADIO_2056_SYN, 0xb);
18002                                 write_radio_reg(pi,
18003                                                 RADIO_2056_SYN_PLL_CP2 |
18004                                                 RADIO_2056_SYN, 0x14);
18005                         }
18006                 }
18007         }
18008
18009         if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
18010             (CHSPEC_IS2G(pi->radio_chanspec))) {
18011                 write_radio_reg(pi,
18012                                 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
18013                                 0x1f);
18014                 write_radio_reg(pi,
18015                                 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
18016                                 0x1f);
18017                 write_radio_reg(pi,
18018                                 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
18019                                 0xb);
18020                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
18021                                 0x20);
18022         }
18023
18024         if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
18025                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18026                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
18027                                         RADIO_2056_SYN, 0x1f);
18028                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
18029                                         RADIO_2056_SYN, 0x1f);
18030                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
18031                                         RADIO_2056_SYN, 0x5);
18032                         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
18033                                         RADIO_2056_SYN, 0xc);
18034                 }
18035         }
18036
18037         if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
18038                 u16 pag_boost_tune;
18039                 u16 padg_boost_tune;
18040                 u16 pgag_boost_tune;
18041                 u16 mixg_boost_tune;
18042                 u16 bias, cascbias;
18043                 uint core;
18044
18045                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18046
18047                         if (NREV_GE(pi->pubpi.phy_rev, 5)) {
18048
18049                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18050                                                  PADG_IDAC, 0xcc);
18051
18052                                 if ((pi->sh->chip == BCM4716_CHIP_ID) ||
18053                                     (pi->sh->chip ==
18054                                      BCM47162_CHIP_ID)) {
18055                                         bias = 0x40;
18056                                         cascbias = 0x45;
18057                                         pag_boost_tune = 0x5;
18058                                         pgag_boost_tune = 0x33;
18059                                         padg_boost_tune = 0x77;
18060                                         mixg_boost_tune = 0x55;
18061                                 } else {
18062                                         bias = 0x25;
18063                                         cascbias = 0x20;
18064
18065                                         if ((pi->sh->chip ==
18066                                              BCM43224_CHIP_ID)
18067                                             || (pi->sh->chip ==
18068                                                 BCM43225_CHIP_ID)
18069                                             || (pi->sh->chip ==
18070                                                 BCM43421_CHIP_ID)) {
18071                                                 if (pi->sh->chippkg ==
18072                                                     BCM43224_FAB_SMIC) {
18073                                                         bias = 0x2a;
18074                                                         cascbias = 0x38;
18075                                                 }
18076                                         }
18077
18078                                         pag_boost_tune = 0x4;
18079                                         pgag_boost_tune = 0x03;
18080                                         padg_boost_tune = 0x77;
18081                                         mixg_boost_tune = 0x65;
18082                                 }
18083
18084                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18085                                                  INTPAG_IMAIN_STAT, bias);
18086                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18087                                                  INTPAG_IAUX_STAT, bias);
18088                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18089                                                  INTPAG_CASCBIAS, cascbias);
18090
18091                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18092                                                  INTPAG_BOOST_TUNE,
18093                                                  pag_boost_tune);
18094                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18095                                                  PGAG_BOOST_TUNE,
18096                                                  pgag_boost_tune);
18097                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18098                                                  PADG_BOOST_TUNE,
18099                                                  padg_boost_tune);
18100                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18101                                                  MIXG_BOOST_TUNE,
18102                                                  mixg_boost_tune);
18103                         } else {
18104
18105                                 bias = IS40MHZ(pi) ? 0x40 : 0x20;
18106
18107                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18108                                                  INTPAG_IMAIN_STAT, bias);
18109                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18110                                                  INTPAG_IAUX_STAT, bias);
18111                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18112                                                  INTPAG_CASCBIAS, 0x30);
18113                         }
18114                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
18115                                          0xee);
18116                 }
18117         }
18118
18119         if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
18120             && CHSPEC_IS5G(pi->radio_chanspec)) {
18121                 u16 paa_boost_tune;
18122                 u16 pada_boost_tune;
18123                 u16 pgaa_boost_tune;
18124                 u16 mixa_boost_tune;
18125                 u16 freq, pabias, cascbias;
18126                 uint core;
18127
18128                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
18129
18130                 if (freq < 5150) {
18131
18132                         paa_boost_tune = 0xa;
18133                         pada_boost_tune = 0x77;
18134                         pgaa_boost_tune = 0xf;
18135                         mixa_boost_tune = 0xf;
18136                 } else if (freq < 5340) {
18137
18138                         paa_boost_tune = 0x8;
18139                         pada_boost_tune = 0x77;
18140                         pgaa_boost_tune = 0xfb;
18141                         mixa_boost_tune = 0xf;
18142                 } else if (freq < 5650) {
18143
18144                         paa_boost_tune = 0x0;
18145                         pada_boost_tune = 0x77;
18146                         pgaa_boost_tune = 0xb;
18147                         mixa_boost_tune = 0xf;
18148                 } else {
18149
18150                         paa_boost_tune = 0x0;
18151                         pada_boost_tune = 0x77;
18152                         if (freq != 5825) {
18153                                 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
18154                         } else {
18155                                 pgaa_boost_tune = 6;
18156                         }
18157                         mixa_boost_tune = 0xf;
18158                 }
18159
18160                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18161                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18162                                          INTPAA_BOOST_TUNE, paa_boost_tune);
18163                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18164                                          PADA_BOOST_TUNE, pada_boost_tune);
18165                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18166                                          PGAA_BOOST_TUNE, pgaa_boost_tune);
18167                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18168                                          MIXA_BOOST_TUNE, mixa_boost_tune);
18169
18170                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18171                                          TXSPARE1, 0x30);
18172                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18173                                          PA_SPARE2, 0xee);
18174
18175                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18176                                          PADA_CASCBIAS, 0x3);
18177
18178                         cascbias = 0x30;
18179
18180                         if ((pi->sh->chip == BCM43224_CHIP_ID) ||
18181                             (pi->sh->chip == BCM43225_CHIP_ID) ||
18182                             (pi->sh->chip == BCM43421_CHIP_ID)) {
18183                                 if (pi->sh->chippkg == BCM43224_FAB_SMIC) {
18184                                         cascbias = 0x35;
18185                                 }
18186                         }
18187
18188                         pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
18189
18190                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18191                                          INTPAA_IAUX_STAT, pabias);
18192                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18193                                          INTPAA_IMAIN_STAT, pabias);
18194                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18195                                          INTPAA_CASCBIAS, cascbias);
18196                 }
18197         }
18198
18199         udelay(50);
18200
18201         wlc_phy_radio205x_vcocal_nphy(pi);
18202 }
18203
18204 void wlc_phy_radio205x_vcocal_nphy(phy_info_t *pi)
18205 {
18206         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18207                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
18208                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
18209                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
18210                               (1 << 2));
18211                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
18212         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18213                 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
18214                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
18215                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
18216                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
18217                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
18218         }
18219
18220         udelay(300);
18221 }
18222
18223 #define MAX_205x_RCAL_WAITLOOPS 10000
18224
18225 static u16 wlc_phy_radio205x_rcal(phy_info_t *pi)
18226 {
18227         u16 rcal_reg = 0;
18228         int i;
18229
18230         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18231
18232                 if (pi->pubpi.radiorev == 5) {
18233
18234                         and_phy_reg(pi, 0x342, ~(0x1 << 1));
18235
18236                         udelay(10);
18237
18238                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
18239                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
18240                                       0x1);
18241                 }
18242                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
18243
18244                 udelay(10);
18245
18246                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
18247
18248                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18249                         rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
18250                         if (rcal_reg & 0x1) {
18251                                 break;
18252                         }
18253                         udelay(100);
18254                 }
18255
18256                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
18257                          "HW error: radio calib2"))
18258                         return 0;
18259
18260                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
18261
18262                 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
18263
18264                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
18265                 if (pi->pubpi.radiorev == 5) {
18266
18267                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
18268                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
18269                                       0x0);
18270                 }
18271
18272                 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
18273
18274                         mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
18275                                       rcal_reg);
18276                         mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
18277                                       rcal_reg << 2);
18278                 }
18279
18280         } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
18281                 u16 savereg;
18282
18283                 savereg =
18284                     read_radio_reg(pi,
18285                                    RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN);
18286                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
18287                                 savereg | 0x7);
18288                 udelay(10);
18289
18290                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18291                                 0x1);
18292                 udelay(10);
18293
18294                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18295                                 0x9);
18296
18297                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18298                         rcal_reg = read_radio_reg(pi,
18299                                                   RADIO_2056_SYN_RCAL_CODE_OUT |
18300                                                   RADIO_2056_SYN);
18301                         if (rcal_reg & 0x80) {
18302                                 break;
18303                         }
18304                         udelay(100);
18305                 }
18306
18307                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
18308                          "HW error: radio calib3"))
18309                         return 0;
18310
18311                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18312                                 0x1);
18313
18314                 rcal_reg =
18315                     read_radio_reg(pi,
18316                                    RADIO_2056_SYN_RCAL_CODE_OUT |
18317                                    RADIO_2056_SYN);
18318
18319                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18320                                 0x0);
18321
18322                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
18323                                 savereg);
18324
18325                 return rcal_reg & 0x1f;
18326         }
18327         return rcal_reg & 0x3e;
18328 }
18329
18330 static void
18331 wlc_phy_chanspec_radio2057_setup(phy_info_t *pi,
18332                                  const chan_info_nphy_radio2057_t *ci,
18333                                  const chan_info_nphy_radio2057_rev5_t *ci2)
18334 {
18335         int coreNum;
18336         u16 txmix2g_tune_boost_pu = 0;
18337         u16 pad2g_tune_pus = 0;
18338
18339         if (pi->pubpi.radiorev == 5) {
18340
18341                 write_radio_reg(pi,
18342                                 RADIO_2057_VCOCAL_COUNTVAL0,
18343                                 ci2->RF_vcocal_countval0);
18344                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
18345                                 ci2->RF_vcocal_countval1);
18346                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
18347                                 ci2->RF_rfpll_refmaster_sparextalsize);
18348                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18349                                 ci2->RF_rfpll_loopfilter_r1);
18350                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18351                                 ci2->RF_rfpll_loopfilter_c2);
18352                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18353                                 ci2->RF_rfpll_loopfilter_c1);
18354                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
18355                                 ci2->RF_cp_kpd_idac);
18356                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
18357                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
18358                 write_radio_reg(pi,
18359                                 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
18360                 write_radio_reg(pi,
18361                                 RADIO_2057_LOGEN_MX2G_TUNE,
18362                                 ci2->RF_logen_mx2g_tune);
18363                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
18364                                 ci2->RF_logen_indbuf2g_tune);
18365
18366                 write_radio_reg(pi,
18367                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
18368                                 ci2->RF_txmix2g_tune_boost_pu_core0);
18369                 write_radio_reg(pi,
18370                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
18371                                 ci2->RF_pad2g_tune_pus_core0);
18372                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
18373                                 ci2->RF_lna2g_tune_core0);
18374
18375                 write_radio_reg(pi,
18376                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
18377                                 ci2->RF_txmix2g_tune_boost_pu_core1);
18378                 write_radio_reg(pi,
18379                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
18380                                 ci2->RF_pad2g_tune_pus_core1);
18381                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
18382                                 ci2->RF_lna2g_tune_core1);
18383
18384         } else {
18385
18386                 write_radio_reg(pi,
18387                                 RADIO_2057_VCOCAL_COUNTVAL0,
18388                                 ci->RF_vcocal_countval0);
18389                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
18390                                 ci->RF_vcocal_countval1);
18391                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
18392                                 ci->RF_rfpll_refmaster_sparextalsize);
18393                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18394                                 ci->RF_rfpll_loopfilter_r1);
18395                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18396                                 ci->RF_rfpll_loopfilter_c2);
18397                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18398                                 ci->RF_rfpll_loopfilter_c1);
18399                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
18400                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
18401                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
18402                 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
18403                 write_radio_reg(pi,
18404                                 RADIO_2057_LOGEN_MX2G_TUNE,
18405                                 ci->RF_logen_mx2g_tune);
18406                 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
18407                                 ci->RF_logen_mx5g_tune);
18408                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
18409                                 ci->RF_logen_indbuf2g_tune);
18410                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
18411                                 ci->RF_logen_indbuf5g_tune);
18412
18413                 write_radio_reg(pi,
18414                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
18415                                 ci->RF_txmix2g_tune_boost_pu_core0);
18416                 write_radio_reg(pi,
18417                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
18418                                 ci->RF_pad2g_tune_pus_core0);
18419                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
18420                                 ci->RF_pga_boost_tune_core0);
18421                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
18422                                 ci->RF_txmix5g_boost_tune_core0);
18423                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
18424                                 ci->RF_pad5g_tune_misc_pus_core0);
18425                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
18426                                 ci->RF_lna2g_tune_core0);
18427                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
18428                                 ci->RF_lna5g_tune_core0);
18429
18430                 write_radio_reg(pi,
18431                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
18432                                 ci->RF_txmix2g_tune_boost_pu_core1);
18433                 write_radio_reg(pi,
18434                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
18435                                 ci->RF_pad2g_tune_pus_core1);
18436                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
18437                                 ci->RF_pga_boost_tune_core1);
18438                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
18439                                 ci->RF_txmix5g_boost_tune_core1);
18440                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
18441                                 ci->RF_pad5g_tune_misc_pus_core1);
18442                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
18443                                 ci->RF_lna2g_tune_core1);
18444                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
18445                                 ci->RF_lna5g_tune_core1);
18446         }
18447
18448         if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
18449
18450                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18451                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18452                                         0x3f);
18453                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18454                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18455                                         0x8);
18456                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18457                                         0x8);
18458                 } else {
18459                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18460                                         0x1f);
18461                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18462                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18463                                         0x8);
18464                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18465                                         0x8);
18466                 }
18467         } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
18468                    (pi->pubpi.radiorev == 8)) {
18469
18470                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18471                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18472                                         0x1b);
18473                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
18474                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18475                                         0xa);
18476                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18477                                         0xa);
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
18488         }
18489
18490         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18491                 if (PHY_IPA(pi)) {
18492                         if (pi->pubpi.radiorev == 3) {
18493                                 txmix2g_tune_boost_pu = 0x6b;
18494                         }
18495
18496                         if (pi->pubpi.radiorev == 5)
18497                                 pad2g_tune_pus = 0x73;
18498
18499                 } else {
18500                         if (pi->pubpi.radiorev != 5) {
18501                                 pad2g_tune_pus = 0x3;
18502
18503                                 txmix2g_tune_boost_pu = 0x61;
18504                         }
18505                 }
18506
18507                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18508
18509                         if (txmix2g_tune_boost_pu != 0)
18510                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
18511                                                  TXMIX2G_TUNE_BOOST_PU,
18512                                                  txmix2g_tune_boost_pu);
18513
18514                         if (pad2g_tune_pus != 0)
18515                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
18516                                                  PAD2G_TUNE_PUS,
18517                                                  pad2g_tune_pus);
18518                 }
18519         }
18520
18521         udelay(50);
18522
18523         wlc_phy_radio205x_vcocal_nphy(pi);
18524 }
18525
18526 static u16 wlc_phy_radio2057_rccal(phy_info_t *pi)
18527 {
18528         u16 rccal_valid;
18529         int i;
18530         bool chip43226_6362A0;
18531
18532         chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
18533                             || (pi->pubpi.radiorev == 4)
18534                             || (pi->pubpi.radiorev == 6));
18535
18536         rccal_valid = 0;
18537         if (chip43226_6362A0) {
18538                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
18539                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
18540         } else {
18541                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
18542
18543                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
18544         }
18545         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18546         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18547
18548         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18549                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18550                 if (rccal_valid & 0x2) {
18551                         break;
18552                 }
18553                 udelay(500);
18554         }
18555
18556         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18557
18558         rccal_valid = 0;
18559         if (chip43226_6362A0) {
18560                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
18561                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
18562         } else {
18563                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
18564
18565                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
18566         }
18567         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18568         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18569
18570         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18571                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18572                 if (rccal_valid & 0x2) {
18573                         break;
18574                 }
18575                 udelay(500);
18576         }
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, 0x73);
18583
18584                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
18585                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
18586         } else {
18587                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
18588                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18589                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
18590         }
18591         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18592
18593         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18594                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18595                 if (rccal_valid & 0x2) {
18596                         break;
18597                 }
18598                 udelay(500);
18599         }
18600
18601         if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
18602                 return 0;
18603
18604         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18605
18606         return rccal_valid;
18607 }
18608
18609 static void
18610 wlc_phy_adjust_rx_analpfbw_nphy(phy_info_t *pi, u16 reduction_factr)
18611 {
18612         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18613                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18614                     CHSPEC_IS40(pi->radio_chanspec)) {
18615                         if (!pi->nphy_anarxlpf_adjusted) {
18616                                 write_radio_reg(pi,
18617                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18618                                                  RADIO_2056_RX0),
18619                                                 ((pi->nphy_rccal_value +
18620                                                   reduction_factr) | 0x80));
18621
18622                                 pi->nphy_anarxlpf_adjusted = true;
18623                         }
18624                 } else {
18625                         if (pi->nphy_anarxlpf_adjusted) {
18626                                 write_radio_reg(pi,
18627                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18628                                                  RADIO_2056_RX0),
18629                                                 (pi->nphy_rccal_value | 0x80));
18630
18631                                 pi->nphy_anarxlpf_adjusted = false;
18632                         }
18633                 }
18634         }
18635 }
18636
18637 static void
18638 wlc_phy_adjust_min_noisevar_nphy(phy_info_t *pi, int ntones, int *tone_id_buf,
18639                                  u32 *noise_var_buf)
18640 {
18641         int i;
18642         u32 offset;
18643         int tone_id;
18644         int tbllen =
18645             CHSPEC_IS40(pi->
18646                         radio_chanspec) ? NPHY_NOISEVAR_TBLLEN40 :
18647             NPHY_NOISEVAR_TBLLEN20;
18648
18649         if (pi->nphy_noisevars_adjusted) {
18650                 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
18651                         tone_id = pi->nphy_saved_noisevars.tone_id[i];
18652                         offset = (tone_id >= 0) ?
18653                             ((tone_id * 2) + 1) : (tbllen + (tone_id * 2) + 1);
18654                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18655                                                  offset, 32,
18656                                                  (void *)&pi->
18657                                                  nphy_saved_noisevars.
18658                                                  min_noise_vars[i]);
18659                 }
18660
18661                 pi->nphy_saved_noisevars.bufcount = 0;
18662                 pi->nphy_noisevars_adjusted = false;
18663         }
18664
18665         if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
18666                 pi->nphy_saved_noisevars.bufcount = 0;
18667
18668                 for (i = 0; i < ntones; i++) {
18669                         tone_id = tone_id_buf[i];
18670                         offset = (tone_id >= 0) ?
18671                             ((tone_id * 2) + 1) : (tbllen + (tone_id * 2) + 1);
18672                         pi->nphy_saved_noisevars.tone_id[i] = tone_id;
18673                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18674                                                 offset, 32,
18675                                                 &pi->nphy_saved_noisevars.
18676                                                 min_noise_vars[i]);
18677                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18678                                                  offset, 32,
18679                                                  (void *)&noise_var_buf[i]);
18680                         pi->nphy_saved_noisevars.bufcount++;
18681                 }
18682
18683                 pi->nphy_noisevars_adjusted = true;
18684         }
18685 }
18686
18687 static void wlc_phy_adjust_crsminpwr_nphy(phy_info_t *pi, u8 minpwr)
18688 {
18689         u16 regval;
18690
18691         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18692                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18693                     CHSPEC_IS40(pi->radio_chanspec)) {
18694                         if (!pi->nphy_crsminpwr_adjusted) {
18695                                 regval = read_phy_reg(pi, 0x27d);
18696                                 pi->nphy_crsminpwr[0] = regval & 0xff;
18697                                 regval &= 0xff00;
18698                                 regval |= (u16) minpwr;
18699                                 write_phy_reg(pi, 0x27d, regval);
18700
18701                                 regval = read_phy_reg(pi, 0x280);
18702                                 pi->nphy_crsminpwr[1] = regval & 0xff;
18703                                 regval &= 0xff00;
18704                                 regval |= (u16) minpwr;
18705                                 write_phy_reg(pi, 0x280, regval);
18706
18707                                 regval = read_phy_reg(pi, 0x283);
18708                                 pi->nphy_crsminpwr[2] = regval & 0xff;
18709                                 regval &= 0xff00;
18710                                 regval |= (u16) minpwr;
18711                                 write_phy_reg(pi, 0x283, regval);
18712
18713                                 pi->nphy_crsminpwr_adjusted = true;
18714                         }
18715                 } else {
18716                         if (pi->nphy_crsminpwr_adjusted) {
18717                                 regval = read_phy_reg(pi, 0x27d);
18718                                 regval &= 0xff00;
18719                                 regval |= pi->nphy_crsminpwr[0];
18720                                 write_phy_reg(pi, 0x27d, regval);
18721
18722                                 regval = read_phy_reg(pi, 0x280);
18723                                 regval &= 0xff00;
18724                                 regval |= pi->nphy_crsminpwr[1];
18725                                 write_phy_reg(pi, 0x280, regval);
18726
18727                                 regval = read_phy_reg(pi, 0x283);
18728                                 regval &= 0xff00;
18729                                 regval |= pi->nphy_crsminpwr[2];
18730                                 write_phy_reg(pi, 0x283, regval);
18731
18732                                 pi->nphy_crsminpwr_adjusted = false;
18733                         }
18734                 }
18735         }
18736 }
18737
18738 static void wlc_phy_txlpfbw_nphy(phy_info_t *pi)
18739 {
18740         u8 tx_lpf_bw = 0;
18741
18742         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18743                 if (CHSPEC_IS40(pi->radio_chanspec)) {
18744                         tx_lpf_bw = 3;
18745                 } else {
18746                         tx_lpf_bw = 1;
18747                 }
18748
18749                 if (PHY_IPA(pi)) {
18750                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18751                                 tx_lpf_bw = 5;
18752                         } else {
18753                                 tx_lpf_bw = 4;
18754                         }
18755                 }
18756                 write_phy_reg(pi, 0xe8,
18757                               (tx_lpf_bw << 0) |
18758                               (tx_lpf_bw << 3) |
18759                               (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18760
18761                 if (PHY_IPA(pi)) {
18762
18763                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18764                                 tx_lpf_bw = 4;
18765                         } else {
18766                                 tx_lpf_bw = 1;
18767                         }
18768
18769                         write_phy_reg(pi, 0xe9,
18770                                       (tx_lpf_bw << 0) |
18771                                       (tx_lpf_bw << 3) |
18772                                       (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18773                 }
18774         }
18775 }
18776
18777 static void wlc_phy_spurwar_nphy(phy_info_t *pi)
18778 {
18779         u16 cur_channel = 0;
18780         int nphy_adj_tone_id_buf[] = { 57, 58 };
18781         u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
18782         bool isAdjustNoiseVar = false;
18783         uint numTonesAdjust = 0;
18784         u32 tempval = 0;
18785
18786         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18787                 if (pi->phyhang_avoid)
18788                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
18789
18790                 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
18791
18792                 if (pi->nphy_gband_spurwar_en) {
18793
18794                         wlc_phy_adjust_rx_analpfbw_nphy(pi,
18795                                                         NPHY_ANARXLPFBW_REDUCTIONFACT);
18796
18797                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18798                                 if ((cur_channel == 11)
18799                                     && CHSPEC_IS40(pi->radio_chanspec)) {
18800
18801                                         wlc_phy_adjust_min_noisevar_nphy(pi, 2,
18802                                                                          nphy_adj_tone_id_buf,
18803                                                                          nphy_adj_noise_var_buf);
18804                                 } else {
18805
18806                                         wlc_phy_adjust_min_noisevar_nphy(pi, 0,
18807                                                                          NULL,
18808                                                                          NULL);
18809                                 }
18810                         }
18811                         wlc_phy_adjust_crsminpwr_nphy(pi,
18812                                                       NPHY_ADJUSTED_MINCRSPOWER);
18813                 }
18814
18815                 if ((pi->nphy_gband_spurwar2_en)
18816                     && CHSPEC_IS2G(pi->radio_chanspec)) {
18817
18818                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18819                                 switch (cur_channel) {
18820                                 case 3:
18821                                         nphy_adj_tone_id_buf[0] = 57;
18822                                         nphy_adj_tone_id_buf[1] = 58;
18823                                         nphy_adj_noise_var_buf[0] = 0x22f;
18824                                         nphy_adj_noise_var_buf[1] = 0x25f;
18825                                         isAdjustNoiseVar = true;
18826                                         break;
18827                                 case 4:
18828                                         nphy_adj_tone_id_buf[0] = 41;
18829                                         nphy_adj_tone_id_buf[1] = 42;
18830                                         nphy_adj_noise_var_buf[0] = 0x22f;
18831                                         nphy_adj_noise_var_buf[1] = 0x25f;
18832                                         isAdjustNoiseVar = true;
18833                                         break;
18834                                 case 5:
18835                                         nphy_adj_tone_id_buf[0] = 25;
18836                                         nphy_adj_tone_id_buf[1] = 26;
18837                                         nphy_adj_noise_var_buf[0] = 0x24f;
18838                                         nphy_adj_noise_var_buf[1] = 0x25f;
18839                                         isAdjustNoiseVar = true;
18840                                         break;
18841                                 case 6:
18842                                         nphy_adj_tone_id_buf[0] = 9;
18843                                         nphy_adj_tone_id_buf[1] = 10;
18844                                         nphy_adj_noise_var_buf[0] = 0x22f;
18845                                         nphy_adj_noise_var_buf[1] = 0x24f;
18846                                         isAdjustNoiseVar = true;
18847                                         break;
18848                                 case 7:
18849                                         nphy_adj_tone_id_buf[0] = 121;
18850                                         nphy_adj_tone_id_buf[1] = 122;
18851                                         nphy_adj_noise_var_buf[0] = 0x18f;
18852                                         nphy_adj_noise_var_buf[1] = 0x24f;
18853                                         isAdjustNoiseVar = true;
18854                                         break;
18855                                 case 8:
18856                                         nphy_adj_tone_id_buf[0] = 105;
18857                                         nphy_adj_tone_id_buf[1] = 106;
18858                                         nphy_adj_noise_var_buf[0] = 0x22f;
18859                                         nphy_adj_noise_var_buf[1] = 0x25f;
18860                                         isAdjustNoiseVar = true;
18861                                         break;
18862                                 case 9:
18863                                         nphy_adj_tone_id_buf[0] = 89;
18864                                         nphy_adj_tone_id_buf[1] = 90;
18865                                         nphy_adj_noise_var_buf[0] = 0x22f;
18866                                         nphy_adj_noise_var_buf[1] = 0x24f;
18867                                         isAdjustNoiseVar = true;
18868                                         break;
18869                                 case 10:
18870                                         nphy_adj_tone_id_buf[0] = 73;
18871                                         nphy_adj_tone_id_buf[1] = 74;
18872                                         nphy_adj_noise_var_buf[0] = 0x22f;
18873                                         nphy_adj_noise_var_buf[1] = 0x24f;
18874                                         isAdjustNoiseVar = true;
18875                                         break;
18876                                 default:
18877                                         isAdjustNoiseVar = false;
18878                                         break;
18879                                 }
18880                         }
18881
18882                         if (isAdjustNoiseVar) {
18883                                 numTonesAdjust = sizeof(nphy_adj_tone_id_buf) /
18884                                     sizeof(nphy_adj_tone_id_buf[0]);
18885
18886                                 wlc_phy_adjust_min_noisevar_nphy(pi,
18887                                                                  numTonesAdjust,
18888                                                                  nphy_adj_tone_id_buf,
18889                                                                  nphy_adj_noise_var_buf);
18890
18891                                 tempval = 0;
18892
18893                         } else {
18894
18895                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
18896                                                                  NULL);
18897                         }
18898                 }
18899
18900                 if ((pi->nphy_aband_spurwar_en) &&
18901                     (CHSPEC_IS5G(pi->radio_chanspec))) {
18902                         switch (cur_channel) {
18903                         case 54:
18904                                 nphy_adj_tone_id_buf[0] = 32;
18905                                 nphy_adj_noise_var_buf[0] = 0x25f;
18906                                 break;
18907                         case 38:
18908                         case 102:
18909                         case 118:
18910                                 if ((pi->sh->chip == BCM4716_CHIP_ID) &&
18911                                     (pi->sh->chippkg == BCM4717_PKG_ID)) {
18912                                         nphy_adj_tone_id_buf[0] = 32;
18913                                         nphy_adj_noise_var_buf[0] = 0x21f;
18914                                 } else {
18915                                         nphy_adj_tone_id_buf[0] = 0;
18916                                         nphy_adj_noise_var_buf[0] = 0x0;
18917                                 }
18918                                 break;
18919                         case 134:
18920                                 nphy_adj_tone_id_buf[0] = 32;
18921                                 nphy_adj_noise_var_buf[0] = 0x21f;
18922                                 break;
18923                         case 151:
18924                                 nphy_adj_tone_id_buf[0] = 16;
18925                                 nphy_adj_noise_var_buf[0] = 0x23f;
18926                                 break;
18927                         case 153:
18928                         case 161:
18929                                 nphy_adj_tone_id_buf[0] = 48;
18930                                 nphy_adj_noise_var_buf[0] = 0x23f;
18931                                 break;
18932                         default:
18933                                 nphy_adj_tone_id_buf[0] = 0;
18934                                 nphy_adj_noise_var_buf[0] = 0x0;
18935                                 break;
18936                         }
18937
18938                         if (nphy_adj_tone_id_buf[0]
18939                             && nphy_adj_noise_var_buf[0]) {
18940                                 wlc_phy_adjust_min_noisevar_nphy(pi, 1,
18941                                                                  nphy_adj_tone_id_buf,
18942                                                                  nphy_adj_noise_var_buf);
18943                         } else {
18944                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
18945                                                                  NULL);
18946                         }
18947                 }
18948
18949                 if (pi->phyhang_avoid)
18950                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
18951         }
18952 }
18953
18954 static void
18955 wlc_phy_chanspec_nphy_setup(phy_info_t *pi, chanspec_t chanspec,
18956                             const nphy_sfo_cfg_t *ci)
18957 {
18958         u16 val;
18959
18960         val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
18961         if (CHSPEC_IS5G(chanspec) && !val) {
18962
18963                 val = R_REG(&pi->regs->psm_phy_hdr_param);
18964                 W_REG(&pi->regs->psm_phy_hdr_param,
18965                       (val | MAC_PHY_FORCE_CLK));
18966
18967                 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
18968                            (BBCFG_RESETCCA | BBCFG_RESETRX));
18969
18970                 W_REG(&pi->regs->psm_phy_hdr_param, val);
18971
18972                 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
18973         } else if (!CHSPEC_IS5G(chanspec) && val) {
18974
18975                 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
18976
18977                 val = R_REG(&pi->regs->psm_phy_hdr_param);
18978                 W_REG(&pi->regs->psm_phy_hdr_param,
18979                       (val | MAC_PHY_FORCE_CLK));
18980
18981                 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
18982                             (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
18983
18984                 W_REG(&pi->regs->psm_phy_hdr_param, val);
18985         }
18986
18987         write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
18988         write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
18989         write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
18990
18991         write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
18992         write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
18993         write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
18994
18995         if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
18996                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
18997
18998                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
18999         } else {
19000                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
19001                                         NPHY_ClassifierCtrl_ofdm_en);
19002
19003                 if (CHSPEC_IS2G(chanspec))
19004                         and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
19005         }
19006
19007         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
19008                 wlc_phy_txpwr_fixpower_nphy(pi);
19009         }
19010
19011         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
19012
19013                 wlc_phy_adjust_lnagaintbl_nphy(pi);
19014         }
19015
19016         wlc_phy_txlpfbw_nphy(pi);
19017
19018         if (NREV_GE(pi->pubpi.phy_rev, 3)
19019             && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
19020                 u8 spuravoid = 0;
19021
19022                 val = CHSPEC_CHANNEL(chanspec);
19023                 if (!CHSPEC_IS40(pi->radio_chanspec)) {
19024                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19025                                 if ((val == 13) || (val == 14) || (val == 153)) {
19026                                         spuravoid = 1;
19027                                 }
19028                         } else {
19029
19030                                 if (((val >= 5) && (val <= 8)) || (val == 13)
19031                                     || (val == 14)) {
19032                                         spuravoid = 1;
19033                                 }
19034                         }
19035                 } else {
19036                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19037                                 if (val == 54) {
19038                                         spuravoid = 1;
19039                                 }
19040                         } else {
19041
19042                                 if (pi->nphy_aband_spurwar_en &&
19043                                     ((val == 38) || (val == 102)
19044                                      || (val == 118))) {
19045                                         if ((pi->sh->chip ==
19046                                              BCM4716_CHIP_ID)
19047                                             && (pi->sh->chippkg ==
19048                                                 BCM4717_PKG_ID)) {
19049                                                 spuravoid = 0;
19050                                         } else {
19051                                                 spuravoid = 1;
19052                                         }
19053                                 }
19054                         }
19055                 }
19056
19057                 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
19058                         spuravoid = 1;
19059
19060                 if ((pi->sh->chip == BCM4716_CHIP_ID) ||
19061                     (pi->sh->chip == BCM47162_CHIP_ID)) {
19062                         si_pmu_spuravoid(pi->sh->sih, spuravoid);
19063                 } else {
19064                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
19065                         si_pmu_spuravoid(pi->sh->sih, spuravoid);
19066                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
19067                 }
19068
19069                 if ((pi->sh->chip == BCM43224_CHIP_ID) ||
19070                     (pi->sh->chip == BCM43225_CHIP_ID) ||
19071                     (pi->sh->chip == BCM43421_CHIP_ID)) {
19072
19073                         if (spuravoid == 1) {
19074
19075                                 W_REG(&pi->regs->tsf_clk_frac_l,
19076                                       0x5341);
19077                                 W_REG(&pi->regs->tsf_clk_frac_h,
19078                                       0x8);
19079                         } else {
19080
19081                                 W_REG(&pi->regs->tsf_clk_frac_l,
19082                                       0x8889);
19083                                 W_REG(&pi->regs->tsf_clk_frac_h,
19084                                       0x8);
19085                         }
19086                 }
19087
19088                 if (!((pi->sh->chip == BCM4716_CHIP_ID) ||
19089                       (pi->sh->chip == BCM47162_CHIP_ID))) {
19090                         wlapi_bmac_core_phypll_reset(pi->sh->physhim);
19091                 }
19092
19093                 mod_phy_reg(pi, 0x01, (0x1 << 15),
19094                             ((spuravoid > 0) ? (0x1 << 15) : 0));
19095
19096                 wlc_phy_resetcca_nphy(pi);
19097
19098                 pi->phy_isspuravoid = (spuravoid > 0);
19099         }
19100
19101         if (NREV_LT(pi->pubpi.phy_rev, 7))
19102                 write_phy_reg(pi, 0x17e, 0x3830);
19103
19104         wlc_phy_spurwar_nphy(pi);
19105 }
19106
19107 void wlc_phy_chanspec_set_nphy(phy_info_t *pi, chanspec_t chanspec)
19108 {
19109         int freq;
19110         chan_info_nphy_radio2057_t *t0 = NULL;
19111         chan_info_nphy_radio205x_t *t1 = NULL;
19112         chan_info_nphy_radio2057_rev5_t *t2 = NULL;
19113         chan_info_nphy_2055_t *t3 = NULL;
19114
19115         if (NORADIO_ENAB(pi->pubpi)) {
19116                 return;
19117         }
19118
19119         if (!wlc_phy_chan2freq_nphy
19120             (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
19121                 return;
19122
19123         wlc_phy_chanspec_radio_set((wlc_phy_t *) pi, chanspec);
19124
19125         if (CHSPEC_BW(chanspec) != pi->bw)
19126                 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
19127
19128         if (CHSPEC_IS40(chanspec)) {
19129                 if (CHSPEC_SB_UPPER(chanspec)) {
19130                         or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
19131                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19132                                 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
19133                         }
19134                 } else {
19135                         and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
19136                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19137                                 and_phy_reg(pi, 0x310,
19138                                             (~PRIM_SEL_UP20 & 0xffff));
19139                         }
19140                 }
19141         }
19142
19143         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19144                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19145
19146                         if ((pi->pubpi.radiorev <= 4)
19147                             || (pi->pubpi.radiorev == 6)) {
19148                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
19149                                               0x2,
19150                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
19151                                                : 0));
19152                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
19153                                               0x2,
19154                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
19155                                                : 0));
19156                         }
19157
19158                         wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
19159                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
19160                                                     (pi->pubpi.radiorev ==
19161                                                      5) ? (const nphy_sfo_cfg_t
19162                                                            *)&(t2->
19163                                                                PHY_BW1a)
19164                                                     : (const nphy_sfo_cfg_t *)
19165                                                     &(t0->PHY_BW1a));
19166
19167                 } else {
19168
19169                         mod_radio_reg(pi,
19170                                       RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
19171                                       0x4,
19172                                       (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
19173                         wlc_phy_chanspec_radio2056_setup(pi, t1);
19174
19175                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
19176                                                     (const nphy_sfo_cfg_t *)
19177                                                     &(t1->PHY_BW1a));
19178                 }
19179
19180         } else {
19181
19182                 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
19183                               (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
19184                                : (0x05 << 4)));
19185
19186                 wlc_phy_chanspec_radio2055_setup(pi, t3);
19187                 wlc_phy_chanspec_nphy_setup(pi, chanspec,
19188                                             (const nphy_sfo_cfg_t *)&(t3->
19189                                                                       PHY_BW1a));
19190         }
19191
19192 }
19193
19194 static void wlc_phy_savecal_nphy(phy_info_t *pi)
19195 {
19196         void *tbl_ptr;
19197         int coreNum;
19198         u16 *txcal_radio_regs = NULL;
19199
19200         if (pi->phyhang_avoid)
19201                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19202
19203         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19204
19205                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
19206                                           &pi->calibration_cache.
19207                                           rxcal_coeffs_2G);
19208
19209                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19210                         txcal_radio_regs =
19211                             pi->calibration_cache.txcal_radio_regs_2G;
19212                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19213
19214                         pi->calibration_cache.txcal_radio_regs_2G[0] =
19215                             read_radio_reg(pi,
19216                                            RADIO_2056_TX_LOFT_FINE_I |
19217                                            RADIO_2056_TX0);
19218                         pi->calibration_cache.txcal_radio_regs_2G[1] =
19219                             read_radio_reg(pi,
19220                                            RADIO_2056_TX_LOFT_FINE_Q |
19221                                            RADIO_2056_TX0);
19222                         pi->calibration_cache.txcal_radio_regs_2G[2] =
19223                             read_radio_reg(pi,
19224                                            RADIO_2056_TX_LOFT_FINE_I |
19225                                            RADIO_2056_TX1);
19226                         pi->calibration_cache.txcal_radio_regs_2G[3] =
19227                             read_radio_reg(pi,
19228                                            RADIO_2056_TX_LOFT_FINE_Q |
19229                                            RADIO_2056_TX1);
19230
19231                         pi->calibration_cache.txcal_radio_regs_2G[4] =
19232                             read_radio_reg(pi,
19233                                            RADIO_2056_TX_LOFT_COARSE_I |
19234                                            RADIO_2056_TX0);
19235                         pi->calibration_cache.txcal_radio_regs_2G[5] =
19236                             read_radio_reg(pi,
19237                                            RADIO_2056_TX_LOFT_COARSE_Q |
19238                                            RADIO_2056_TX0);
19239                         pi->calibration_cache.txcal_radio_regs_2G[6] =
19240                             read_radio_reg(pi,
19241                                            RADIO_2056_TX_LOFT_COARSE_I |
19242                                            RADIO_2056_TX1);
19243                         pi->calibration_cache.txcal_radio_regs_2G[7] =
19244                             read_radio_reg(pi,
19245                                            RADIO_2056_TX_LOFT_COARSE_Q |
19246                                            RADIO_2056_TX1);
19247                 } else {
19248                         pi->calibration_cache.txcal_radio_regs_2G[0] =
19249                             read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
19250                         pi->calibration_cache.txcal_radio_regs_2G[1] =
19251                             read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
19252                         pi->calibration_cache.txcal_radio_regs_2G[2] =
19253                             read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
19254                         pi->calibration_cache.txcal_radio_regs_2G[3] =
19255                             read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
19256                 }
19257
19258                 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
19259                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
19260         } else {
19261
19262                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
19263                                           &pi->calibration_cache.
19264                                           rxcal_coeffs_5G);
19265
19266                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19267                         txcal_radio_regs =
19268                             pi->calibration_cache.txcal_radio_regs_5G;
19269                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19270
19271                         pi->calibration_cache.txcal_radio_regs_5G[0] =
19272                             read_radio_reg(pi,
19273                                            RADIO_2056_TX_LOFT_FINE_I |
19274                                            RADIO_2056_TX0);
19275                         pi->calibration_cache.txcal_radio_regs_5G[1] =
19276                             read_radio_reg(pi,
19277                                            RADIO_2056_TX_LOFT_FINE_Q |
19278                                            RADIO_2056_TX0);
19279                         pi->calibration_cache.txcal_radio_regs_5G[2] =
19280                             read_radio_reg(pi,
19281                                            RADIO_2056_TX_LOFT_FINE_I |
19282                                            RADIO_2056_TX1);
19283                         pi->calibration_cache.txcal_radio_regs_5G[3] =
19284                             read_radio_reg(pi,
19285                                            RADIO_2056_TX_LOFT_FINE_Q |
19286                                            RADIO_2056_TX1);
19287
19288                         pi->calibration_cache.txcal_radio_regs_5G[4] =
19289                             read_radio_reg(pi,
19290                                            RADIO_2056_TX_LOFT_COARSE_I |
19291                                            RADIO_2056_TX0);
19292                         pi->calibration_cache.txcal_radio_regs_5G[5] =
19293                             read_radio_reg(pi,
19294                                            RADIO_2056_TX_LOFT_COARSE_Q |
19295                                            RADIO_2056_TX0);
19296                         pi->calibration_cache.txcal_radio_regs_5G[6] =
19297                             read_radio_reg(pi,
19298                                            RADIO_2056_TX_LOFT_COARSE_I |
19299                                            RADIO_2056_TX1);
19300                         pi->calibration_cache.txcal_radio_regs_5G[7] =
19301                             read_radio_reg(pi,
19302                                            RADIO_2056_TX_LOFT_COARSE_Q |
19303                                            RADIO_2056_TX1);
19304                 } else {
19305                         pi->calibration_cache.txcal_radio_regs_5G[0] =
19306                             read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
19307                         pi->calibration_cache.txcal_radio_regs_5G[1] =
19308                             read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
19309                         pi->calibration_cache.txcal_radio_regs_5G[2] =
19310                             read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
19311                         pi->calibration_cache.txcal_radio_regs_5G[3] =
19312                             read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
19313                 }
19314
19315                 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
19316                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
19317         }
19318         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19319                 for (coreNum = 0; coreNum <= 1; coreNum++) {
19320
19321                         txcal_radio_regs[2 * coreNum] =
19322                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19323                                             LOFT_FINE_I);
19324                         txcal_radio_regs[2 * coreNum + 1] =
19325                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19326                                             LOFT_FINE_Q);
19327
19328                         txcal_radio_regs[2 * coreNum + 4] =
19329                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19330                                             LOFT_COARSE_I);
19331                         txcal_radio_regs[2 * coreNum + 5] =
19332                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19333                                             LOFT_COARSE_Q);
19334                 }
19335         }
19336
19337         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
19338
19339         if (pi->phyhang_avoid)
19340                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19341 }
19342
19343 static void wlc_phy_restorecal_nphy(phy_info_t *pi)
19344 {
19345         u16 *loft_comp;
19346         u16 txcal_coeffs_bphy[4];
19347         u16 *tbl_ptr;
19348         int coreNum;
19349         u16 *txcal_radio_regs = NULL;
19350
19351         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19352                 if (pi->nphy_iqcal_chanspec_2G == 0)
19353                         return;
19354
19355                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
19356                 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
19357         } else {
19358                 if (pi->nphy_iqcal_chanspec_5G == 0)
19359                         return;
19360
19361                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
19362                 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
19363         }
19364
19365         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16,
19366                                  (void *)tbl_ptr);
19367
19368         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19369                 txcal_coeffs_bphy[0] = tbl_ptr[0];
19370                 txcal_coeffs_bphy[1] = tbl_ptr[1];
19371                 txcal_coeffs_bphy[2] = tbl_ptr[2];
19372                 txcal_coeffs_bphy[3] = tbl_ptr[3];
19373         } else {
19374                 txcal_coeffs_bphy[0] = 0;
19375                 txcal_coeffs_bphy[1] = 0;
19376                 txcal_coeffs_bphy[2] = 0;
19377                 txcal_coeffs_bphy[3] = 0;
19378         }
19379
19380         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
19381                                  txcal_coeffs_bphy);
19382
19383         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
19384
19385         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
19386
19387         if (NREV_LT(pi->pubpi.phy_rev, 2))
19388                 wlc_phy_tx_iq_war_nphy(pi);
19389
19390         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19391                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19392                         txcal_radio_regs =
19393                             pi->calibration_cache.txcal_radio_regs_2G;
19394                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19395
19396                         write_radio_reg(pi,
19397                                         RADIO_2056_TX_LOFT_FINE_I |
19398                                         RADIO_2056_TX0,
19399                                         pi->calibration_cache.
19400                                         txcal_radio_regs_2G[0]);
19401                         write_radio_reg(pi,
19402                                         RADIO_2056_TX_LOFT_FINE_Q |
19403                                         RADIO_2056_TX0,
19404                                         pi->calibration_cache.
19405                                         txcal_radio_regs_2G[1]);
19406                         write_radio_reg(pi,
19407                                         RADIO_2056_TX_LOFT_FINE_I |
19408                                         RADIO_2056_TX1,
19409                                         pi->calibration_cache.
19410                                         txcal_radio_regs_2G[2]);
19411                         write_radio_reg(pi,
19412                                         RADIO_2056_TX_LOFT_FINE_Q |
19413                                         RADIO_2056_TX1,
19414                                         pi->calibration_cache.
19415                                         txcal_radio_regs_2G[3]);
19416
19417                         write_radio_reg(pi,
19418                                         RADIO_2056_TX_LOFT_COARSE_I |
19419                                         RADIO_2056_TX0,
19420                                         pi->calibration_cache.
19421                                         txcal_radio_regs_2G[4]);
19422                         write_radio_reg(pi,
19423                                         RADIO_2056_TX_LOFT_COARSE_Q |
19424                                         RADIO_2056_TX0,
19425                                         pi->calibration_cache.
19426                                         txcal_radio_regs_2G[5]);
19427                         write_radio_reg(pi,
19428                                         RADIO_2056_TX_LOFT_COARSE_I |
19429                                         RADIO_2056_TX1,
19430                                         pi->calibration_cache.
19431                                         txcal_radio_regs_2G[6]);
19432                         write_radio_reg(pi,
19433                                         RADIO_2056_TX_LOFT_COARSE_Q |
19434                                         RADIO_2056_TX1,
19435                                         pi->calibration_cache.
19436                                         txcal_radio_regs_2G[7]);
19437                 } else {
19438                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
19439                                         pi->calibration_cache.
19440                                         txcal_radio_regs_2G[0]);
19441                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19442                                         pi->calibration_cache.
19443                                         txcal_radio_regs_2G[1]);
19444                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19445                                         pi->calibration_cache.
19446                                         txcal_radio_regs_2G[2]);
19447                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19448                                         pi->calibration_cache.
19449                                         txcal_radio_regs_2G[3]);
19450                 }
19451
19452                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19453                                           &pi->calibration_cache.
19454                                           rxcal_coeffs_2G);
19455         } else {
19456                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19457                         txcal_radio_regs =
19458                             pi->calibration_cache.txcal_radio_regs_5G;
19459                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19460
19461                         write_radio_reg(pi,
19462                                         RADIO_2056_TX_LOFT_FINE_I |
19463                                         RADIO_2056_TX0,
19464                                         pi->calibration_cache.
19465                                         txcal_radio_regs_5G[0]);
19466                         write_radio_reg(pi,
19467                                         RADIO_2056_TX_LOFT_FINE_Q |
19468                                         RADIO_2056_TX0,
19469                                         pi->calibration_cache.
19470                                         txcal_radio_regs_5G[1]);
19471                         write_radio_reg(pi,
19472                                         RADIO_2056_TX_LOFT_FINE_I |
19473                                         RADIO_2056_TX1,
19474                                         pi->calibration_cache.
19475                                         txcal_radio_regs_5G[2]);
19476                         write_radio_reg(pi,
19477                                         RADIO_2056_TX_LOFT_FINE_Q |
19478                                         RADIO_2056_TX1,
19479                                         pi->calibration_cache.
19480                                         txcal_radio_regs_5G[3]);
19481
19482                         write_radio_reg(pi,
19483                                         RADIO_2056_TX_LOFT_COARSE_I |
19484                                         RADIO_2056_TX0,
19485                                         pi->calibration_cache.
19486                                         txcal_radio_regs_5G[4]);
19487                         write_radio_reg(pi,
19488                                         RADIO_2056_TX_LOFT_COARSE_Q |
19489                                         RADIO_2056_TX0,
19490                                         pi->calibration_cache.
19491                                         txcal_radio_regs_5G[5]);
19492                         write_radio_reg(pi,
19493                                         RADIO_2056_TX_LOFT_COARSE_I |
19494                                         RADIO_2056_TX1,
19495                                         pi->calibration_cache.
19496                                         txcal_radio_regs_5G[6]);
19497                         write_radio_reg(pi,
19498                                         RADIO_2056_TX_LOFT_COARSE_Q |
19499                                         RADIO_2056_TX1,
19500                                         pi->calibration_cache.
19501                                         txcal_radio_regs_5G[7]);
19502                 } else {
19503                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
19504                                         pi->calibration_cache.
19505                                         txcal_radio_regs_5G[0]);
19506                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19507                                         pi->calibration_cache.
19508                                         txcal_radio_regs_5G[1]);
19509                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19510                                         pi->calibration_cache.
19511                                         txcal_radio_regs_5G[2]);
19512                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19513                                         pi->calibration_cache.
19514                                         txcal_radio_regs_5G[3]);
19515                 }
19516
19517                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19518                                           &pi->calibration_cache.
19519                                           rxcal_coeffs_5G);
19520         }
19521
19522         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19523                 for (coreNum = 0; coreNum <= 1; coreNum++) {
19524
19525                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19526                                          LOFT_FINE_I,
19527                                          txcal_radio_regs[2 * coreNum]);
19528                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19529                                          LOFT_FINE_Q,
19530                                          txcal_radio_regs[2 * coreNum + 1]);
19531
19532                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19533                                          LOFT_COARSE_I,
19534                                          txcal_radio_regs[2 * coreNum + 4]);
19535                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19536                                          LOFT_COARSE_Q,
19537                                          txcal_radio_regs[2 * coreNum + 5]);
19538                 }
19539         }
19540 }
19541
19542 void wlc_phy_antsel_init(wlc_phy_t *ppi, bool lut_init)
19543 {
19544         phy_info_t *pi = (phy_info_t *) ppi;
19545         u16 mask = 0xfc00;
19546         u32 mc = 0;
19547
19548         if (NREV_GE(pi->pubpi.phy_rev, 7))
19549                 return;
19550
19551         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19552                 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
19553
19554                 if (lut_init == false)
19555                         return;
19556
19557                 if (pi->srom_fem2g.antswctrllut == 0) {
19558                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19559                                                  1, 0x02, 16, &v0);
19560                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19561                                                  1, 0x03, 16, &v1);
19562                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19563                                                  1, 0x08, 16, &v2);
19564                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19565                                                  1, 0x0C, 16, &v3);
19566                 }
19567
19568                 if (pi->srom_fem5g.antswctrllut == 0) {
19569                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19570                                                  1, 0x12, 16, &v0);
19571                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19572                                                  1, 0x13, 16, &v1);
19573                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19574                                                  1, 0x18, 16, &v2);
19575                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19576                                                  1, 0x1C, 16, &v3);
19577                 }
19578         } else {
19579
19580                 write_phy_reg(pi, 0xc8, 0x0);
19581                 write_phy_reg(pi, 0xc9, 0x0);
19582
19583                 ai_gpiocontrol(pi->sh->sih, mask, mask, GPIO_DRV_PRIORITY);
19584
19585                 mc = R_REG(&pi->regs->maccontrol);
19586                 mc &= ~MCTL_GPOUT_SEL_MASK;
19587                 W_REG(&pi->regs->maccontrol, mc);
19588
19589                 OR_REG(&pi->regs->psm_gpio_oe, mask);
19590
19591                 AND_REG(&pi->regs->psm_gpio_out, ~mask);
19592
19593                 if (lut_init) {
19594                         write_phy_reg(pi, 0xf8, 0x02d8);
19595                         write_phy_reg(pi, 0xf9, 0x0301);
19596                         write_phy_reg(pi, 0xfa, 0x02d8);
19597                         write_phy_reg(pi, 0xfb, 0x0301);
19598                 }
19599         }
19600 }
19601
19602 u16 wlc_phy_classifier_nphy(phy_info_t *pi, u16 mask, u16 val)
19603 {
19604         u16 curr_ctl, new_ctl;
19605         bool suspended = false;
19606
19607         if (D11REV_IS(pi->sh->corerev, 16)) {
19608                 suspended =
19609                     (R_REG(&pi->regs->maccontrol) & MCTL_EN_MAC) ?
19610                     false : true;
19611                 if (!suspended)
19612                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
19613         }
19614
19615         curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
19616
19617         new_ctl = (curr_ctl & (~mask)) | (val & mask);
19618
19619         mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
19620
19621         if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
19622                 wlapi_enable_mac(pi->sh->physhim);
19623
19624         return new_ctl;
19625 }
19626
19627 static void wlc_phy_clip_det_nphy(phy_info_t *pi, u8 write, u16 *vals)
19628 {
19629
19630         if (write == 0) {
19631                 vals[0] = read_phy_reg(pi, 0x2c);
19632                 vals[1] = read_phy_reg(pi, 0x42);
19633         } else {
19634                 write_phy_reg(pi, 0x2c, vals[0]);
19635                 write_phy_reg(pi, 0x42, vals[1]);
19636         }
19637 }
19638
19639 void wlc_phy_force_rfseq_nphy(phy_info_t *pi, u8 cmd)
19640 {
19641         u16 trigger_mask, status_mask;
19642         u16 orig_RfseqCoreActv;
19643
19644         switch (cmd) {
19645         case NPHY_RFSEQ_RX2TX:
19646                 trigger_mask = NPHY_RfseqTrigger_rx2tx;
19647                 status_mask = NPHY_RfseqStatus_rx2tx;
19648                 break;
19649         case NPHY_RFSEQ_TX2RX:
19650                 trigger_mask = NPHY_RfseqTrigger_tx2rx;
19651                 status_mask = NPHY_RfseqStatus_tx2rx;
19652                 break;
19653         case NPHY_RFSEQ_RESET2RX:
19654                 trigger_mask = NPHY_RfseqTrigger_reset2rx;
19655                 status_mask = NPHY_RfseqStatus_reset2rx;
19656                 break;
19657         case NPHY_RFSEQ_UPDATEGAINH:
19658                 trigger_mask = NPHY_RfseqTrigger_updategainh;
19659                 status_mask = NPHY_RfseqStatus_updategainh;
19660                 break;
19661         case NPHY_RFSEQ_UPDATEGAINL:
19662                 trigger_mask = NPHY_RfseqTrigger_updategainl;
19663                 status_mask = NPHY_RfseqStatus_updategainl;
19664                 break;
19665         case NPHY_RFSEQ_UPDATEGAINU:
19666                 trigger_mask = NPHY_RfseqTrigger_updategainu;
19667                 status_mask = NPHY_RfseqStatus_updategainu;
19668                 break;
19669         default:
19670                 return;
19671         }
19672
19673         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
19674         or_phy_reg(pi, 0xa1,
19675                    (NPHY_RfseqMode_CoreActv_override |
19676                     NPHY_RfseqMode_Trigger_override));
19677         or_phy_reg(pi, 0xa3, trigger_mask);
19678         SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
19679         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
19680         WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
19681 }
19682
19683 static void
19684 wlc_phy_set_rfseq_nphy(phy_info_t *pi, u8 cmd, u8 *events, u8 *dlys,
19685                        u8 len)
19686 {
19687         u32 t1_offset, t2_offset;
19688         u8 ctr;
19689         u8 end_event =
19690             NREV_GE(pi->pubpi.phy_rev,
19691                     3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
19692         u8 end_dly = 1;
19693
19694         if (pi->phyhang_avoid)
19695                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19696
19697         t1_offset = cmd << 4;
19698         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
19699                                  events);
19700         t2_offset = t1_offset + 0x080;
19701         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
19702                                  dlys);
19703
19704         for (ctr = len; ctr < 16; ctr++) {
19705                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19706                                          t1_offset + ctr, 8, &end_event);
19707                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19708                                          t2_offset + ctr, 8, &end_dly);
19709         }
19710
19711         if (pi->phyhang_avoid)
19712                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19713 }
19714
19715 static u16 wlc_phy_read_lpf_bw_ctl_nphy(phy_info_t *pi, u16 offset)
19716 {
19717         u16 lpf_bw_ctl_val = 0;
19718         u16 rx2tx_lpf_rc_lut_offset = 0;
19719
19720         if (offset == 0) {
19721                 if (CHSPEC_IS40(pi->radio_chanspec)) {
19722                         rx2tx_lpf_rc_lut_offset = 0x159;
19723                 } else {
19724                         rx2tx_lpf_rc_lut_offset = 0x154;
19725                 }
19726         } else {
19727                 rx2tx_lpf_rc_lut_offset = offset;
19728         }
19729         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19730                                 (u32) rx2tx_lpf_rc_lut_offset, 16,
19731                                 &lpf_bw_ctl_val);
19732
19733         lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
19734
19735         return lpf_bw_ctl_val;
19736 }
19737
19738 static void
19739 wlc_phy_rfctrl_override_nphy_rev7(phy_info_t *pi, u16 field, u16 value,
19740                                   u8 core_mask, u8 off, u8 override_id)
19741 {
19742         u8 core_num;
19743         u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
19744         u8 val_shift = 0;
19745
19746         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19747                 en_mask = field;
19748                 for (core_num = 0; core_num < 2; core_num++) {
19749                         if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
19750
19751                                 switch (field) {
19752                                 case (0x1 << 2):
19753                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19754                                         val_addr = (core_num == 0) ? 0x7a :
19755                                             0x7d;
19756                                         val_mask = (0x1 << 1);
19757                                         val_shift = 1;
19758                                         break;
19759                                 case (0x1 << 3):
19760                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19761                                         val_addr = (core_num == 0) ? 0x7a :
19762                                             0x7d;
19763                                         val_mask = (0x1 << 2);
19764                                         val_shift = 2;
19765                                         break;
19766                                 case (0x1 << 4):
19767                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19768                                         val_addr = (core_num == 0) ? 0x7a :
19769                                             0x7d;
19770                                         val_mask = (0x1 << 4);
19771                                         val_shift = 4;
19772                                         break;
19773                                 case (0x1 << 5):
19774                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19775                                         val_addr = (core_num == 0) ? 0x7a :
19776                                             0x7d;
19777                                         val_mask = (0x1 << 5);
19778                                         val_shift = 5;
19779                                         break;
19780                                 case (0x1 << 6):
19781                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19782                                         val_addr = (core_num == 0) ? 0x7a :
19783                                             0x7d;
19784                                         val_mask = (0x1 << 6);
19785                                         val_shift = 6;
19786                                         break;
19787                                 case (0x1 << 7):
19788                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19789                                         val_addr = (core_num == 0) ? 0x7a :
19790                                             0x7d;
19791                                         val_mask = (0x1 << 7);
19792                                         val_shift = 7;
19793                                         break;
19794                                 case (0x1 << 10):
19795                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19796                                         val_addr = (core_num == 0) ? 0xf8 :
19797                                             0xfa;
19798                                         val_mask = (0x7 << 4);
19799                                         val_shift = 4;
19800                                         break;
19801                                 case (0x1 << 11):
19802                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19803                                         val_addr = (core_num == 0) ? 0x7b :
19804                                             0x7e;
19805                                         val_mask = (0xffff << 0);
19806                                         val_shift = 0;
19807                                         break;
19808                                 case (0x1 << 12):
19809                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19810                                         val_addr = (core_num == 0) ? 0x7c :
19811                                             0x7f;
19812                                         val_mask = (0xffff << 0);
19813                                         val_shift = 0;
19814                                         break;
19815                                 case (0x3 << 13):
19816                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19817                                         val_addr = (core_num == 0) ? 0x348 :
19818                                             0x349;
19819                                         val_mask = (0xff << 0);
19820                                         val_shift = 0;
19821                                         break;
19822                                 case (0x1 << 13):
19823                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19824                                         val_addr = (core_num == 0) ? 0x348 :
19825                                             0x349;
19826                                         val_mask = (0xf << 0);
19827                                         val_shift = 0;
19828                                         break;
19829                                 default:
19830                                         addr = 0xffff;
19831                                         break;
19832                                 }
19833                         } else if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID1) {
19834
19835                                 switch (field) {
19836                                 case (0x1 << 1):
19837                                         en_addr = (core_num == 0) ? 0x342 :
19838                                             0x343;
19839                                         val_addr = (core_num == 0) ? 0x340 :
19840                                             0x341;
19841                                         val_mask = (0x1 << 1);
19842                                         val_shift = 1;
19843                                         break;
19844                                 case (0x1 << 3):
19845                                         en_addr = (core_num == 0) ? 0x342 :
19846                                             0x343;
19847                                         val_addr = (core_num == 0) ? 0x340 :
19848                                             0x341;
19849                                         val_mask = (0x1 << 3);
19850                                         val_shift = 3;
19851                                         break;
19852                                 case (0x1 << 5):
19853                                         en_addr = (core_num == 0) ? 0x342 :
19854                                             0x343;
19855                                         val_addr = (core_num == 0) ? 0x340 :
19856                                             0x341;
19857                                         val_mask = (0x1 << 5);
19858                                         val_shift = 5;
19859                                         break;
19860                                 case (0x1 << 4):
19861                                         en_addr = (core_num == 0) ? 0x342 :
19862                                             0x343;
19863                                         val_addr = (core_num == 0) ? 0x340 :
19864                                             0x341;
19865                                         val_mask = (0x1 << 4);
19866                                         val_shift = 4;
19867                                         break;
19868                                 case (0x1 << 2):
19869
19870                                         en_addr = (core_num == 0) ? 0x342 :
19871                                             0x343;
19872                                         val_addr = (core_num == 0) ? 0x340 :
19873                                             0x341;
19874                                         val_mask = (0x1 << 2);
19875                                         val_shift = 2;
19876                                         break;
19877                                 case (0x1 << 7):
19878
19879                                         en_addr = (core_num == 0) ? 0x342 :
19880                                             0x343;
19881                                         val_addr = (core_num == 0) ? 0x340 :
19882                                             0x341;
19883                                         val_mask = (0x7 << 8);
19884                                         val_shift = 8;
19885                                         break;
19886                                 case (0x1 << 11):
19887                                         en_addr = (core_num == 0) ? 0x342 :
19888                                             0x343;
19889                                         val_addr = (core_num == 0) ? 0x340 :
19890                                             0x341;
19891                                         val_mask = (0x1 << 14);
19892                                         val_shift = 14;
19893                                         break;
19894                                 case (0x1 << 10):
19895                                         en_addr = (core_num == 0) ? 0x342 :
19896                                             0x343;
19897                                         val_addr = (core_num == 0) ? 0x340 :
19898                                             0x341;
19899                                         val_mask = (0x1 << 13);
19900                                         val_shift = 13;
19901                                         break;
19902                                 case (0x1 << 9):
19903                                         en_addr = (core_num == 0) ? 0x342 :
19904                                             0x343;
19905                                         val_addr = (core_num == 0) ? 0x340 :
19906                                             0x341;
19907                                         val_mask = (0x1 << 12);
19908                                         val_shift = 12;
19909                                         break;
19910                                 case (0x1 << 8):
19911                                         en_addr = (core_num == 0) ? 0x342 :
19912                                             0x343;
19913                                         val_addr = (core_num == 0) ? 0x340 :
19914                                             0x341;
19915                                         val_mask = (0x1 << 11);
19916                                         val_shift = 11;
19917                                         break;
19918                                 case (0x1 << 6):
19919                                         en_addr = (core_num == 0) ? 0x342 :
19920                                             0x343;
19921                                         val_addr = (core_num == 0) ? 0x340 :
19922                                             0x341;
19923                                         val_mask = (0x1 << 6);
19924                                         val_shift = 6;
19925                                         break;
19926                                 case (0x1 << 0):
19927                                         en_addr = (core_num == 0) ? 0x342 :
19928                                             0x343;
19929                                         val_addr = (core_num == 0) ? 0x340 :
19930                                             0x341;
19931                                         val_mask = (0x1 << 0);
19932                                         val_shift = 0;
19933                                         break;
19934                                 default:
19935                                         addr = 0xffff;
19936                                         break;
19937                                 }
19938                         } else if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID2) {
19939
19940                                 switch (field) {
19941                                 case (0x1 << 3):
19942                                         en_addr = (core_num == 0) ? 0x346 :
19943                                             0x347;
19944                                         val_addr = (core_num == 0) ? 0x344 :
19945                                             0x345;
19946                                         val_mask = (0x1 << 3);
19947                                         val_shift = 3;
19948                                         break;
19949                                 case (0x1 << 1):
19950                                         en_addr = (core_num == 0) ? 0x346 :
19951                                             0x347;
19952                                         val_addr = (core_num == 0) ? 0x344 :
19953                                             0x345;
19954                                         val_mask = (0x1 << 1);
19955                                         val_shift = 1;
19956                                         break;
19957                                 case (0x1 << 0):
19958                                         en_addr = (core_num == 0) ? 0x346 :
19959                                             0x347;
19960                                         val_addr = (core_num == 0) ? 0x344 :
19961                                             0x345;
19962                                         val_mask = (0x1 << 0);
19963                                         val_shift = 0;
19964                                         break;
19965                                 case (0x1 << 2):
19966                                         en_addr = (core_num == 0) ? 0x346 :
19967                                             0x347;
19968                                         val_addr = (core_num == 0) ? 0x344 :
19969                                             0x345;
19970                                         val_mask = (0x1 << 2);
19971                                         val_shift = 2;
19972                                         break;
19973                                 case (0x1 << 4):
19974                                         en_addr = (core_num == 0) ? 0x346 :
19975                                             0x347;
19976                                         val_addr = (core_num == 0) ? 0x344 :
19977                                             0x345;
19978                                         val_mask = (0x1 << 4);
19979                                         val_shift = 4;
19980                                         break;
19981                                 default:
19982                                         addr = 0xffff;
19983                                         break;
19984                                 }
19985                         }
19986
19987                         if (off) {
19988                                 and_phy_reg(pi, en_addr, ~en_mask);
19989                                 and_phy_reg(pi, val_addr, ~val_mask);
19990                         } else {
19991
19992                                 if ((core_mask == 0)
19993                                     || (core_mask & (1 << core_num))) {
19994                                         or_phy_reg(pi, en_addr, en_mask);
19995
19996                                         if (addr != 0xffff) {
19997                                                 mod_phy_reg(pi, val_addr,
19998                                                             val_mask,
19999                                                             (value <<
20000                                                              val_shift));
20001                                         }
20002                                 }
20003                         }
20004                 }
20005         }
20006 }
20007
20008 static void
20009 wlc_phy_rfctrl_override_nphy(phy_info_t *pi, u16 field, u16 value,
20010                              u8 core_mask, u8 off)
20011 {
20012         u8 core_num;
20013         u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
20014             0, val_mask = 0;
20015         u8 shift = 0, val_shift = 0;
20016
20017         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
20018
20019                 en_mask = field;
20020                 for (core_num = 0; core_num < 2; core_num++) {
20021
20022                         switch (field) {
20023                         case (0x1 << 1):
20024                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20025                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20026                                 val_mask = (0x1 << 0);
20027                                 val_shift = 0;
20028                                 break;
20029                         case (0x1 << 2):
20030                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20031                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20032                                 val_mask = (0x1 << 1);
20033                                 val_shift = 1;
20034                                 break;
20035                         case (0x1 << 3):
20036                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20037                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20038                                 val_mask = (0x1 << 2);
20039                                 val_shift = 2;
20040                                 break;
20041                         case (0x1 << 4):
20042                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20043                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20044                                 val_mask = (0x1 << 4);
20045                                 val_shift = 4;
20046                                 break;
20047                         case (0x1 << 5):
20048                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20049                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20050                                 val_mask = (0x1 << 5);
20051                                 val_shift = 5;
20052                                 break;
20053                         case (0x1 << 6):
20054                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20055                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20056                                 val_mask = (0x1 << 6);
20057                                 val_shift = 6;
20058                                 break;
20059                         case (0x1 << 7):
20060                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20061                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20062                                 val_mask = (0x1 << 7);
20063                                 val_shift = 7;
20064                                 break;
20065                         case (0x1 << 8):
20066                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20067                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20068                                 val_mask = (0x7 << 8);
20069                                 val_shift = 8;
20070                                 break;
20071                         case (0x1 << 11):
20072                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20073                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20074                                 val_mask = (0x7 << 13);
20075                                 val_shift = 13;
20076                                 break;
20077
20078                         case (0x1 << 9):
20079                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20080                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
20081                                 val_mask = (0x7 << 0);
20082                                 val_shift = 0;
20083                                 break;
20084
20085                         case (0x1 << 10):
20086                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20087                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
20088                                 val_mask = (0x7 << 4);
20089                                 val_shift = 4;
20090                                 break;
20091
20092                         case (0x1 << 12):
20093                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20094                                 val_addr = (core_num == 0) ? 0x7b : 0x7e;
20095                                 val_mask = (0xffff << 0);
20096                                 val_shift = 0;
20097                                 break;
20098                         case (0x1 << 13):
20099                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20100                                 val_addr = (core_num == 0) ? 0x7c : 0x7f;
20101                                 val_mask = (0xffff << 0);
20102                                 val_shift = 0;
20103                                 break;
20104                         case (0x1 << 14):
20105                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20106                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
20107                                 val_mask = (0x3 << 6);
20108                                 val_shift = 6;
20109                                 break;
20110                         case (0x1 << 0):
20111                                 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
20112                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
20113                                 val_mask = (0x1 << 15);
20114                                 val_shift = 15;
20115                                 break;
20116                         default:
20117                                 addr = 0xffff;
20118                                 break;
20119                         }
20120
20121                         if (off) {
20122                                 and_phy_reg(pi, en_addr, ~en_mask);
20123                                 and_phy_reg(pi, val_addr, ~val_mask);
20124                         } else {
20125
20126                                 if ((core_mask == 0)
20127                                     || (core_mask & (1 << core_num))) {
20128                                         or_phy_reg(pi, en_addr, en_mask);
20129
20130                                         if (addr != 0xffff) {
20131                                                 mod_phy_reg(pi, val_addr,
20132                                                             val_mask,
20133                                                             (value <<
20134                                                              val_shift));
20135                                         }
20136                                 }
20137                         }
20138                 }
20139         } else {
20140
20141                 if (off) {
20142                         and_phy_reg(pi, 0xec, ~field);
20143                         value = 0x0;
20144                 } else {
20145                         or_phy_reg(pi, 0xec, field);
20146                 }
20147
20148                 for (core_num = 0; core_num < 2; core_num++) {
20149
20150                         switch (field) {
20151                         case (0x1 << 1):
20152                         case (0x1 << 9):
20153                         case (0x1 << 12):
20154                         case (0x1 << 13):
20155                         case (0x1 << 14):
20156                                 addr = 0x78;
20157
20158                                 core_mask = 0x1;
20159                                 break;
20160                         case (0x1 << 2):
20161                         case (0x1 << 3):
20162                         case (0x1 << 4):
20163                         case (0x1 << 5):
20164                         case (0x1 << 6):
20165                         case (0x1 << 7):
20166                         case (0x1 << 8):
20167                                 addr = (core_num == 0) ? 0x7a : 0x7d;
20168                                 break;
20169                         case (0x1 << 10):
20170                                 addr = (core_num == 0) ? 0x7b : 0x7e;
20171                                 break;
20172                         case (0x1 << 11):
20173                                 addr = (core_num == 0) ? 0x7c : 0x7f;
20174                                 break;
20175                         default:
20176                                 addr = 0xffff;
20177                         }
20178
20179                         switch (field) {
20180                         case (0x1 << 1):
20181                                 mask = (0x7 << 3);
20182                                 shift = 3;
20183                                 break;
20184                         case (0x1 << 9):
20185                                 mask = (0x1 << 2);
20186                                 shift = 2;
20187                                 break;
20188                         case (0x1 << 12):
20189                                 mask = (0x1 << 8);
20190                                 shift = 8;
20191                                 break;
20192                         case (0x1 << 13):
20193                                 mask = (0x1 << 9);
20194                                 shift = 9;
20195                                 break;
20196                         case (0x1 << 14):
20197                                 mask = (0xf << 12);
20198                                 shift = 12;
20199                                 break;
20200                         case (0x1 << 2):
20201                                 mask = (0x1 << 0);
20202                                 shift = 0;
20203                                 break;
20204                         case (0x1 << 3):
20205                                 mask = (0x1 << 1);
20206                                 shift = 1;
20207                                 break;
20208                         case (0x1 << 4):
20209                                 mask = (0x1 << 2);
20210                                 shift = 2;
20211                                 break;
20212                         case (0x1 << 5):
20213                                 mask = (0x3 << 4);
20214                                 shift = 4;
20215                                 break;
20216                         case (0x1 << 6):
20217                                 mask = (0x3 << 6);
20218                                 shift = 6;
20219                                 break;
20220                         case (0x1 << 7):
20221                                 mask = (0x1 << 8);
20222                                 shift = 8;
20223                                 break;
20224                         case (0x1 << 8):
20225                                 mask = (0x1 << 9);
20226                                 shift = 9;
20227                                 break;
20228                         case (0x1 << 10):
20229                                 mask = 0x1fff;
20230                                 shift = 0x0;
20231                                 break;
20232                         case (0x1 << 11):
20233                                 mask = 0x1fff;
20234                                 shift = 0x0;
20235                                 break;
20236                         default:
20237                                 mask = 0x0;
20238                                 shift = 0x0;
20239                                 break;
20240                         }
20241
20242                         if ((addr != 0xffff) && (core_mask & (1 << core_num))) {
20243                                 mod_phy_reg(pi, addr, mask, (value << shift));
20244                         }
20245                 }
20246
20247                 or_phy_reg(pi, 0xec, (0x1 << 0));
20248                 or_phy_reg(pi, 0x78, (0x1 << 0));
20249                 udelay(1);
20250                 and_phy_reg(pi, 0xec, ~(0x1 << 0));
20251         }
20252 }
20253
20254 static void
20255 wlc_phy_rfctrl_override_1tomany_nphy(phy_info_t *pi, u16 cmd, u16 value,
20256                                      u8 core_mask, u8 off)
20257 {
20258         u16 rfmxgain = 0, lpfgain = 0;
20259         u16 tgain = 0;
20260
20261         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20262
20263                 switch (cmd) {
20264                 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
20265                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
20266                                                           value, core_mask, off,
20267                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20268                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), value,
20269                                                           core_mask, off,
20270                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20271                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), value,
20272                                                           core_mask, off,
20273                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20274                         break;
20275                 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
20276                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
20277                                                           value, core_mask, off,
20278                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20279                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20280                                                           core_mask, off,
20281                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20282                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), value,
20283                                                           core_mask, off,
20284                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20285                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20286                                                           core_mask, off,
20287                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20288                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0,
20289                                                           core_mask, off,
20290                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20291                         break;
20292                 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
20293                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
20294                                                           value, core_mask, off,
20295                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20296                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20297                                                           core_mask, off,
20298                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20299                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), value,
20300                                                           core_mask, off,
20301                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20302                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), value,
20303                                                           core_mask, off,
20304                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20305                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1,
20306                                                           core_mask, off,
20307                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20308                         break;
20309                 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
20310                         rfmxgain = value & 0x000ff;
20311                         lpfgain = value & 0x0ff00;
20312                         lpfgain = lpfgain >> 8;
20313
20314                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
20315                                                           rfmxgain, core_mask,
20316                                                           off,
20317                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20318                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x3 << 13),
20319                                                           lpfgain, core_mask,
20320                                                           off,
20321                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20322                         break;
20323                 case NPHY_REV7_RfctrlOverride_cmd_txgain:
20324                         tgain = value & 0x7fff;
20325                         lpfgain = value & 0x8000;
20326                         lpfgain = lpfgain >> 14;
20327
20328                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
20329                                                           tgain, core_mask, off,
20330                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20331                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 13),
20332                                                           lpfgain, core_mask,
20333                                                           off,
20334                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20335                         break;
20336                 }
20337         }
20338 }
20339
20340 static void
20341 wlc_phy_scale_offset_rssi_nphy(phy_info_t *pi, u16 scale, s8 offset,
20342                                u8 coresel, u8 rail, u8 rssi_type)
20343 {
20344         u16 valuetostuff;
20345
20346         offset = (offset > NPHY_RSSICAL_MAXREAD) ?
20347             NPHY_RSSICAL_MAXREAD : offset;
20348         offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
20349             -NPHY_RSSICAL_MAXREAD - 1 : offset;
20350
20351         valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
20352
20353         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20354              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20355             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20356                 write_phy_reg(pi, 0x1a6, valuetostuff);
20357         }
20358         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20359              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20360             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20361                 write_phy_reg(pi, 0x1ac, valuetostuff);
20362         }
20363         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20364              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20365             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20366                 write_phy_reg(pi, 0x1b2, valuetostuff);
20367         }
20368         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20369              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20370             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20371                 write_phy_reg(pi, 0x1b8, valuetostuff);
20372         }
20373
20374         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20375              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20376             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20377                 write_phy_reg(pi, 0x1a4, valuetostuff);
20378         }
20379         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20380              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20381             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20382                 write_phy_reg(pi, 0x1aa, valuetostuff);
20383         }
20384         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20385              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20386             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20387                 write_phy_reg(pi, 0x1b0, valuetostuff);
20388         }
20389         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20390              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20391             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20392                 write_phy_reg(pi, 0x1b6, valuetostuff);
20393         }
20394
20395         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20396              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20397             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20398                 write_phy_reg(pi, 0x1a5, valuetostuff);
20399         }
20400         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20401              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20402             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20403                 write_phy_reg(pi, 0x1ab, valuetostuff);
20404         }
20405         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20406              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20407             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20408                 write_phy_reg(pi, 0x1b1, valuetostuff);
20409         }
20410         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20411              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20412             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20413                 write_phy_reg(pi, 0x1b7, valuetostuff);
20414         }
20415
20416         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20417              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20418             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20419                 write_phy_reg(pi, 0x1a7, valuetostuff);
20420         }
20421         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20422              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20423             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20424                 write_phy_reg(pi, 0x1ad, valuetostuff);
20425         }
20426         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20427              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20428             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20429                 write_phy_reg(pi, 0x1b3, valuetostuff);
20430         }
20431         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20432              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20433             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20434                 write_phy_reg(pi, 0x1b9, valuetostuff);
20435         }
20436
20437         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20438              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20439             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20440                 write_phy_reg(pi, 0x1a8, valuetostuff);
20441         }
20442         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20443              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20444             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20445                 write_phy_reg(pi, 0x1ae, valuetostuff);
20446         }
20447         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20448              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20449             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20450                 write_phy_reg(pi, 0x1b4, valuetostuff);
20451         }
20452         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20453              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20454             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20455                 write_phy_reg(pi, 0x1ba, valuetostuff);
20456         }
20457
20458         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20459              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20460             (rssi_type == NPHY_RSSI_SEL_TSSI_2G)) {
20461                 write_phy_reg(pi, 0x1a9, valuetostuff);
20462         }
20463         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20464              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20465             (rssi_type == NPHY_RSSI_SEL_TSSI_2G)) {
20466                 write_phy_reg(pi, 0x1b5, valuetostuff);
20467         }
20468
20469         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20470              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20471             (rssi_type == NPHY_RSSI_SEL_TSSI_5G)) {
20472                 write_phy_reg(pi, 0x1af, valuetostuff);
20473         }
20474         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20475              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20476             (rssi_type == NPHY_RSSI_SEL_TSSI_5G)) {
20477                 write_phy_reg(pi, 0x1bb, valuetostuff);
20478         }
20479 }
20480
20481 void wlc_phy_rssisel_nphy(phy_info_t *pi, u8 core_code, u8 rssi_type)
20482 {
20483         u16 mask, val;
20484         u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
20485             startseq;
20486         u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
20487             rfctrlovr_trigger_val;
20488         u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
20489         u16 rfctrlcmd_val, rfctrlovr_val;
20490         u8 core;
20491
20492         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20493                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
20494                         mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
20495                         mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
20496
20497                         mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
20498                         mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
20499
20500                         mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
20501                         mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
20502
20503                         mask = (0x1 << 2) |
20504                             (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
20505                         mod_phy_reg(pi, 0xf9, mask, 0);
20506                         mod_phy_reg(pi, 0xfb, mask, 0);
20507
20508                 } else {
20509                         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20510                                 if (core_code == RADIO_MIMO_CORESEL_CORE1
20511                                     && core == PHY_CORE_1)
20512                                         continue;
20513                                 else if (core_code == RADIO_MIMO_CORESEL_CORE2
20514                                          && core == PHY_CORE_0)
20515                                         continue;
20516
20517                                 mod_phy_reg(pi, (core == PHY_CORE_0) ?
20518                                             0x8f : 0xa5, (0x1 << 9), 1 << 9);
20519
20520                                 if (rssi_type == NPHY_RSSI_SEL_W1 ||
20521                                     rssi_type == NPHY_RSSI_SEL_W2 ||
20522                                     rssi_type == NPHY_RSSI_SEL_NB) {
20523
20524                                         mod_phy_reg(pi,
20525                                                     (core ==
20526                                                      PHY_CORE_0) ? 0xa6 : 0xa7,
20527                                                     (0x3 << 8), 0);
20528
20529                                         mask = (0x1 << 2) |
20530                                             (0x1 << 3) |
20531                                             (0x1 << 4) | (0x1 << 5);
20532                                         mod_phy_reg(pi,
20533                                                     (core ==
20534                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
20535                                                     mask, 0);
20536
20537                                         if (rssi_type == NPHY_RSSI_SEL_W1) {
20538                                                 if (CHSPEC_IS5G
20539                                                     (pi->radio_chanspec)) {
20540                                                         mask = (0x1 << 2);
20541                                                         val = 1 << 2;
20542                                                 } else {
20543                                                         mask = (0x1 << 3);
20544                                                         val = 1 << 3;
20545                                                 }
20546                                         } else if (rssi_type ==
20547                                                    NPHY_RSSI_SEL_W2) {
20548                                                 mask = (0x1 << 4);
20549                                                 val = 1 << 4;
20550                                         } else {
20551                                                 mask = (0x1 << 5);
20552                                                 val = 1 << 5;
20553                                         }
20554                                         mod_phy_reg(pi,
20555                                                     (core ==
20556                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
20557                                                     mask, val);
20558
20559                                         mask = (0x1 << 5);
20560                                         val = 1 << 5;
20561                                         mod_phy_reg(pi, (core == PHY_CORE_0) ?
20562                                                     0xe5 : 0xe6, mask, val);
20563                                 } else {
20564                                         if (rssi_type == NPHY_RSSI_SEL_TBD) {
20565
20566                                                 mask = (0x3 << 8);
20567                                                 val = 1 << 8;
20568                                                 mod_phy_reg(pi,
20569                                                             (core ==
20570                                                              PHY_CORE_0) ? 0xa6
20571                                                             : 0xa7, mask, val);
20572                                                 mask = (0x3 << 10);
20573                                                 val = 1 << 10;
20574                                                 mod_phy_reg(pi,
20575                                                             (core ==
20576                                                              PHY_CORE_0) ? 0xa6
20577                                                             : 0xa7, mask, val);
20578                                         } else if (rssi_type ==
20579                                                    NPHY_RSSI_SEL_IQ) {
20580
20581                                                 mask = (0x3 << 8);
20582                                                 val = 2 << 8;
20583                                                 mod_phy_reg(pi,
20584                                                             (core ==
20585                                                              PHY_CORE_0) ? 0xa6
20586                                                             : 0xa7, mask, val);
20587                                                 mask = (0x3 << 10);
20588                                                 val = 2 << 10;
20589                                                 mod_phy_reg(pi,
20590                                                             (core ==
20591                                                              PHY_CORE_0) ? 0xa6
20592                                                             : 0xa7, mask, val);
20593                                         } else {
20594
20595                                                 mask = (0x3 << 8);
20596                                                 val = 3 << 8;
20597                                                 mod_phy_reg(pi,
20598                                                             (core ==
20599                                                              PHY_CORE_0) ? 0xa6
20600                                                             : 0xa7, mask, val);
20601                                                 mask = (0x3 << 10);
20602                                                 val = 3 << 10;
20603                                                 mod_phy_reg(pi,
20604                                                             (core ==
20605                                                              PHY_CORE_0) ? 0xa6
20606                                                             : 0xa7, mask, val);
20607
20608                                                 if (PHY_IPA(pi)) {
20609                                                         if (NREV_GE
20610                                                             (pi->pubpi.phy_rev,
20611                                                              7)) {
20612
20613                                                                 write_radio_reg
20614                                                                     (pi,
20615                                                                      ((core ==
20616                                                                        PHY_CORE_0)
20617                                                                       ?
20618                                                                       RADIO_2057_TX0_TX_SSI_MUX
20619                                                                       :
20620                                                                       RADIO_2057_TX1_TX_SSI_MUX),
20621                                                                      (CHSPEC_IS5G
20622                                                                       (pi->
20623                                                                        radio_chanspec)
20624                                                                       ? 0xc :
20625                                                                       0xe));
20626                                                         } else {
20627                                                                 write_radio_reg
20628                                                                     (pi,
20629                                                                      RADIO_2056_TX_TX_SSI_MUX
20630                                                                      |
20631                                                                      ((core ==
20632                                                                        PHY_CORE_0)
20633                                                                       ?
20634                                                                       RADIO_2056_TX0
20635                                                                       :
20636                                                                       RADIO_2056_TX1),
20637                                                                      (CHSPEC_IS5G
20638                                                                       (pi->
20639                                                                        radio_chanspec)
20640                                                                       ? 0xc :
20641                                                                       0xe));
20642                                                         }
20643                                                 } else {
20644
20645                                                         if (NREV_GE
20646                                                             (pi->pubpi.phy_rev,
20647                                                              7)) {
20648                                                                 write_radio_reg
20649                                                                     (pi,
20650                                                                      ((core ==
20651                                                                        PHY_CORE_0)
20652                                                                       ?
20653                                                                       RADIO_2057_TX0_TX_SSI_MUX
20654                                                                       :
20655                                                                       RADIO_2057_TX1_TX_SSI_MUX),
20656                                                                      0x11);
20657
20658                                                                 if (pi->pubpi.
20659                                                                     radioid ==
20660                                                                     BCM2057_ID)
20661                                                                         write_radio_reg
20662                                                                             (pi,
20663                                                                              RADIO_2057_IQTEST_SEL_PU,
20664                                                                              0x1);
20665
20666                                                         } else {
20667                                                                 write_radio_reg
20668                                                                     (pi,
20669                                                                      RADIO_2056_TX_TX_SSI_MUX
20670                                                                      |
20671                                                                      ((core ==
20672                                                                        PHY_CORE_0)
20673                                                                       ?
20674                                                                       RADIO_2056_TX0
20675                                                                       :
20676                                                                       RADIO_2056_TX1),
20677                                                                      0x11);
20678                                                         }
20679                                                 }
20680
20681                                                 afectrlovr_rssi_val = 1 << 9;
20682                                                 mod_phy_reg(pi,
20683                                                             (core ==
20684                                                              PHY_CORE_0) ? 0x8f
20685                                                             : 0xa5, (0x1 << 9),
20686                                                             afectrlovr_rssi_val);
20687                                         }
20688                                 }
20689                         }
20690                 }
20691         } else {
20692
20693                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20694                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20695                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20696
20697                         val = 0x0;
20698                 } else if (rssi_type == NPHY_RSSI_SEL_TBD) {
20699
20700                         val = 0x1;
20701                 } else if (rssi_type == NPHY_RSSI_SEL_IQ) {
20702
20703                         val = 0x2;
20704                 } else {
20705
20706                         val = 0x3;
20707                 }
20708                 mask = ((0x3 << 12) | (0x3 << 14));
20709                 val = (val << 12) | (val << 14);
20710                 mod_phy_reg(pi, 0xa6, mask, val);
20711                 mod_phy_reg(pi, 0xa7, mask, val);
20712
20713                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20714                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20715                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20716                         if (rssi_type == NPHY_RSSI_SEL_W1) {
20717                                 val = 0x1;
20718                         }
20719                         if (rssi_type == NPHY_RSSI_SEL_W2) {
20720                                 val = 0x2;
20721                         }
20722                         if (rssi_type == NPHY_RSSI_SEL_NB) {
20723                                 val = 0x3;
20724                         }
20725                         mask = (0x3 << 4);
20726                         val = (val << 4);
20727                         mod_phy_reg(pi, 0x7a, mask, val);
20728                         mod_phy_reg(pi, 0x7d, mask, val);
20729                 }
20730
20731                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
20732                         afectrlovr_rssi_val = 0;
20733                         rfctrlcmd_rxen_val = 0;
20734                         rfctrlcmd_coresel_val = 0;
20735                         rfctrlovr_rssi_val = 0;
20736                         rfctrlovr_rxen_val = 0;
20737                         rfctrlovr_coresel_val = 0;
20738                         rfctrlovr_trigger_val = 0;
20739                         startseq = 0;
20740                 } else {
20741                         afectrlovr_rssi_val = 1;
20742                         rfctrlcmd_rxen_val = 1;
20743                         rfctrlcmd_coresel_val = core_code;
20744                         rfctrlovr_rssi_val = 1;
20745                         rfctrlovr_rxen_val = 1;
20746                         rfctrlovr_coresel_val = 1;
20747                         rfctrlovr_trigger_val = 1;
20748                         startseq = 1;
20749                 }
20750
20751                 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
20752                 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
20753                                        12) | (afectrlovr_rssi_val << 13);
20754                 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
20755                             afectrlovr_rssi_val);
20756
20757                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20758                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20759                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20760                         rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
20761                         rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
20762                             (rfctrlcmd_coresel_val << 3);
20763
20764                         rfctrlovr_mask = ((0x1 << 5) |
20765                                           (0x1 << 12) |
20766                                           (0x1 << 1) | (0x1 << 0));
20767                         rfctrlovr_val = (rfctrlovr_rssi_val <<
20768                                          5) |
20769                             (rfctrlovr_rxen_val << 12) |
20770                             (rfctrlovr_coresel_val << 1) |
20771                             (rfctrlovr_trigger_val << 0);
20772
20773                         mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
20774                         mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
20775
20776                         mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
20777                         udelay(20);
20778
20779                         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
20780                 }
20781         }
20782 }
20783
20784 int
20785 wlc_phy_poll_rssi_nphy(phy_info_t *pi, u8 rssi_type, s32 *rssi_buf,
20786                        u8 nsamps)
20787 {
20788         s16 rssi0, rssi1;
20789         u16 afectrlCore1_save = 0;
20790         u16 afectrlCore2_save = 0;
20791         u16 afectrlOverride1_save = 0;
20792         u16 afectrlOverride2_save = 0;
20793         u16 rfctrlOverrideAux0_save = 0;
20794         u16 rfctrlOverrideAux1_save = 0;
20795         u16 rfctrlMiscReg1_save = 0;
20796         u16 rfctrlMiscReg2_save = 0;
20797         u16 rfctrlcmd_save = 0;
20798         u16 rfctrloverride_save = 0;
20799         u16 rfctrlrssiothers1_save = 0;
20800         u16 rfctrlrssiothers2_save = 0;
20801         s8 tmp_buf[4];
20802         u8 ctr = 0, samp = 0;
20803         s32 rssi_out_val;
20804         u16 gpiosel_orig;
20805
20806         afectrlCore1_save = read_phy_reg(pi, 0xa6);
20807         afectrlCore2_save = read_phy_reg(pi, 0xa7);
20808         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20809                 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
20810                 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
20811                 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
20812                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
20813                 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
20814                 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
20815         } else {
20816                 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
20817                 rfctrlcmd_save = read_phy_reg(pi, 0x78);
20818                 rfctrloverride_save = read_phy_reg(pi, 0xec);
20819                 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
20820                 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
20821         }
20822
20823         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
20824
20825         gpiosel_orig = read_phy_reg(pi, 0xca);
20826         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20827                 write_phy_reg(pi, 0xca, 5);
20828         }
20829
20830         for (ctr = 0; ctr < 4; ctr++) {
20831                 rssi_buf[ctr] = 0;
20832         }
20833
20834         for (samp = 0; samp < nsamps; samp++) {
20835                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20836                         rssi0 = read_phy_reg(pi, 0x1c9);
20837                         rssi1 = read_phy_reg(pi, 0x1ca);
20838                 } else {
20839                         rssi0 = read_phy_reg(pi, 0x219);
20840                         rssi1 = read_phy_reg(pi, 0x21a);
20841                 }
20842
20843                 ctr = 0;
20844                 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
20845                 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
20846                 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
20847                 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
20848
20849                 for (ctr = 0; ctr < 4; ctr++) {
20850                         rssi_buf[ctr] += tmp_buf[ctr];
20851                 }
20852
20853         }
20854
20855         rssi_out_val = rssi_buf[3] & 0xff;
20856         rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
20857         rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
20858         rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
20859
20860         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20861                 write_phy_reg(pi, 0xca, gpiosel_orig);
20862         }
20863
20864         write_phy_reg(pi, 0xa6, afectrlCore1_save);
20865         write_phy_reg(pi, 0xa7, afectrlCore2_save);
20866         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20867                 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
20868                 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
20869                 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
20870                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
20871                 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
20872                 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
20873         } else {
20874                 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
20875                 write_phy_reg(pi, 0x78, rfctrlcmd_save);
20876                 write_phy_reg(pi, 0xec, rfctrloverride_save);
20877                 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
20878                 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
20879         }
20880
20881         return rssi_out_val;
20882 }
20883
20884 s16 wlc_phy_tempsense_nphy(phy_info_t *pi)
20885 {
20886         u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
20887         u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
20888         u16 pwrdet_rxtx_core1_save;
20889         u16 pwrdet_rxtx_core2_save;
20890         u16 afectrlCore1_save;
20891         u16 afectrlCore2_save;
20892         u16 afectrlOverride_save;
20893         u16 afectrlOverride2_save;
20894         u16 pd_pll_ts_save;
20895         u16 gpioSel_save;
20896         s32 radio_temp[4];
20897         s32 radio_temp2[4];
20898         u16 syn_tempprocsense_save;
20899         s16 offset = 0;
20900
20901         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20902                 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
20903                 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
20904                 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
20905                 s32 auxADC_Vl;
20906                 u16 RfctrlOverride5_save, RfctrlOverride6_save;
20907                 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
20908                 u16 RSSIMultCoef0QPowerDet_save;
20909                 u16 tempsense_Rcal;
20910
20911                 syn_tempprocsense_save =
20912                     read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
20913
20914                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
20915                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
20916                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
20917                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
20918                 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
20919                 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
20920                 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
20921                 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
20922                 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
20923
20924                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
20925                                         &auxADC_Vmid_save);
20926                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
20927                                         &auxADC_Av_save);
20928                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
20929                                         &auxADC_rssi_ctrlL_save);
20930                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
20931                                         &auxADC_rssi_ctrlH_save);
20932
20933                 write_phy_reg(pi, 0x1ae, 0x0);
20934
20935                 auxADC_rssi_ctrlL = 0x0;
20936                 auxADC_rssi_ctrlH = 0x20;
20937                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
20938                                          &auxADC_rssi_ctrlL);
20939                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
20940                                          &auxADC_rssi_ctrlH);
20941
20942                 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
20943
20944                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
20945                                 tempsense_Rcal | 0x01);
20946
20947                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
20948                                                   1, 0, 0,
20949                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
20950                 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
20951                 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
20952                 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
20953                 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
20954
20955                 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
20956                 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
20957                 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
20958                 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
20959                 udelay(5);
20960                 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
20961                 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
20962                 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
20963                 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
20964                 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
20965                 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
20966                 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
20967                 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
20968                 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
20969                 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
20970
20971                 auxADC_Vmid = 0xA3;
20972                 auxADC_Av = 0x0;
20973                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
20974                                          &auxADC_Vmid);
20975                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
20976                                          &auxADC_Av);
20977
20978                 udelay(3);
20979
20980                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
20981                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
20982                                 tempsense_Rcal | 0x03);
20983
20984                 udelay(5);
20985                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
20986
20987                 auxADC_Av = 0x7;
20988                 if (radio_temp[1] + radio_temp2[1] < -30) {
20989                         auxADC_Vmid = 0x45;
20990                         auxADC_Vl = 263;
20991                 } else if (radio_temp[1] + radio_temp2[1] < -9) {
20992                         auxADC_Vmid = 0x200;
20993                         auxADC_Vl = 467;
20994                 } else if (radio_temp[1] + radio_temp2[1] < 11) {
20995                         auxADC_Vmid = 0x266;
20996                         auxADC_Vl = 634;
20997                 } else {
20998                         auxADC_Vmid = 0x2D5;
20999                         auxADC_Vl = 816;
21000                 }
21001
21002                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21003                                          &auxADC_Vmid);
21004                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21005                                          &auxADC_Av);
21006
21007                 udelay(3);
21008
21009                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21010                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21011                                 tempsense_Rcal | 0x01);
21012
21013                 udelay(5);
21014                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21015
21016                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21017                                 syn_tempprocsense_save);
21018
21019                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21020                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21021                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
21022                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21023                 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
21024                 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
21025                 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
21026                 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
21027                 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
21028
21029                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21030                                          &auxADC_Vmid_save);
21031                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21032                                          &auxADC_Av_save);
21033                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
21034                                          &auxADC_rssi_ctrlL_save);
21035                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
21036                                          &auxADC_rssi_ctrlH_save);
21037
21038                 if (pi->sh->chip == BCM5357_CHIP_ID) {
21039                         radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
21040                                          + 88 * (auxADC_Vl) - 27111 +
21041                                          128) / 256;
21042                 } else if (pi->sh->chip == BCM43236_CHIP_ID) {
21043                         radio_temp[0] = (198 * (radio_temp[1] + radio_temp2[1])
21044                                          + 91 * (auxADC_Vl) - 27243 +
21045                                          128) / 256;
21046                 } else {
21047                         radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
21048                                          + 82 * (auxADC_Vl) - 28861 +
21049                                          128) / 256;
21050                 }
21051
21052                 offset = (s16) pi->phy_tempsense_offset;
21053
21054         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21055                 syn_tempprocsense_save =
21056                     read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
21057
21058                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21059                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21060                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
21061                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21062                 gpioSel_save = read_phy_reg(pi, 0xca);
21063
21064                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
21065
21066                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21067                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21068                 } else {
21069                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
21070                 }
21071
21072                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21073                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21074                         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
21075                 } else {
21076                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
21077                 }
21078
21079                 radio_temp[0] =
21080                     (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
21081
21082                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
21083                                 syn_tempprocsense_save);
21084
21085                 write_phy_reg(pi, 0xca, gpioSel_save);
21086                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21087                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21088                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
21089                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21090
21091                 offset = (s16) pi->phy_tempsense_offset;
21092         } else {
21093
21094                 pwrdet_rxtx_core1_save =
21095                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
21096                 pwrdet_rxtx_core2_save =
21097                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
21098                 core1_txrf_iqcal1_save =
21099                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
21100                 core1_txrf_iqcal2_save =
21101                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
21102                 core2_txrf_iqcal1_save =
21103                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
21104                 core2_txrf_iqcal2_save =
21105                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
21106                 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
21107
21108                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21109                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21110                 afectrlOverride_save = read_phy_reg(pi, 0xa5);
21111                 gpioSel_save = read_phy_reg(pi, 0xca);
21112
21113                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
21114                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
21115                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
21116                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
21117                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
21118                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
21119                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
21120
21121                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21122                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21123
21124                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21125                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21126
21127                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21128                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21129
21130                 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
21131                 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
21132                 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
21133                 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
21134
21135                 radio_temp[0] =
21136                     (radio_temp[0] + radio_temp[1] + radio_temp[2] +
21137                      radio_temp[3]);
21138
21139                 radio_temp[0] =
21140                     (radio_temp[0] + (8 * 32)) * (950 - 350) / 63 + (350 * 8);
21141
21142                 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
21143
21144                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
21145                                 pwrdet_rxtx_core1_save);
21146                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
21147                                 pwrdet_rxtx_core2_save);
21148                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
21149                                 core1_txrf_iqcal1_save);
21150                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
21151                                 core2_txrf_iqcal1_save);
21152                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
21153                                 core1_txrf_iqcal2_save);
21154                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
21155                                 core2_txrf_iqcal2_save);
21156                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
21157
21158                 write_phy_reg(pi, 0xca, gpioSel_save);
21159                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21160                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21161                 write_phy_reg(pi, 0xa5, afectrlOverride_save);
21162         }
21163
21164         return (s16) radio_temp[0] + offset;
21165 }
21166
21167 static void
21168 wlc_phy_set_rssi_2055_vcm(phy_info_t *pi, u8 rssi_type, u8 *vcm_buf)
21169 {
21170         u8 core;
21171
21172         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21173                 if (rssi_type == NPHY_RSSI_SEL_NB) {
21174                         if (core == PHY_CORE_0) {
21175                                 mod_radio_reg(pi,
21176                                               RADIO_2055_CORE1_B0_NBRSSI_VCM,
21177                                               RADIO_2055_NBRSSI_VCM_I_MASK,
21178                                               vcm_buf[2 *
21179                                                       core] <<
21180                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
21181                                 mod_radio_reg(pi,
21182                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
21183                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
21184                                               vcm_buf[2 * core +
21185                                                       1] <<
21186                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
21187                         } else {
21188                                 mod_radio_reg(pi,
21189                                               RADIO_2055_CORE2_B0_NBRSSI_VCM,
21190                                               RADIO_2055_NBRSSI_VCM_I_MASK,
21191                                               vcm_buf[2 *
21192                                                       core] <<
21193                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
21194                                 mod_radio_reg(pi,
21195                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
21196                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
21197                                               vcm_buf[2 * core +
21198                                                       1] <<
21199                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
21200                         }
21201                 } else {
21202
21203                         if (core == PHY_CORE_0) {
21204                                 mod_radio_reg(pi,
21205                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
21206                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
21207                                               vcm_buf[2 *
21208                                                       core] <<
21209                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
21210                         } else {
21211                                 mod_radio_reg(pi,
21212                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
21213                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
21214                                               vcm_buf[2 *
21215                                                       core] <<
21216                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
21217                         }
21218                 }
21219         }
21220 }
21221
21222 void wlc_phy_rssi_cal_nphy(phy_info_t *pi)
21223 {
21224         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21225
21226                 wlc_phy_rssi_cal_nphy_rev3(pi);
21227         } else {
21228                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
21229                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
21230                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
21231         }
21232 }
21233
21234 static void wlc_phy_rssi_cal_nphy_rev2(phy_info_t *pi, u8 rssi_type)
21235 {
21236         s32 target_code;
21237         u16 classif_state;
21238         u16 clip_state[2];
21239         u16 rssi_ctrl_state[2], pd_state[2];
21240         u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
21241         u16 rfctrlintc_override_val;
21242         u16 clip_off[] = { 0xffff, 0xffff };
21243         u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
21244         u8 vcm, min_vcm, vcm_tmp[4];
21245         u8 vcm_final[4] = { 0, 0, 0, 0 };
21246         u8 result_idx, ctr;
21247         s32 poll_results[4][4] = {
21248                 {0, 0, 0, 0},
21249                 {0, 0, 0, 0},
21250                 {0, 0, 0, 0},
21251                 {0, 0, 0, 0}
21252         };
21253         s32 poll_miniq[4][2] = {
21254                 {0, 0},
21255                 {0, 0},
21256                 {0, 0},
21257                 {0, 0}
21258         };
21259         s32 min_d, curr_d;
21260         s32 fine_digital_offset[4];
21261         s32 poll_results_min[4] = { 0, 0, 0, 0 };
21262         s32 min_poll;
21263
21264         switch (rssi_type) {
21265         case NPHY_RSSI_SEL_NB:
21266                 target_code = NPHY_RSSICAL_NB_TARGET;
21267                 break;
21268         case NPHY_RSSI_SEL_W1:
21269                 target_code = NPHY_RSSICAL_W1_TARGET;
21270                 break;
21271         case NPHY_RSSI_SEL_W2:
21272                 target_code = NPHY_RSSICAL_W2_TARGET;
21273                 break;
21274         default:
21275                 return;
21276                 break;
21277         }
21278
21279         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
21280         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
21281         wlc_phy_clip_det_nphy(pi, 0, clip_state);
21282         wlc_phy_clip_det_nphy(pi, 1, clip_off);
21283
21284         rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
21285         rfctrlintc_override_val =
21286             CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
21287
21288         rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
21289         rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
21290         write_phy_reg(pi, 0x91, rfctrlintc_override_val);
21291         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
21292
21293         rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
21294         rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
21295         write_phy_reg(pi, 0x92, rfctrlintc_override_val);
21296         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
21297
21298         pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
21299             RADIO_2055_WBRSSI_G2_PD;
21300         pd_state[0] =
21301             read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
21302         pd_state[1] =
21303             read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
21304         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
21305         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
21306         rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
21307             RADIO_2055_WBRSSI_G2_SEL;
21308         rssi_ctrl_state[0] =
21309             read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
21310         rssi_ctrl_state[1] =
21311             read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
21312         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
21313
21314         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
21315                                        NPHY_RAIL_I, rssi_type);
21316         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
21317                                        NPHY_RAIL_Q, rssi_type);
21318
21319         for (vcm = 0; vcm < 4; vcm++) {
21320
21321                 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
21322                 if (rssi_type != NPHY_RSSI_SEL_W2) {
21323                         wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
21324                 }
21325
21326                 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
21327                                        NPHY_RSSICAL_NPOLL);
21328
21329                 if ((rssi_type == NPHY_RSSI_SEL_W1)
21330                     || (rssi_type == NPHY_RSSI_SEL_W2)) {
21331                         for (ctr = 0; ctr < 2; ctr++) {
21332                                 poll_miniq[vcm][ctr] =
21333                                     min(poll_results[vcm][ctr * 2 + 0],
21334                                         poll_results[vcm][ctr * 2 + 1]);
21335                         }
21336                 }
21337         }
21338
21339         for (result_idx = 0; result_idx < 4; result_idx++) {
21340                 min_d = NPHY_RSSICAL_MAXD;
21341                 min_vcm = 0;
21342                 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
21343                 for (vcm = 0; vcm < 4; vcm++) {
21344                         curr_d = ABS(((rssi_type == NPHY_RSSI_SEL_NB) ?
21345                                       poll_results[vcm][result_idx] :
21346                                       poll_miniq[vcm][result_idx / 2]) -
21347                                      (target_code * NPHY_RSSICAL_NPOLL));
21348                         if (curr_d < min_d) {
21349                                 min_d = curr_d;
21350                                 min_vcm = vcm;
21351                         }
21352                         if (poll_results[vcm][result_idx] < min_poll) {
21353                                 min_poll = poll_results[vcm][result_idx];
21354                         }
21355                 }
21356                 vcm_final[result_idx] = min_vcm;
21357                 poll_results_min[result_idx] = min_poll;
21358         }
21359
21360         if (rssi_type != NPHY_RSSI_SEL_W2) {
21361                 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
21362         }
21363
21364         for (result_idx = 0; result_idx < 4; result_idx++) {
21365                 fine_digital_offset[result_idx] =
21366                     (target_code * NPHY_RSSICAL_NPOLL) -
21367                     poll_results[vcm_final[result_idx]][result_idx];
21368                 if (fine_digital_offset[result_idx] < 0) {
21369                         fine_digital_offset[result_idx] =
21370                             ABS(fine_digital_offset[result_idx]);
21371                         fine_digital_offset[result_idx] +=
21372                             (NPHY_RSSICAL_NPOLL / 2);
21373                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
21374                         fine_digital_offset[result_idx] =
21375                             -fine_digital_offset[result_idx];
21376                 } else {
21377                         fine_digital_offset[result_idx] +=
21378                             (NPHY_RSSICAL_NPOLL / 2);
21379                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
21380                 }
21381
21382                 if (poll_results_min[result_idx] ==
21383                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL) {
21384                         fine_digital_offset[result_idx] =
21385                             (target_code - NPHY_RSSICAL_MAXREAD - 1);
21386                 }
21387
21388                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
21389                                                (s8)
21390                                                fine_digital_offset[result_idx],
21391                                                (result_idx / 2 ==
21392                                                 0) ? RADIO_MIMO_CORESEL_CORE1 :
21393                                                RADIO_MIMO_CORESEL_CORE2,
21394                                                (result_idx % 2 ==
21395                                                 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
21396                                                rssi_type);
21397         }
21398
21399         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
21400         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
21401         if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL) {
21402                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21403                                      NPHY_RSSI_SEL_NB);
21404         } else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL) {
21405                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21406                                      NPHY_RSSI_SEL_W1);
21407         } else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G2_SEL) {
21408                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21409                                      NPHY_RSSI_SEL_W2);
21410         } else {
21411                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21412                                      NPHY_RSSI_SEL_W2);
21413         }
21414         if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL) {
21415                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21416                                      NPHY_RSSI_SEL_NB);
21417         } else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL) {
21418                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21419                                      NPHY_RSSI_SEL_W1);
21420         } else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G2_SEL) {
21421                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21422                                      NPHY_RSSI_SEL_W2);
21423         } else {
21424                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21425                                      NPHY_RSSI_SEL_W2);
21426         }
21427
21428         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
21429
21430         write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
21431         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
21432         write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
21433         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
21434
21435         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
21436         wlc_phy_clip_det_nphy(pi, 1, clip_state);
21437
21438         wlc_phy_resetcca_nphy(pi);
21439 }
21440
21441 int BCMFASTPATH
21442 wlc_phy_rssi_compute_nphy(phy_info_t *pi, wlc_d11rxhdr_t *wlc_rxh)
21443 {
21444         d11rxhdr_t *rxh = &wlc_rxh->rxhdr;
21445         s16 rxpwr, rxpwr0, rxpwr1;
21446         s16 phyRx0_l, phyRx2_l;
21447
21448         rxpwr = 0;
21449         rxpwr0 = le16_to_cpu(rxh->PhyRxStatus_1) & PRXS1_nphy_PWR0_MASK;
21450         rxpwr1 = (le16_to_cpu(rxh->PhyRxStatus_1) & PRXS1_nphy_PWR1_MASK) >> 8;
21451
21452         if (rxpwr0 > 127)
21453                 rxpwr0 -= 256;
21454         if (rxpwr1 > 127)
21455                 rxpwr1 -= 256;
21456
21457         phyRx0_l = le16_to_cpu(rxh->PhyRxStatus_0) & 0x00ff;
21458         phyRx2_l = le16_to_cpu(rxh->PhyRxStatus_2) & 0x00ff;
21459         if (phyRx2_l > 127)
21460                 phyRx2_l -= 256;
21461
21462         if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
21463                 rxpwr0 = rxpwr1;
21464                 rxpwr1 = phyRx2_l;
21465         }
21466
21467         wlc_rxh->rxpwr[0] = (s8) rxpwr0;
21468         wlc_rxh->rxpwr[1] = (s8) rxpwr1;
21469         wlc_rxh->do_rssi_ma = 0;
21470
21471         if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
21472                 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
21473         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
21474                 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
21475         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
21476                 rxpwr = (rxpwr0 + rxpwr1) >> 1;
21477
21478         return rxpwr;
21479 }
21480
21481 static void
21482 wlc_phy_rfctrlintc_override_nphy(phy_info_t *pi, u8 field, u16 value,
21483                                  u8 core_code)
21484 {
21485         u16 mask;
21486         u16 val;
21487         u8 core;
21488
21489         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21490                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21491                         if (core_code == RADIO_MIMO_CORESEL_CORE1
21492                             && core == PHY_CORE_1)
21493                                 continue;
21494                         else if (core_code == RADIO_MIMO_CORESEL_CORE2
21495                                  && core == PHY_CORE_0)
21496                                 continue;
21497
21498                         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
21499
21500                                 mask = (0x1 << 10);
21501                                 val = 1 << 10;
21502                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
21503                                             0x92, mask, val);
21504                         }
21505
21506                         if (field == NPHY_RfctrlIntc_override_OFF) {
21507
21508                                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
21509                                               0x92, 0);
21510
21511                                 wlc_phy_force_rfseq_nphy(pi,
21512                                                          NPHY_RFSEQ_RESET2RX);
21513                         } else if (field == NPHY_RfctrlIntc_override_TRSW) {
21514
21515                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21516
21517                                         mask = (0x1 << 6) | (0x1 << 7);
21518
21519                                         val = value << 6;
21520                                         mod_phy_reg(pi,
21521                                                     (core ==
21522                                                      PHY_CORE_0) ? 0x91 : 0x92,
21523                                                     mask, val);
21524
21525                                         or_phy_reg(pi,
21526                                                    (core ==
21527                                                     PHY_CORE_0) ? 0x91 : 0x92,
21528                                                    (0x1 << 10));
21529
21530                                         and_phy_reg(pi, 0x2ff, (u16)
21531                                                     ~(0x3 << 14));
21532                                         or_phy_reg(pi, 0x2ff, (0x1 << 13));
21533                                         or_phy_reg(pi, 0x2ff, (0x1 << 0));
21534                                 } else {
21535
21536                                         mask = (0x1 << 6) |
21537                                             (0x1 << 7) |
21538                                             (0x1 << 8) | (0x1 << 9);
21539                                         val = value << 6;
21540                                         mod_phy_reg(pi,
21541                                                     (core ==
21542                                                      PHY_CORE_0) ? 0x91 : 0x92,
21543                                                     mask, val);
21544
21545                                         mask = (0x1 << 0);
21546                                         val = 1 << 0;
21547                                         mod_phy_reg(pi,
21548                                                     (core ==
21549                                                      PHY_CORE_0) ? 0xe7 : 0xec,
21550                                                     mask, val);
21551
21552                                         mask = (core == PHY_CORE_0) ? (0x1 << 0)
21553                                             : (0x1 << 1);
21554                                         val = 1 << ((core == PHY_CORE_0) ?
21555                                                     0 : 1);
21556                                         mod_phy_reg(pi, 0x78, mask, val);
21557
21558                                         SPINWAIT(((read_phy_reg(pi, 0x78) & val)
21559                                                   != 0), 10000);
21560                                         if (WARN(read_phy_reg(pi, 0x78) & val,
21561                                                 "HW error: override failed"))
21562                                                 return;
21563
21564                                         mask = (0x1 << 0);
21565                                         val = 0 << 0;
21566                                         mod_phy_reg(pi,
21567                                                     (core ==
21568                                                      PHY_CORE_0) ? 0xe7 : 0xec,
21569                                                     mask, val);
21570                                 }
21571                         } else if (field == NPHY_RfctrlIntc_override_PA) {
21572                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21573
21574                                         mask = (0x1 << 4) | (0x1 << 5);
21575
21576                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21577                                                 val = value << 5;
21578                                         } else {
21579                                                 val = value << 4;
21580                                         }
21581
21582                                         mod_phy_reg(pi,
21583                                                     (core ==
21584                                                      PHY_CORE_0) ? 0x91 : 0x92,
21585                                                     mask, val);
21586
21587                                         or_phy_reg(pi,
21588                                                    (core ==
21589                                                     PHY_CORE_0) ? 0x91 : 0x92,
21590                                                    (0x1 << 12));
21591                                 } else {
21592
21593                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21594                                                 mask = (0x1 << 5);
21595                                                 val = value << 5;
21596                                         } else {
21597                                                 mask = (0x1 << 4);
21598                                                 val = value << 4;
21599                                         }
21600                                         mod_phy_reg(pi,
21601                                                     (core ==
21602                                                      PHY_CORE_0) ? 0x91 : 0x92,
21603                                                     mask, val);
21604                                 }
21605                         } else if (field == NPHY_RfctrlIntc_override_EXT_LNA_PU) {
21606                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21607                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21608
21609                                                 mask = (0x1 << 0);
21610                                                 val = value << 0;
21611                                                 mod_phy_reg(pi,
21612                                                             (core ==
21613                                                              PHY_CORE_0) ? 0x91
21614                                                             : 0x92, mask, val);
21615
21616                                                 mask = (0x1 << 2);
21617                                                 mod_phy_reg(pi,
21618                                                             (core ==
21619                                                              PHY_CORE_0) ? 0x91
21620                                                             : 0x92, mask, 0);
21621                                         } else {
21622
21623                                                 mask = (0x1 << 2);
21624                                                 val = value << 2;
21625                                                 mod_phy_reg(pi,
21626                                                             (core ==
21627                                                              PHY_CORE_0) ? 0x91
21628                                                             : 0x92, mask, val);
21629
21630                                                 mask = (0x1 << 0);
21631                                                 mod_phy_reg(pi,
21632                                                             (core ==
21633                                                              PHY_CORE_0) ? 0x91
21634                                                             : 0x92, mask, 0);
21635                                         }
21636
21637                                         mask = (0x1 << 11);
21638                                         val = 1 << 11;
21639                                         mod_phy_reg(pi,
21640                                                     (core ==
21641                                                      PHY_CORE_0) ? 0x91 : 0x92,
21642                                                     mask, val);
21643                                 } else {
21644
21645                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21646                                                 mask = (0x1 << 0);
21647                                                 val = value << 0;
21648                                         } else {
21649                                                 mask = (0x1 << 2);
21650                                                 val = value << 2;
21651                                         }
21652                                         mod_phy_reg(pi,
21653                                                     (core ==
21654                                                      PHY_CORE_0) ? 0x91 : 0x92,
21655                                                     mask, val);
21656                                 }
21657                         } else if (field ==
21658                                    NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
21659                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21660                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21661
21662                                                 mask = (0x1 << 1);
21663                                                 val = value << 1;
21664                                                 mod_phy_reg(pi,
21665                                                             (core ==
21666                                                              PHY_CORE_0) ? 0x91
21667                                                             : 0x92, mask, val);
21668
21669                                                 mask = (0x1 << 3);
21670                                                 mod_phy_reg(pi,
21671                                                             (core ==
21672                                                              PHY_CORE_0) ? 0x91
21673                                                             : 0x92, mask, 0);
21674                                         } else {
21675
21676                                                 mask = (0x1 << 3);
21677                                                 val = value << 3;
21678                                                 mod_phy_reg(pi,
21679                                                             (core ==
21680                                                              PHY_CORE_0) ? 0x91
21681                                                             : 0x92, mask, val);
21682
21683                                                 mask = (0x1 << 1);
21684                                                 mod_phy_reg(pi,
21685                                                             (core ==
21686                                                              PHY_CORE_0) ? 0x91
21687                                                             : 0x92, mask, 0);
21688                                         }
21689
21690                                         mask = (0x1 << 11);
21691                                         val = 1 << 11;
21692                                         mod_phy_reg(pi,
21693                                                     (core ==
21694                                                      PHY_CORE_0) ? 0x91 : 0x92,
21695                                                     mask, val);
21696                                 } else {
21697
21698                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21699                                                 mask = (0x1 << 1);
21700                                                 val = value << 1;
21701                                         } else {
21702                                                 mask = (0x1 << 3);
21703                                                 val = value << 3;
21704                                         }
21705                                         mod_phy_reg(pi,
21706                                                     (core ==
21707                                                      PHY_CORE_0) ? 0x91 : 0x92,
21708                                                     mask, val);
21709                                 }
21710                         }
21711                 }
21712         } else {
21713                 return;
21714         }
21715 }
21716
21717 static void wlc_phy_rssi_cal_nphy_rev3(phy_info_t *pi)
21718 {
21719         u16 classif_state;
21720         u16 clip_state[2];
21721         u16 clip_off[] = { 0xffff, 0xffff };
21722         s32 target_code;
21723         u8 vcm, min_vcm;
21724         u8 vcm_final = 0;
21725         u8 result_idx;
21726         s32 poll_results[8][4] = {
21727                 {0, 0, 0, 0},
21728                 {0, 0, 0, 0},
21729                 {0, 0, 0, 0},
21730                 {0, 0, 0, 0},
21731                 {0, 0, 0, 0},
21732                 {0, 0, 0, 0},
21733                 {0, 0, 0, 0},
21734                 {0, 0, 0, 0}
21735         };
21736         s32 poll_result_core[4] = { 0, 0, 0, 0 };
21737         s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
21738         s32 fine_digital_offset[4];
21739         s32 poll_results_min[4] = { 0, 0, 0, 0 };
21740         s32 min_poll;
21741         u8 vcm_level_max;
21742         u8 core;
21743         u8 wb_cnt;
21744         u8 rssi_type;
21745         u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
21746         u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
21747         u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
21748         u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
21749         u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
21750         u16 NPHY_RfctrlCmd_save;
21751         u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
21752         u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
21753         u8 rxcore_state;
21754         u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
21755         u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
21756         u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
21757         u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
21758
21759         NPHY_REV7_RfctrlOverride3_save = NPHY_REV7_RfctrlOverride4_save =
21760             NPHY_REV7_RfctrlOverride5_save = NPHY_REV7_RfctrlOverride6_save =
21761             NPHY_REV7_RfctrlMiscReg3_save = NPHY_REV7_RfctrlMiscReg4_save =
21762             NPHY_REV7_RfctrlMiscReg5_save = NPHY_REV7_RfctrlMiscReg6_save = 0;
21763
21764         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
21765         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
21766         wlc_phy_clip_det_nphy(pi, 0, clip_state);
21767         wlc_phy_clip_det_nphy(pi, 1, clip_off);
21768
21769         NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
21770         NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
21771         NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
21772         NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
21773         NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
21774         NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
21775         NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
21776         NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
21777         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21778                 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
21779                 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
21780                 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
21781                 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
21782         }
21783         NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21784         NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21785         NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
21786         NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21787         NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21788         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21789                 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
21790                 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
21791                 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
21792                 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
21793         }
21794         NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
21795         NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
21796
21797         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
21798                                          RADIO_MIMO_CORESEL_ALLRXTX);
21799         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
21800                                          RADIO_MIMO_CORESEL_ALLRXTX);
21801
21802         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21803                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
21804                                                      NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
21805                                                      0, 0, 0);
21806         } else {
21807                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
21808         }
21809
21810         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21811                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
21812                                                      NPHY_REV7_RfctrlOverride_cmd_rx_pu,
21813                                                      1, 0, 0);
21814         } else {
21815                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
21816         }
21817
21818         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21819                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
21820                                                   1, 0, 0,
21821                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
21822                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
21823                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
21824         } else {
21825                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
21826                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
21827         }
21828
21829         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21830                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21831                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
21832                                                           0, 0, 0,
21833                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21834                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 1, 0,
21835                                                           0,
21836                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21837                 } else {
21838                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
21839                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
21840                 }
21841
21842         } else {
21843                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21844                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4),
21845                                                           0, 0, 0,
21846                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21847                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 1, 0,
21848                                                           0,
21849                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21850                 } else {
21851                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
21852                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
21853                 }
21854         }
21855
21856         rxcore_state = wlc_phy_rxcore_getstate_nphy((wlc_phy_t *) pi);
21857
21858         vcm_level_max = 8;
21859
21860         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21861
21862                 if ((rxcore_state & (1 << core)) == 0)
21863                         continue;
21864
21865                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
21866                                                core ==
21867                                                PHY_CORE_0 ?
21868                                                RADIO_MIMO_CORESEL_CORE1 :
21869                                                RADIO_MIMO_CORESEL_CORE2,
21870                                                NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
21871                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
21872                                                core ==
21873                                                PHY_CORE_0 ?
21874                                                RADIO_MIMO_CORESEL_CORE1 :
21875                                                RADIO_MIMO_CORESEL_CORE2,
21876                                                NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
21877
21878                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
21879                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21880
21881                                 mod_radio_reg(pi, (core == PHY_CORE_0) ?
21882                                               RADIO_2057_NB_MASTER_CORE0 :
21883                                               RADIO_2057_NB_MASTER_CORE1,
21884                                               RADIO_2057_VCM_MASK, vcm);
21885                         } else {
21886
21887                                 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
21888                                               ((core ==
21889                                                 PHY_CORE_0) ? RADIO_2056_RX0 :
21890                                                RADIO_2056_RX1),
21891                                               RADIO_2056_VCM_MASK,
21892                                               vcm << RADIO_2056_RSSI_VCM_SHIFT);
21893                         }
21894
21895                         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
21896                                                &poll_results[vcm][0],
21897                                                NPHY_RSSICAL_NPOLL);
21898                 }
21899
21900                 for (result_idx = 0; result_idx < 4; result_idx++) {
21901                         if ((core == result_idx / 2) && (result_idx % 2 == 0)) {
21902
21903                                 min_d = NPHY_RSSICAL_MAXD;
21904                                 min_vcm = 0;
21905                                 min_poll =
21906                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL +
21907                                     1;
21908                                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
21909                                         curr_d = poll_results[vcm][result_idx] *
21910                                             poll_results[vcm][result_idx] +
21911                                             poll_results[vcm][result_idx + 1] *
21912                                             poll_results[vcm][result_idx + 1];
21913                                         if (curr_d < min_d) {
21914                                                 min_d = curr_d;
21915                                                 min_vcm = vcm;
21916                                         }
21917                                         if (poll_results[vcm][result_idx] <
21918                                             min_poll) {
21919                                                 min_poll =
21920                                                     poll_results[vcm]
21921                                                     [result_idx];
21922                                         }
21923                                 }
21924                                 vcm_final = min_vcm;
21925                                 poll_results_min[result_idx] = min_poll;
21926                         }
21927                 }
21928
21929                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21930                         mod_radio_reg(pi, (core == PHY_CORE_0) ?
21931                                       RADIO_2057_NB_MASTER_CORE0 :
21932                                       RADIO_2057_NB_MASTER_CORE1,
21933                                       RADIO_2057_VCM_MASK, vcm_final);
21934                 } else {
21935                         mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
21936                                       ((core ==
21937                                         PHY_CORE_0) ? RADIO_2056_RX0 :
21938                                        RADIO_2056_RX1), RADIO_2056_VCM_MASK,
21939                                       vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
21940                 }
21941
21942                 for (result_idx = 0; result_idx < 4; result_idx++) {
21943                         if (core == result_idx / 2) {
21944                                 fine_digital_offset[result_idx] =
21945                                     (NPHY_RSSICAL_NB_TARGET *
21946                                      NPHY_RSSICAL_NPOLL) -
21947                                     poll_results[vcm_final][result_idx];
21948                                 if (fine_digital_offset[result_idx] < 0) {
21949                                         fine_digital_offset[result_idx] =
21950                                             ABS(fine_digital_offset
21951                                                 [result_idx]);
21952                                         fine_digital_offset[result_idx] +=
21953                                             (NPHY_RSSICAL_NPOLL / 2);
21954                                         fine_digital_offset[result_idx] /=
21955                                             NPHY_RSSICAL_NPOLL;
21956                                         fine_digital_offset[result_idx] =
21957                                             -fine_digital_offset[result_idx];
21958                                 } else {
21959                                         fine_digital_offset[result_idx] +=
21960                                             (NPHY_RSSICAL_NPOLL / 2);
21961                                         fine_digital_offset[result_idx] /=
21962                                             NPHY_RSSICAL_NPOLL;
21963                                 }
21964
21965                                 if (poll_results_min[result_idx] ==
21966                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL) {
21967                                         fine_digital_offset[result_idx] =
21968                                             (NPHY_RSSICAL_NB_TARGET -
21969                                              NPHY_RSSICAL_MAXREAD - 1);
21970                                 }
21971
21972                                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
21973                                                                (s8)
21974                                                                fine_digital_offset
21975                                                                [result_idx],
21976                                                                (result_idx /
21977                                                                 2 ==
21978                                                                 0) ?
21979                                                                RADIO_MIMO_CORESEL_CORE1
21980                                                                :
21981                                                                RADIO_MIMO_CORESEL_CORE2,
21982                                                                (result_idx %
21983                                                                 2 ==
21984                                                                 0) ? NPHY_RAIL_I
21985                                                                : NPHY_RAIL_Q,
21986                                                                NPHY_RSSI_SEL_NB);
21987                         }
21988                 }
21989
21990         }
21991
21992         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21993
21994                 if ((rxcore_state & (1 << core)) == 0)
21995                         continue;
21996
21997                 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
21998                         if (wb_cnt == 0) {
21999                                 rssi_type = NPHY_RSSI_SEL_W1;
22000                                 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22001                         } else {
22002                                 rssi_type = NPHY_RSSI_SEL_W2;
22003                                 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22004                         }
22005
22006                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22007                                                        core ==
22008                                                        PHY_CORE_0 ?
22009                                                        RADIO_MIMO_CORESEL_CORE1
22010                                                        :
22011                                                        RADIO_MIMO_CORESEL_CORE2,
22012                                                        NPHY_RAIL_I, rssi_type);
22013                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22014                                                        core ==
22015                                                        PHY_CORE_0 ?
22016                                                        RADIO_MIMO_CORESEL_CORE1
22017                                                        :
22018                                                        RADIO_MIMO_CORESEL_CORE2,
22019                                                        NPHY_RAIL_Q, rssi_type);
22020
22021                         wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22022                                                NPHY_RSSICAL_NPOLL);
22023
22024                         for (result_idx = 0; result_idx < 4; result_idx++) {
22025                                 if (core == result_idx / 2) {
22026                                         fine_digital_offset[result_idx] =
22027                                             (target_code * NPHY_RSSICAL_NPOLL) -
22028                                             poll_result_core[result_idx];
22029                                         if (fine_digital_offset[result_idx] < 0) {
22030                                                 fine_digital_offset[result_idx]
22031                                                     =
22032                                                     ABS(fine_digital_offset
22033                                                         [result_idx]);
22034                                                 fine_digital_offset[result_idx]
22035                                                     += (NPHY_RSSICAL_NPOLL / 2);
22036                                                 fine_digital_offset[result_idx]
22037                                                     /= NPHY_RSSICAL_NPOLL;
22038                                                 fine_digital_offset[result_idx]
22039                                                     =
22040                                                     -fine_digital_offset
22041                                                     [result_idx];
22042                                         } else {
22043                                                 fine_digital_offset[result_idx]
22044                                                     += (NPHY_RSSICAL_NPOLL / 2);
22045                                                 fine_digital_offset[result_idx]
22046                                                     /= NPHY_RSSICAL_NPOLL;
22047                                         }
22048
22049                                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22050                                                                        (s8)
22051                                                                        fine_digital_offset
22052                                                                        [core *
22053                                                                         2],
22054                                                                        (core ==
22055                                                                         PHY_CORE_0)
22056                                                                        ?
22057                                                                        RADIO_MIMO_CORESEL_CORE1
22058                                                                        :
22059                                                                        RADIO_MIMO_CORESEL_CORE2,
22060                                                                        (result_idx
22061                                                                         % 2 ==
22062                                                                         0) ?
22063                                                                        NPHY_RAIL_I
22064                                                                        :
22065                                                                        NPHY_RAIL_Q,
22066                                                                        rssi_type);
22067                                 }
22068                         }
22069
22070                 }
22071         }
22072
22073         write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22074         write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22075
22076         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22077
22078         mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22079         mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22080         mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22081
22082         mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22083         mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22084         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22085
22086         write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22087         write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22088         write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22089         write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22090         write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22091         write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22092         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22093                 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22094                 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22095                 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22096                 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22097         }
22098         write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22099         write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22100         write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22101         write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22102         write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22103         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22104                 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22105                 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22106                 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22107                 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22108         }
22109         write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22110         write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22111
22112         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22113                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22114                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22115                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22116                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22117                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22118                 } else {
22119                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22120                             read_radio_reg(pi,
22121                                            RADIO_2056_RX_RSSI_MISC |
22122                                            RADIO_2056_RX0);
22123                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22124                             read_radio_reg(pi,
22125                                            RADIO_2056_RX_RSSI_MISC |
22126                                            RADIO_2056_RX1);
22127                 }
22128
22129                 pi->rssical_cache.rssical_phyregs_2G[0] =
22130                     read_phy_reg(pi, 0x1a6);
22131                 pi->rssical_cache.rssical_phyregs_2G[1] =
22132                     read_phy_reg(pi, 0x1ac);
22133                 pi->rssical_cache.rssical_phyregs_2G[2] =
22134                     read_phy_reg(pi, 0x1b2);
22135                 pi->rssical_cache.rssical_phyregs_2G[3] =
22136                     read_phy_reg(pi, 0x1b8);
22137                 pi->rssical_cache.rssical_phyregs_2G[4] =
22138                     read_phy_reg(pi, 0x1a4);
22139                 pi->rssical_cache.rssical_phyregs_2G[5] =
22140                     read_phy_reg(pi, 0x1aa);
22141                 pi->rssical_cache.rssical_phyregs_2G[6] =
22142                     read_phy_reg(pi, 0x1b0);
22143                 pi->rssical_cache.rssical_phyregs_2G[7] =
22144                     read_phy_reg(pi, 0x1b6);
22145                 pi->rssical_cache.rssical_phyregs_2G[8] =
22146                     read_phy_reg(pi, 0x1a5);
22147                 pi->rssical_cache.rssical_phyregs_2G[9] =
22148                     read_phy_reg(pi, 0x1ab);
22149                 pi->rssical_cache.rssical_phyregs_2G[10] =
22150                     read_phy_reg(pi, 0x1b1);
22151                 pi->rssical_cache.rssical_phyregs_2G[11] =
22152                     read_phy_reg(pi, 0x1b7);
22153
22154                 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22155         } else {
22156                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22157                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22158                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22159                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22160                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22161                 } else {
22162                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22163                             read_radio_reg(pi,
22164                                            RADIO_2056_RX_RSSI_MISC |
22165                                            RADIO_2056_RX0);
22166                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22167                             read_radio_reg(pi,
22168                                            RADIO_2056_RX_RSSI_MISC |
22169                                            RADIO_2056_RX1);
22170                 }
22171
22172                 pi->rssical_cache.rssical_phyregs_5G[0] =
22173                     read_phy_reg(pi, 0x1a6);
22174                 pi->rssical_cache.rssical_phyregs_5G[1] =
22175                     read_phy_reg(pi, 0x1ac);
22176                 pi->rssical_cache.rssical_phyregs_5G[2] =
22177                     read_phy_reg(pi, 0x1b2);
22178                 pi->rssical_cache.rssical_phyregs_5G[3] =
22179                     read_phy_reg(pi, 0x1b8);
22180                 pi->rssical_cache.rssical_phyregs_5G[4] =
22181                     read_phy_reg(pi, 0x1a4);
22182                 pi->rssical_cache.rssical_phyregs_5G[5] =
22183                     read_phy_reg(pi, 0x1aa);
22184                 pi->rssical_cache.rssical_phyregs_5G[6] =
22185                     read_phy_reg(pi, 0x1b0);
22186                 pi->rssical_cache.rssical_phyregs_5G[7] =
22187                     read_phy_reg(pi, 0x1b6);
22188                 pi->rssical_cache.rssical_phyregs_5G[8] =
22189                     read_phy_reg(pi, 0x1a5);
22190                 pi->rssical_cache.rssical_phyregs_5G[9] =
22191                     read_phy_reg(pi, 0x1ab);
22192                 pi->rssical_cache.rssical_phyregs_5G[10] =
22193                     read_phy_reg(pi, 0x1b1);
22194                 pi->rssical_cache.rssical_phyregs_5G[11] =
22195                     read_phy_reg(pi, 0x1b7);
22196
22197                 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22198         }
22199
22200         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22201         wlc_phy_clip_det_nphy(pi, 1, clip_state);
22202 }
22203
22204 static void wlc_phy_restore_rssical_nphy(phy_info_t *pi)
22205 {
22206         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22207                 if (pi->nphy_rssical_chanspec_2G == 0)
22208                         return;
22209
22210                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22211                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
22212                                       RADIO_2057_VCM_MASK,
22213                                       pi->rssical_cache.
22214                                       rssical_radio_regs_2G[0]);
22215                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
22216                                       RADIO_2057_VCM_MASK,
22217                                       pi->rssical_cache.
22218                                       rssical_radio_regs_2G[1]);
22219                 } else {
22220                         mod_radio_reg(pi,
22221                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
22222                                       RADIO_2056_VCM_MASK,
22223                                       pi->rssical_cache.
22224                                       rssical_radio_regs_2G[0]);
22225                         mod_radio_reg(pi,
22226                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
22227                                       RADIO_2056_VCM_MASK,
22228                                       pi->rssical_cache.
22229                                       rssical_radio_regs_2G[1]);
22230                 }
22231
22232                 write_phy_reg(pi, 0x1a6,
22233                               pi->rssical_cache.rssical_phyregs_2G[0]);
22234                 write_phy_reg(pi, 0x1ac,
22235                               pi->rssical_cache.rssical_phyregs_2G[1]);
22236                 write_phy_reg(pi, 0x1b2,
22237                               pi->rssical_cache.rssical_phyregs_2G[2]);
22238                 write_phy_reg(pi, 0x1b8,
22239                               pi->rssical_cache.rssical_phyregs_2G[3]);
22240                 write_phy_reg(pi, 0x1a4,
22241                               pi->rssical_cache.rssical_phyregs_2G[4]);
22242                 write_phy_reg(pi, 0x1aa,
22243                               pi->rssical_cache.rssical_phyregs_2G[5]);
22244                 write_phy_reg(pi, 0x1b0,
22245                               pi->rssical_cache.rssical_phyregs_2G[6]);
22246                 write_phy_reg(pi, 0x1b6,
22247                               pi->rssical_cache.rssical_phyregs_2G[7]);
22248                 write_phy_reg(pi, 0x1a5,
22249                               pi->rssical_cache.rssical_phyregs_2G[8]);
22250                 write_phy_reg(pi, 0x1ab,
22251                               pi->rssical_cache.rssical_phyregs_2G[9]);
22252                 write_phy_reg(pi, 0x1b1,
22253                               pi->rssical_cache.rssical_phyregs_2G[10]);
22254                 write_phy_reg(pi, 0x1b7,
22255                               pi->rssical_cache.rssical_phyregs_2G[11]);
22256
22257         } else {
22258                 if (pi->nphy_rssical_chanspec_5G == 0)
22259                         return;
22260
22261                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22262                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
22263                                       RADIO_2057_VCM_MASK,
22264                                       pi->rssical_cache.
22265                                       rssical_radio_regs_5G[0]);
22266                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
22267                                       RADIO_2057_VCM_MASK,
22268                                       pi->rssical_cache.
22269                                       rssical_radio_regs_5G[1]);
22270                 } else {
22271                         mod_radio_reg(pi,
22272                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
22273                                       RADIO_2056_VCM_MASK,
22274                                       pi->rssical_cache.
22275                                       rssical_radio_regs_5G[0]);
22276                         mod_radio_reg(pi,
22277                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
22278                                       RADIO_2056_VCM_MASK,
22279                                       pi->rssical_cache.
22280                                       rssical_radio_regs_5G[1]);
22281                 }
22282
22283                 write_phy_reg(pi, 0x1a6,
22284                               pi->rssical_cache.rssical_phyregs_5G[0]);
22285                 write_phy_reg(pi, 0x1ac,
22286                               pi->rssical_cache.rssical_phyregs_5G[1]);
22287                 write_phy_reg(pi, 0x1b2,
22288                               pi->rssical_cache.rssical_phyregs_5G[2]);
22289                 write_phy_reg(pi, 0x1b8,
22290                               pi->rssical_cache.rssical_phyregs_5G[3]);
22291                 write_phy_reg(pi, 0x1a4,
22292                               pi->rssical_cache.rssical_phyregs_5G[4]);
22293                 write_phy_reg(pi, 0x1aa,
22294                               pi->rssical_cache.rssical_phyregs_5G[5]);
22295                 write_phy_reg(pi, 0x1b0,
22296                               pi->rssical_cache.rssical_phyregs_5G[6]);
22297                 write_phy_reg(pi, 0x1b6,
22298                               pi->rssical_cache.rssical_phyregs_5G[7]);
22299                 write_phy_reg(pi, 0x1a5,
22300                               pi->rssical_cache.rssical_phyregs_5G[8]);
22301                 write_phy_reg(pi, 0x1ab,
22302                               pi->rssical_cache.rssical_phyregs_5G[9]);
22303                 write_phy_reg(pi, 0x1b1,
22304                               pi->rssical_cache.rssical_phyregs_5G[10]);
22305                 write_phy_reg(pi, 0x1b7,
22306                               pi->rssical_cache.rssical_phyregs_5G[11]);
22307         }
22308 }
22309
22310 static u16
22311 wlc_phy_gen_load_samples_nphy(phy_info_t *pi, u32 f_kHz, u16 max_val,
22312                               u8 dac_test_mode)
22313 {
22314         u8 phy_bw, is_phybw40;
22315         u16 num_samps, t, spur;
22316         fixed theta = 0, rot = 0;
22317         u32 tbl_len;
22318         cs32 *tone_buf = NULL;
22319
22320         is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
22321         phy_bw = (is_phybw40 == 1) ? 40 : 20;
22322         tbl_len = (phy_bw << 3);
22323
22324         if (dac_test_mode == 1) {
22325                 spur = read_phy_reg(pi, 0x01);
22326                 spur = (spur >> 15) & 1;
22327                 phy_bw = (spur == 1) ? 82 : 80;
22328                 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
22329
22330                 tbl_len = (phy_bw << 1);
22331         }
22332
22333         tone_buf = kmalloc(sizeof(cs32) * tbl_len, GFP_ATOMIC);
22334         if (tone_buf == NULL) {
22335                 return 0;
22336         }
22337
22338         num_samps = (u16) tbl_len;
22339         rot = FIXED((f_kHz * 36) / phy_bw) / 100;
22340         theta = 0;
22341
22342         for (t = 0; t < num_samps; t++) {
22343
22344                 wlc_phy_cordic(theta, &tone_buf[t]);
22345
22346                 theta += rot;
22347
22348                 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
22349                 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
22350         }
22351
22352         wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
22353
22354         kfree(tone_buf);
22355
22356         return num_samps;
22357 }
22358
22359 int
22360 wlc_phy_tx_tone_nphy(phy_info_t *pi, u32 f_kHz, u16 max_val,
22361                      u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
22362 {
22363         u16 num_samps;
22364         u16 loops = 0xffff;
22365         u16 wait = 0;
22366
22367         num_samps =
22368                 wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val, dac_test_mode);
22369         if (num_samps == 0) {
22370                 return -EBADE;
22371         }
22372
22373         wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
22374                                 dac_test_mode, modify_bbmult);
22375
22376         return 0;
22377 }
22378
22379 static void
22380 wlc_phy_loadsampletable_nphy(phy_info_t *pi, cs32 *tone_buf,
22381                              u16 num_samps)
22382 {
22383         u16 t;
22384         u32 *data_buf = NULL;
22385
22386         data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
22387         if (data_buf == NULL) {
22388                 return;
22389         }
22390
22391         if (pi->phyhang_avoid)
22392                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22393
22394         for (t = 0; t < num_samps; t++) {
22395                 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
22396                     (((unsigned int)tone_buf[t].q) & 0x3ff);
22397         }
22398         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
22399                                  data_buf);
22400
22401         kfree(data_buf);
22402
22403         if (pi->phyhang_avoid)
22404                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22405 }
22406
22407 static void
22408 wlc_phy_runsamples_nphy(phy_info_t *pi, u16 num_samps, u16 loops,
22409                         u16 wait, u8 iqmode, u8 dac_test_mode,
22410                         bool modify_bbmult)
22411 {
22412         u16 bb_mult;
22413         u8 phy_bw, sample_cmd;
22414         u16 orig_RfseqCoreActv;
22415         u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
22416             lpf_bw_ctl_miscreg4;
22417
22418         if (pi->phyhang_avoid)
22419                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22420
22421         phy_bw = 20;
22422         if (CHSPEC_IS40(pi->radio_chanspec))
22423                 phy_bw = 40;
22424
22425         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22426
22427                 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
22428                 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
22429                 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
22430                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
22431                             (0x7 << 8);
22432                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
22433                             (0x7 << 8);
22434                 } else {
22435                         wlc_phy_rfctrl_override_nphy_rev7(pi,
22436                                                           (0x1 << 7),
22437                                                           wlc_phy_read_lpf_bw_ctl_nphy
22438                                                           (pi, 0), 0, 0,
22439                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
22440
22441                         pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
22442
22443                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
22444                             (0x7 << 8);
22445                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
22446                             (0x7 << 8);
22447                 }
22448         }
22449
22450         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
22451
22452                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22453                                         &bb_mult);
22454                 pi->nphy_bb_mult_save =
22455                     BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
22456         }
22457
22458         if (modify_bbmult) {
22459                 bb_mult = (phy_bw == 20) ? 100 : 71;
22460                 bb_mult = (bb_mult << 8) + bb_mult;
22461                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22462                                          &bb_mult);
22463         }
22464
22465         if (pi->phyhang_avoid)
22466                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22467
22468         write_phy_reg(pi, 0xc6, num_samps - 1);
22469
22470         if (loops != 0xffff) {
22471                 write_phy_reg(pi, 0xc4, loops - 1);
22472         } else {
22473                 write_phy_reg(pi, 0xc4, loops);
22474         }
22475         write_phy_reg(pi, 0xc5, wait);
22476
22477         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
22478         or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
22479         if (iqmode) {
22480
22481                 and_phy_reg(pi, 0xc2, 0x7FFF);
22482
22483                 or_phy_reg(pi, 0xc2, 0x8000);
22484         } else {
22485
22486                 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
22487                 write_phy_reg(pi, 0xc3, sample_cmd);
22488         }
22489
22490         SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
22491
22492         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
22493 }
22494
22495 void wlc_phy_stopplayback_nphy(phy_info_t *pi)
22496 {
22497         u16 playback_status;
22498         u16 bb_mult;
22499
22500         if (pi->phyhang_avoid)
22501                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22502
22503         playback_status = read_phy_reg(pi, 0xc7);
22504         if (playback_status & 0x1) {
22505                 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
22506         } else if (playback_status & 0x2) {
22507
22508                 and_phy_reg(pi, 0xc2,
22509                             (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
22510         }
22511
22512         and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
22513
22514         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
22515
22516                 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
22517                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22518                                          &bb_mult);
22519
22520                 pi->nphy_bb_mult_save = 0;
22521         }
22522
22523         if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
22524                 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
22525                         wlc_phy_rfctrl_override_nphy_rev7(pi,
22526                                                           (0x1 << 7),
22527                                                           0, 0, 1,
22528                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
22529                         pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
22530                 }
22531         }
22532
22533         if (pi->phyhang_avoid)
22534                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22535 }
22536
22537 nphy_txgains_t wlc_phy_get_tx_gain_nphy(phy_info_t *pi)
22538 {
22539         u16 base_idx[2], curr_gain[2];
22540         u8 core_no;
22541         nphy_txgains_t target_gain;
22542         u32 *tx_pwrctrl_tbl = NULL;
22543
22544         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
22545                 if (pi->phyhang_avoid)
22546                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
22547
22548                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
22549                                         curr_gain);
22550
22551                 if (pi->phyhang_avoid)
22552                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
22553
22554                 for (core_no = 0; core_no < 2; core_no++) {
22555                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22556                                 target_gain.ipa[core_no] =
22557                                     curr_gain[core_no] & 0x0007;
22558                                 target_gain.pad[core_no] =
22559                                     ((curr_gain[core_no] & 0x00F8) >> 3);
22560                                 target_gain.pga[core_no] =
22561                                     ((curr_gain[core_no] & 0x0F00) >> 8);
22562                                 target_gain.txgm[core_no] =
22563                                     ((curr_gain[core_no] & 0x7000) >> 12);
22564                                 target_gain.txlpf[core_no] =
22565                                     ((curr_gain[core_no] & 0x8000) >> 15);
22566                         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22567                                 target_gain.ipa[core_no] =
22568                                     curr_gain[core_no] & 0x000F;
22569                                 target_gain.pad[core_no] =
22570                                     ((curr_gain[core_no] & 0x00F0) >> 4);
22571                                 target_gain.pga[core_no] =
22572                                     ((curr_gain[core_no] & 0x0F00) >> 8);
22573                                 target_gain.txgm[core_no] =
22574                                     ((curr_gain[core_no] & 0x7000) >> 12);
22575                         } else {
22576                                 target_gain.ipa[core_no] =
22577                                     curr_gain[core_no] & 0x0003;
22578                                 target_gain.pad[core_no] =
22579                                     ((curr_gain[core_no] & 0x000C) >> 2);
22580                                 target_gain.pga[core_no] =
22581                                     ((curr_gain[core_no] & 0x0070) >> 4);
22582                                 target_gain.txgm[core_no] =
22583                                     ((curr_gain[core_no] & 0x0380) >> 7);
22584                         }
22585                 }
22586         } else {
22587                 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
22588                 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
22589                 for (core_no = 0; core_no < 2; core_no++) {
22590                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22591                                 if (PHY_IPA(pi)) {
22592                                         tx_pwrctrl_tbl =
22593                                             wlc_phy_get_ipa_gaintbl_nphy(pi);
22594                                 } else {
22595                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22596                                                 if NREV_IS
22597                                                         (pi->pubpi.phy_rev, 3) {
22598                                                         tx_pwrctrl_tbl =
22599                                                             nphy_tpc_5GHz_txgain_rev3;
22600                                                 } else if NREV_IS
22601                                                         (pi->pubpi.phy_rev, 4) {
22602                                                         tx_pwrctrl_tbl =
22603                                                             (pi->srom_fem5g.
22604                                                              extpagain ==
22605                                                              3) ?
22606                                                             nphy_tpc_5GHz_txgain_HiPwrEPA
22607                                                             :
22608                                                             nphy_tpc_5GHz_txgain_rev4;
22609                                                 } else {
22610                                                         tx_pwrctrl_tbl =
22611                                                             nphy_tpc_5GHz_txgain_rev5;
22612                                                 }
22613                                         } else {
22614                                                 if (NREV_GE
22615                                                     (pi->pubpi.phy_rev, 7)) {
22616                                                         if (pi->pubpi.
22617                                                             radiorev == 3) {
22618                                                                 tx_pwrctrl_tbl =
22619                                                                     nphy_tpc_txgain_epa_2057rev3;
22620                                                         } else if (pi->pubpi.
22621                                                                    radiorev ==
22622                                                                    5) {
22623                                                                 tx_pwrctrl_tbl =
22624                                                                     nphy_tpc_txgain_epa_2057rev5;
22625                                                         }
22626
22627                                                 } else {
22628                                                         if (NREV_GE
22629                                                             (pi->pubpi.phy_rev,
22630                                                              5)
22631                                                             && (pi->srom_fem2g.
22632                                                                 extpagain ==
22633                                                                 3)) {
22634                                                                 tx_pwrctrl_tbl =
22635                                                                     nphy_tpc_txgain_HiPwrEPA;
22636                                                         } else {
22637                                                                 tx_pwrctrl_tbl =
22638                                                                     nphy_tpc_txgain_rev3;
22639                                                         }
22640                                                 }
22641                                         }
22642                                 }
22643                                 if NREV_GE
22644                                         (pi->pubpi.phy_rev, 7) {
22645                                         target_gain.ipa[core_no] =
22646                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22647                                              >> 16) & 0x7;
22648                                         target_gain.pad[core_no] =
22649                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22650                                              >> 19) & 0x1f;
22651                                         target_gain.pga[core_no] =
22652                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22653                                              >> 24) & 0xf;
22654                                         target_gain.txgm[core_no] =
22655                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22656                                              >> 28) & 0x7;
22657                                         target_gain.txlpf[core_no] =
22658                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22659                                              >> 31) & 0x1;
22660                                 } else {
22661                                         target_gain.ipa[core_no] =
22662                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22663                                              >> 16) & 0xf;
22664                                         target_gain.pad[core_no] =
22665                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22666                                              >> 20) & 0xf;
22667                                         target_gain.pga[core_no] =
22668                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22669                                              >> 24) & 0xf;
22670                                         target_gain.txgm[core_no] =
22671                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22672                                              >> 28) & 0x7;
22673                                 }
22674                         } else {
22675                                 target_gain.ipa[core_no] =
22676                                     (nphy_tpc_txgain[base_idx[core_no]] >> 16) &
22677                                     0x3;
22678                                 target_gain.pad[core_no] =
22679                                     (nphy_tpc_txgain[base_idx[core_no]] >> 18) &
22680                                     0x3;
22681                                 target_gain.pga[core_no] =
22682                                     (nphy_tpc_txgain[base_idx[core_no]] >> 20) &
22683                                     0x7;
22684                                 target_gain.txgm[core_no] =
22685                                     (nphy_tpc_txgain[base_idx[core_no]] >> 23) &
22686                                     0x7;
22687                         }
22688                 }
22689         }
22690
22691         return target_gain;
22692 }
22693
22694 static void
22695 wlc_phy_iqcal_gainparams_nphy(phy_info_t *pi, u16 core_no,
22696                               nphy_txgains_t target_gain,
22697                               nphy_iqcal_params_t *params)
22698 {
22699         u8 k;
22700         int idx;
22701         u16 gain_index;
22702         u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
22703
22704         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22705                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22706                         params->txlpf = target_gain.txlpf[core_no];
22707                 }
22708                 params->txgm = target_gain.txgm[core_no];
22709                 params->pga = target_gain.pga[core_no];
22710                 params->pad = target_gain.pad[core_no];
22711                 params->ipa = target_gain.ipa[core_no];
22712                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22713                         params->cal_gain =
22714                             ((params->txlpf << 15) | (params->
22715                                                       txgm << 12) | (params->
22716                                                                      pga << 8) |
22717                              (params->pad << 3) | (params->ipa));
22718                 } else {
22719                         params->cal_gain =
22720                             ((params->txgm << 12) | (params->
22721                                                      pga << 8) | (params->
22722                                                                   pad << 4) |
22723                              (params->ipa));
22724                 }
22725                 params->ncorr[0] = 0x79;
22726                 params->ncorr[1] = 0x79;
22727                 params->ncorr[2] = 0x79;
22728                 params->ncorr[3] = 0x79;
22729                 params->ncorr[4] = 0x79;
22730         } else {
22731
22732                 gain_index = ((target_gain.pad[core_no] << 0) |
22733                               (target_gain.pga[core_no] << 4) | (target_gain.
22734                                                                  txgm[core_no]
22735                                                                  << 8));
22736
22737                 idx = -1;
22738                 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
22739                         if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
22740                             gain_index) {
22741                                 idx = k;
22742                                 break;
22743                         }
22744                 }
22745
22746                 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
22747                 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
22748                 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
22749                 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
22750                                     (params->pad << 2));
22751                 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
22752                 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
22753                 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
22754                 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
22755         }
22756 }
22757
22758 static void wlc_phy_txcal_radio_setup_nphy(phy_info_t *pi)
22759 {
22760         u16 jtag_core, core;
22761
22762         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22763
22764                 for (core = 0; core <= 1; core++) {
22765
22766                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
22767                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22768                                             TX_SSI_MASTER);
22769
22770                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
22771                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22772                                             IQCAL_VCM_HG);
22773
22774                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
22775                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22776                                             IQCAL_IDAC);
22777
22778                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
22779                             READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM);
22780
22781                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
22782
22783                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
22784                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22785                                             TX_SSI_MUX);
22786
22787                         if (pi->pubpi.radiorev != 5)
22788                                 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
22789                                     READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22790                                                     TSSIA);
22791
22792                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
22793                             READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
22794
22795                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
22796                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22797                                             TSSI_MISC1);
22798
22799                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22800                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22801                                                  TX_SSI_MASTER, 0x0a);
22802                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22803                                                  IQCAL_VCM_HG, 0x43);
22804                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22805                                                  IQCAL_IDAC, 0x55);
22806                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22807                                                  TSSI_VCM, 0x00);
22808                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22809                                                  TSSIG, 0x00);
22810                                 if (pi->use_int_tx_iqlo_cal_nphy) {
22811                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22812                                                          core, TX_SSI_MUX, 0x4);
22813                                         if (!
22814                                             (pi->
22815                                              internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
22816
22817                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22818                                                                  TX, core,
22819                                                                  TSSIA, 0x31);
22820                                         } else {
22821
22822                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22823                                                                  TX, core,
22824                                                                  TSSIA, 0x21);
22825                                         }
22826                                 }
22827                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22828                                                  TSSI_MISC1, 0x00);
22829                         } else {
22830                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22831                                                  TX_SSI_MASTER, 0x06);
22832                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22833                                                  IQCAL_VCM_HG, 0x43);
22834                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22835                                                  IQCAL_IDAC, 0x55);
22836                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22837                                                  TSSI_VCM, 0x00);
22838
22839                                 if (pi->pubpi.radiorev != 5)
22840                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22841                                                          core, TSSIA, 0x00);
22842                                 if (pi->use_int_tx_iqlo_cal_nphy) {
22843                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22844                                                          core, TX_SSI_MUX,
22845                                                          0x06);
22846                                         if (!
22847                                             (pi->
22848                                              internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
22849
22850                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22851                                                                  TX, core,
22852                                                                  TSSIG, 0x31);
22853                                         } else {
22854
22855                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22856                                                                  TX, core,
22857                                                                  TSSIG, 0x21);
22858                                         }
22859                                 }
22860                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22861                                                  TSSI_MISC1, 0x00);
22862                         }
22863                 }
22864         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22865
22866                 for (core = 0; core <= 1; core++) {
22867                         jtag_core =
22868                             (core ==
22869                              PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
22870
22871                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
22872                             read_radio_reg(pi,
22873                                            RADIO_2056_TX_TX_SSI_MASTER |
22874                                            jtag_core);
22875
22876                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
22877                             read_radio_reg(pi,
22878                                            RADIO_2056_TX_IQCAL_VCM_HG |
22879                                            jtag_core);
22880
22881                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
22882                             read_radio_reg(pi,
22883                                            RADIO_2056_TX_IQCAL_IDAC |
22884                                            jtag_core);
22885
22886                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
22887                             read_radio_reg(pi,
22888                                            RADIO_2056_TX_TSSI_VCM | jtag_core);
22889
22890                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
22891                             read_radio_reg(pi,
22892                                            RADIO_2056_TX_TX_AMP_DET |
22893                                            jtag_core);
22894
22895                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
22896                             read_radio_reg(pi,
22897                                            RADIO_2056_TX_TX_SSI_MUX |
22898                                            jtag_core);
22899
22900                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
22901                             read_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core);
22902
22903                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
22904                             read_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core);
22905
22906                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
22907                             read_radio_reg(pi,
22908                                            RADIO_2056_TX_TSSI_MISC1 |
22909                                            jtag_core);
22910
22911                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
22912                             read_radio_reg(pi,
22913                                            RADIO_2056_TX_TSSI_MISC2 |
22914                                            jtag_core);
22915
22916                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
22917                             read_radio_reg(pi,
22918                                            RADIO_2056_TX_TSSI_MISC3 |
22919                                            jtag_core);
22920
22921                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22922                                 write_radio_reg(pi,
22923                                                 RADIO_2056_TX_TX_SSI_MASTER |
22924                                                 jtag_core, 0x0a);
22925                                 write_radio_reg(pi,
22926                                                 RADIO_2056_TX_IQCAL_VCM_HG |
22927                                                 jtag_core, 0x40);
22928                                 write_radio_reg(pi,
22929                                                 RADIO_2056_TX_IQCAL_IDAC |
22930                                                 jtag_core, 0x55);
22931                                 write_radio_reg(pi,
22932                                                 RADIO_2056_TX_TSSI_VCM |
22933                                                 jtag_core, 0x00);
22934                                 write_radio_reg(pi,
22935                                                 RADIO_2056_TX_TX_AMP_DET |
22936                                                 jtag_core, 0x00);
22937
22938                                 if (PHY_IPA(pi)) {
22939                                         write_radio_reg(pi,
22940                                                         RADIO_2056_TX_TX_SSI_MUX
22941                                                         | jtag_core, 0x4);
22942                                         write_radio_reg(pi,
22943                                                         RADIO_2056_TX_TSSIA |
22944                                                         jtag_core, 0x1);
22945                                 } else {
22946                                         write_radio_reg(pi,
22947                                                         RADIO_2056_TX_TX_SSI_MUX
22948                                                         | jtag_core, 0x00);
22949                                         write_radio_reg(pi,
22950                                                         RADIO_2056_TX_TSSIA |
22951                                                         jtag_core, 0x2f);
22952                                 }
22953                                 write_radio_reg(pi,
22954                                                 RADIO_2056_TX_TSSIG | jtag_core,
22955                                                 0x00);
22956                                 write_radio_reg(pi,
22957                                                 RADIO_2056_TX_TSSI_MISC1 |
22958                                                 jtag_core, 0x00);
22959
22960                                 write_radio_reg(pi,
22961                                                 RADIO_2056_TX_TSSI_MISC2 |
22962                                                 jtag_core, 0x00);
22963                                 write_radio_reg(pi,
22964                                                 RADIO_2056_TX_TSSI_MISC3 |
22965                                                 jtag_core, 0x00);
22966                         } else {
22967                                 write_radio_reg(pi,
22968                                                 RADIO_2056_TX_TX_SSI_MASTER |
22969                                                 jtag_core, 0x06);
22970                                 write_radio_reg(pi,
22971                                                 RADIO_2056_TX_IQCAL_VCM_HG |
22972                                                 jtag_core, 0x40);
22973                                 write_radio_reg(pi,
22974                                                 RADIO_2056_TX_IQCAL_IDAC |
22975                                                 jtag_core, 0x55);
22976                                 write_radio_reg(pi,
22977                                                 RADIO_2056_TX_TSSI_VCM |
22978                                                 jtag_core, 0x00);
22979                                 write_radio_reg(pi,
22980                                                 RADIO_2056_TX_TX_AMP_DET |
22981                                                 jtag_core, 0x00);
22982                                 write_radio_reg(pi,
22983                                                 RADIO_2056_TX_TSSIA | jtag_core,
22984                                                 0x00);
22985
22986                                 if (PHY_IPA(pi)) {
22987
22988                                         write_radio_reg(pi,
22989                                                         RADIO_2056_TX_TX_SSI_MUX
22990                                                         | jtag_core, 0x06);
22991                                         if (NREV_LT(pi->pubpi.phy_rev, 5)) {
22992
22993                                                 write_radio_reg(pi,
22994                                                                 RADIO_2056_TX_TSSIG
22995                                                                 | jtag_core,
22996                                                                 0x11);
22997                                         } else {
22998
22999                                                 write_radio_reg(pi,
23000                                                                 RADIO_2056_TX_TSSIG
23001                                                                 | jtag_core,
23002                                                                 0x1);
23003                                         }
23004                                 } else {
23005                                         write_radio_reg(pi,
23006                                                         RADIO_2056_TX_TX_SSI_MUX
23007                                                         | jtag_core, 0x00);
23008                                         write_radio_reg(pi,
23009                                                         RADIO_2056_TX_TSSIG |
23010                                                         jtag_core, 0x20);
23011                                 }
23012
23013                                 write_radio_reg(pi,
23014                                                 RADIO_2056_TX_TSSI_MISC1 |
23015                                                 jtag_core, 0x00);
23016                                 write_radio_reg(pi,
23017                                                 RADIO_2056_TX_TSSI_MISC2 |
23018                                                 jtag_core, 0x00);
23019                                 write_radio_reg(pi,
23020                                                 RADIO_2056_TX_TSSI_MISC3 |
23021                                                 jtag_core, 0x00);
23022                         }
23023                 }
23024         } else {
23025
23026                 pi->tx_rx_cal_radio_saveregs[0] =
23027                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23028                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23029                 pi->tx_rx_cal_radio_saveregs[1] =
23030                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23031                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23032
23033                 pi->tx_rx_cal_radio_saveregs[2] =
23034                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23035                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23036                 pi->tx_rx_cal_radio_saveregs[3] =
23037                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23038                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23039
23040                 pi->tx_rx_cal_radio_saveregs[4] =
23041                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23042                 pi->tx_rx_cal_radio_saveregs[5] =
23043                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23044
23045                 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23046                     0) {
23047
23048                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23049                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23050                 } else {
23051
23052                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23053                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23054                 }
23055
23056                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23057
23058                         or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23059                         or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23060                 } else {
23061
23062                         and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23063                         and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23064                 }
23065         }
23066 }
23067
23068 static void wlc_phy_txcal_radio_cleanup_nphy(phy_info_t *pi)
23069 {
23070         u16 jtag_core, core;
23071
23072         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23073                 for (core = 0; core <= 1; core++) {
23074
23075                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23076                                          TX_SSI_MASTER,
23077                                          pi->
23078                                          tx_rx_cal_radio_saveregs[(core * 11) +
23079                                                                   0]);
23080
23081                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23082                                          pi->
23083                                          tx_rx_cal_radio_saveregs[(core * 11) +
23084                                                                   1]);
23085
23086                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23087                                          pi->
23088                                          tx_rx_cal_radio_saveregs[(core * 11) +
23089                                                                   2]);
23090
23091                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23092                                          pi->
23093                                          tx_rx_cal_radio_saveregs[(core * 11) +
23094                                                                   3]);
23095
23096                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23097                                          pi->
23098                                          tx_rx_cal_radio_saveregs[(core * 11) +
23099                                                                   5]);
23100
23101                         if (pi->pubpi.radiorev != 5)
23102                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23103                                                  TSSIA,
23104                                                  pi->
23105                                                  tx_rx_cal_radio_saveregs[(core
23106                                                                            *
23107                                                                            11) +
23108                                                                           6]);
23109
23110                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23111                                          pi->
23112                                          tx_rx_cal_radio_saveregs[(core * 11) +
23113                                                                   7]);
23114
23115                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23116                                          pi->
23117                                          tx_rx_cal_radio_saveregs[(core * 11) +
23118                                                                   8]);
23119                 }
23120         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23121                 for (core = 0; core <= 1; core++) {
23122                         jtag_core =
23123                             (core ==
23124                              PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23125
23126                         write_radio_reg(pi,
23127                                         RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23128                                         pi->
23129                                         tx_rx_cal_radio_saveregs[(core * 11) +
23130                                                                  0]);
23131
23132                         write_radio_reg(pi,
23133                                         RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23134                                         pi->
23135                                         tx_rx_cal_radio_saveregs[(core * 11) +
23136                                                                  1]);
23137
23138                         write_radio_reg(pi,
23139                                         RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23140                                         pi->
23141                                         tx_rx_cal_radio_saveregs[(core * 11) +
23142                                                                  2]);
23143
23144                         write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23145                                         pi->
23146                                         tx_rx_cal_radio_saveregs[(core * 11) +
23147                                                                  3]);
23148
23149                         write_radio_reg(pi,
23150                                         RADIO_2056_TX_TX_AMP_DET | jtag_core,
23151                                         pi->
23152                                         tx_rx_cal_radio_saveregs[(core * 11) +
23153                                                                  4]);
23154
23155                         write_radio_reg(pi,
23156                                         RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23157                                         pi->
23158                                         tx_rx_cal_radio_saveregs[(core * 11) +
23159                                                                  5]);
23160
23161                         write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23162                                         pi->
23163                                         tx_rx_cal_radio_saveregs[(core * 11) +
23164                                                                  6]);
23165
23166                         write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23167                                         pi->
23168                                         tx_rx_cal_radio_saveregs[(core * 11) +
23169                                                                  7]);
23170
23171                         write_radio_reg(pi,
23172                                         RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23173                                         pi->
23174                                         tx_rx_cal_radio_saveregs[(core * 11) +
23175                                                                  8]);
23176
23177                         write_radio_reg(pi,
23178                                         RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23179                                         pi->
23180                                         tx_rx_cal_radio_saveregs[(core * 11) +
23181                                                                  9]);
23182
23183                         write_radio_reg(pi,
23184                                         RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23185                                         pi->
23186                                         tx_rx_cal_radio_saveregs[(core * 11) +
23187                                                                  10]);
23188                 }
23189         } else {
23190
23191                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23192                                 pi->tx_rx_cal_radio_saveregs[0]);
23193                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23194                                 pi->tx_rx_cal_radio_saveregs[1]);
23195                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23196                                 pi->tx_rx_cal_radio_saveregs[2]);
23197                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23198                                 pi->tx_rx_cal_radio_saveregs[3]);
23199                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23200                                 pi->tx_rx_cal_radio_saveregs[4]);
23201                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23202                                 pi->tx_rx_cal_radio_saveregs[5]);
23203         }
23204 }
23205
23206 static void wlc_phy_txcal_physetup_nphy(phy_info_t *pi)
23207 {
23208         u16 val, mask;
23209
23210         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23211                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23212                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23213
23214                 mask = ((0x3 << 8) | (0x3 << 10));
23215                 val = (0x2 << 8);
23216                 val |= (0x2 << 10);
23217                 mod_phy_reg(pi, 0xa6, mask, val);
23218                 mod_phy_reg(pi, 0xa7, mask, val);
23219
23220                 val = read_phy_reg(pi, 0x8f);
23221                 pi->tx_rx_cal_phy_saveregs[2] = val;
23222                 val |= ((0x1 << 9) | (0x1 << 10));
23223                 write_phy_reg(pi, 0x8f, val);
23224
23225                 val = read_phy_reg(pi, 0xa5);
23226                 pi->tx_rx_cal_phy_saveregs[3] = val;
23227                 val |= ((0x1 << 9) | (0x1 << 10));
23228                 write_phy_reg(pi, 0xa5, val);
23229
23230                 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
23231                 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23232
23233                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23234                                         &val);
23235                 pi->tx_rx_cal_phy_saveregs[5] = val;
23236                 val = 0;
23237                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23238                                          &val);
23239
23240                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23241                                         &val);
23242                 pi->tx_rx_cal_phy_saveregs[6] = val;
23243                 val = 0;
23244                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23245                                          &val);
23246
23247                 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
23248                 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
23249
23250                 if (!(pi->use_int_tx_iqlo_cal_nphy)) {
23251
23252                         wlc_phy_rfctrlintc_override_nphy(pi,
23253                                                          NPHY_RfctrlIntc_override_PA,
23254                                                          1,
23255                                                          RADIO_MIMO_CORESEL_CORE1
23256                                                          |
23257                                                          RADIO_MIMO_CORESEL_CORE2);
23258                 } else {
23259
23260                         wlc_phy_rfctrlintc_override_nphy(pi,
23261                                                          NPHY_RfctrlIntc_override_PA,
23262                                                          0,
23263                                                          RADIO_MIMO_CORESEL_CORE1
23264                                                          |
23265                                                          RADIO_MIMO_CORESEL_CORE2);
23266                 }
23267
23268                 wlc_phy_rfctrlintc_override_nphy(pi,
23269                                                  NPHY_RfctrlIntc_override_TRSW,
23270                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
23271                 wlc_phy_rfctrlintc_override_nphy(pi,
23272                                                  NPHY_RfctrlIntc_override_TRSW,
23273                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
23274
23275                 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
23276                 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
23277                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
23278                             0x29b, (0x1 << 0), (0) << 0);
23279
23280                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
23281                             0x29b, (0x1 << 0), (0) << 0);
23282
23283                 if (NREV_IS(pi->pubpi.phy_rev, 7)
23284                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
23285                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
23286                                                           wlc_phy_read_lpf_bw_ctl_nphy
23287                                                           (pi, 0), 0, 0,
23288                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
23289                 }
23290
23291                 if (pi->use_int_tx_iqlo_cal_nphy
23292                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23293
23294                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23295
23296                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23297                                               1 << 4);
23298
23299                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23300                                         mod_radio_reg(pi,
23301                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23302                                                       1, 0);
23303                                         mod_radio_reg(pi,
23304                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23305                                                       1, 0);
23306                                 } else {
23307                                         mod_radio_reg(pi,
23308                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23309                                                       1, 0);
23310                                         mod_radio_reg(pi,
23311                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23312                                                       1, 0);
23313                                 }
23314                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
23315                                 wlc_phy_rfctrl_override_nphy_rev7(pi,
23316                                                                   (0x1 << 3), 0,
23317                                                                   0x3, 0,
23318                                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
23319                         }
23320                 }
23321         } else {
23322                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23323                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23324
23325                 mask = ((0x3 << 12) | (0x3 << 14));
23326                 val = (0x2 << 12);
23327                 val |= (0x2 << 14);
23328                 mod_phy_reg(pi, 0xa6, mask, val);
23329                 mod_phy_reg(pi, 0xa7, mask, val);
23330
23331                 val = read_phy_reg(pi, 0xa5);
23332                 pi->tx_rx_cal_phy_saveregs[2] = val;
23333                 val |= ((0x1 << 12) | (0x1 << 13));
23334                 write_phy_reg(pi, 0xa5, val);
23335
23336                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23337                                         &val);
23338                 pi->tx_rx_cal_phy_saveregs[3] = val;
23339                 val |= 0x2000;
23340                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23341                                          &val);
23342
23343                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23344                                         &val);
23345                 pi->tx_rx_cal_phy_saveregs[4] = val;
23346                 val |= 0x2000;
23347                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23348                                          &val);
23349
23350                 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
23351                 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
23352                 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
23353                 write_phy_reg(pi, 0x91, val);
23354                 write_phy_reg(pi, 0x92, val);
23355         }
23356 }
23357
23358 static void wlc_phy_txcal_phycleanup_nphy(phy_info_t *pi)
23359 {
23360         u16 mask;
23361
23362         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23363                 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
23364                 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
23365                 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
23366                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
23367                 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
23368
23369                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23370                                          &pi->tx_rx_cal_phy_saveregs[5]);
23371                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23372                                          &pi->tx_rx_cal_phy_saveregs[6]);
23373
23374                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
23375                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
23376
23377                 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
23378                 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
23379
23380                 if (NREV_IS(pi->pubpi.phy_rev, 7)
23381                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
23382                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7), 0, 0,
23383                                                           1,
23384                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
23385                 }
23386
23387                 wlc_phy_resetcca_nphy(pi);
23388
23389                 if (pi->use_int_tx_iqlo_cal_nphy
23390                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23391
23392                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23393                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23394                                         mod_radio_reg(pi,
23395                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23396                                                       1, 1);
23397                                         mod_radio_reg(pi,
23398                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23399                                                       1, 1);
23400                                 } else {
23401                                         mod_radio_reg(pi,
23402                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23403                                                       1, 1);
23404                                         mod_radio_reg(pi,
23405                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23406                                                       1, 1);
23407                                 }
23408
23409                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23410                                               0);
23411                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
23412                                 wlc_phy_rfctrl_override_nphy_rev7(pi,
23413                                                                   (0x1 << 3), 0,
23414                                                                   0x3, 1,
23415                                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
23416                         }
23417                 }
23418         } else {
23419                 mask = ((0x3 << 12) | (0x3 << 14));
23420                 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
23421                 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
23422                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
23423
23424                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23425                                          &pi->tx_rx_cal_phy_saveregs[3]);
23426
23427                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23428                                          &pi->tx_rx_cal_phy_saveregs[4]);
23429
23430                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
23431                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
23432         }
23433 }
23434
23435 #define NPHY_CAL_TSSISAMPS      64
23436 #define NPHY_TEST_TONE_FREQ_40MHz 4000
23437 #define NPHY_TEST_TONE_FREQ_20MHz 2500
23438
23439 void
23440 wlc_phy_est_tonepwr_nphy(phy_info_t *pi, s32 *qdBm_pwrbuf, u8 num_samps)
23441 {
23442         u16 tssi_reg;
23443         s32 temp, pwrindex[2];
23444         s32 idle_tssi[2];
23445         s32 rssi_buf[4];
23446         s32 tssival[2];
23447         u8 tssi_type;
23448
23449         tssi_reg = read_phy_reg(pi, 0x1e9);
23450
23451         temp = (s32) (tssi_reg & 0x3f);
23452         idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
23453
23454         temp = (s32) ((tssi_reg >> 8) & 0x3f);
23455         idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
23456
23457         tssi_type =
23458             CHSPEC_IS5G(pi->radio_chanspec) ?
23459             (u8)NPHY_RSSI_SEL_TSSI_5G:(u8)NPHY_RSSI_SEL_TSSI_2G;
23460
23461         wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
23462
23463         tssival[0] = rssi_buf[0] / ((s32) num_samps);
23464         tssival[1] = rssi_buf[2] / ((s32) num_samps);
23465
23466         pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
23467         pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
23468
23469         if (pwrindex[0] < 0) {
23470                 pwrindex[0] = 0;
23471         } else if (pwrindex[0] > 63) {
23472                 pwrindex[0] = 63;
23473         }
23474
23475         if (pwrindex[1] < 0) {
23476                 pwrindex[1] = 0;
23477         } else if (pwrindex[1] > 63) {
23478                 pwrindex[1] = 63;
23479         }
23480
23481         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
23482                                 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
23483         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
23484                                 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
23485 }
23486
23487 static void wlc_phy_internal_cal_txgain_nphy(phy_info_t *pi)
23488 {
23489         u16 txcal_gain[2];
23490
23491         pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
23492         pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
23493         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
23494         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
23495
23496         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23497                                 txcal_gain);
23498
23499         if (CHSPEC_IS2G(pi->radio_chanspec)) {
23500                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
23501                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
23502         } else {
23503                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
23504                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
23505         }
23506
23507         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23508                                  txcal_gain);
23509 }
23510
23511 static void wlc_phy_precal_txgain_nphy(phy_info_t *pi)
23512 {
23513         bool save_bbmult = false;
23514         u8 txcal_index_2057_rev5n7 = 0;
23515         u8 txcal_index_2057_rev3n4n6 = 10;
23516
23517         if (pi->use_int_tx_iqlo_cal_nphy) {
23518                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23519                         if ((pi->pubpi.radiorev == 3) ||
23520                             (pi->pubpi.radiorev == 4) ||
23521                             (pi->pubpi.radiorev == 6)) {
23522
23523                                 pi->nphy_txcal_pwr_idx[0] =
23524                                     txcal_index_2057_rev3n4n6;
23525                                 pi->nphy_txcal_pwr_idx[1] =
23526                                     txcal_index_2057_rev3n4n6;
23527                                 wlc_phy_txpwr_index_nphy(pi, 3,
23528                                                          txcal_index_2057_rev3n4n6,
23529                                                          false);
23530                         } else {
23531
23532                                 pi->nphy_txcal_pwr_idx[0] =
23533                                     txcal_index_2057_rev5n7;
23534                                 pi->nphy_txcal_pwr_idx[1] =
23535                                     txcal_index_2057_rev5n7;
23536                                 wlc_phy_txpwr_index_nphy(pi, 3,
23537                                                          txcal_index_2057_rev5n7,
23538                                                          false);
23539                         }
23540                         save_bbmult = true;
23541
23542                 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
23543                         wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
23544                         if (pi->sh->hw_phytxchain != 3) {
23545                                 pi->nphy_txcal_pwr_idx[1] =
23546                                     pi->nphy_txcal_pwr_idx[0];
23547                                 wlc_phy_txpwr_index_nphy(pi, 3,
23548                                                          pi->
23549                                                          nphy_txcal_pwr_idx[0],
23550                                                          true);
23551                                 save_bbmult = true;
23552                         }
23553
23554                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
23555                         if (PHY_IPA(pi)) {
23556                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23557                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
23558                                                                     false);
23559                                 } else {
23560                                         pi->nphy_txcal_pwr_idx[0] = 80;
23561                                         pi->nphy_txcal_pwr_idx[1] = 80;
23562                                         wlc_phy_txpwr_index_nphy(pi, 3, 80,
23563                                                                  false);
23564                                         save_bbmult = true;
23565                                 }
23566                         } else {
23567
23568                                 wlc_phy_internal_cal_txgain_nphy(pi);
23569                                 save_bbmult = true;
23570                         }
23571
23572                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
23573                         if (PHY_IPA(pi)) {
23574                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23575                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
23576                                                                     false);
23577                                 } else {
23578                                         wlc_phy_cal_txgainctrl_nphy(pi, 14,
23579                                                                     false);
23580                                 }
23581                         } else {
23582
23583                                 wlc_phy_internal_cal_txgain_nphy(pi);
23584                                 save_bbmult = true;
23585                         }
23586                 }
23587
23588         } else {
23589                 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
23590         }
23591
23592         if (save_bbmult) {
23593                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
23594                                         &pi->nphy_txcal_bbmult);
23595         }
23596 }
23597
23598 void
23599 wlc_phy_cal_txgainctrl_nphy(phy_info_t *pi, s32 dBm_targetpower, bool debug)
23600 {
23601         int gainctrl_loopidx;
23602         uint core;
23603         u16 m0m1, curr_m0m1;
23604         s32 delta_power;
23605         s32 txpwrindex;
23606         s32 qdBm_power[2];
23607         u16 orig_BBConfig;
23608         u16 phy_saveregs[4];
23609         u32 freq_test;
23610         u16 ampl_test = 250;
23611         uint stepsize;
23612         bool phyhang_avoid_state = false;
23613
23614         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23615
23616                 stepsize = 2;
23617         } else {
23618
23619                 stepsize = 1;
23620         }
23621
23622         if (CHSPEC_IS40(pi->radio_chanspec)) {
23623                 freq_test = 5000;
23624         } else {
23625                 freq_test = 2500;
23626         }
23627
23628         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
23629         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
23630
23631         if (pi->phyhang_avoid)
23632                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23633
23634         phyhang_avoid_state = pi->phyhang_avoid;
23635         pi->phyhang_avoid = false;
23636
23637         phy_saveregs[0] = read_phy_reg(pi, 0x91);
23638         phy_saveregs[1] = read_phy_reg(pi, 0x92);
23639         phy_saveregs[2] = read_phy_reg(pi, 0xe7);
23640         phy_saveregs[3] = read_phy_reg(pi, 0xec);
23641         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
23642                                          RADIO_MIMO_CORESEL_CORE1 |
23643                                          RADIO_MIMO_CORESEL_CORE2);
23644
23645         if (!debug) {
23646                 wlc_phy_rfctrlintc_override_nphy(pi,
23647                                                  NPHY_RfctrlIntc_override_TRSW,
23648                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
23649                 wlc_phy_rfctrlintc_override_nphy(pi,
23650                                                  NPHY_RfctrlIntc_override_TRSW,
23651                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
23652         } else {
23653                 wlc_phy_rfctrlintc_override_nphy(pi,
23654                                                  NPHY_RfctrlIntc_override_TRSW,
23655                                                  0x1, RADIO_MIMO_CORESEL_CORE1);
23656                 wlc_phy_rfctrlintc_override_nphy(pi,
23657                                                  NPHY_RfctrlIntc_override_TRSW,
23658                                                  0x7, RADIO_MIMO_CORESEL_CORE2);
23659         }
23660
23661         orig_BBConfig = read_phy_reg(pi, 0x01);
23662         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23663
23664         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
23665
23666         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
23667                 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
23668
23669                 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
23670                      gainctrl_loopidx++) {
23671                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
23672                                              false);
23673
23674                         if (core == PHY_CORE_0) {
23675                                 curr_m0m1 = m0m1 & 0xff00;
23676                         } else {
23677                                 curr_m0m1 = m0m1 & 0x00ff;
23678                         }
23679
23680                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
23681                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
23682
23683                         udelay(50);
23684
23685                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
23686                                                  NPHY_CAL_TSSISAMPS);
23687
23688                         pi->nphy_bb_mult_save = 0;
23689                         wlc_phy_stopplayback_nphy(pi);
23690
23691                         delta_power = (dBm_targetpower * 4) - qdBm_power[core];
23692
23693                         txpwrindex -= stepsize * delta_power;
23694                         if (txpwrindex < 0) {
23695                                 txpwrindex = 0;
23696                         } else if (txpwrindex > 127) {
23697                                 txpwrindex = 127;
23698                         }
23699
23700                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23701                                 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
23702                                     (pi->srom_fem5g.extpagain == 3)) {
23703                                         if (txpwrindex < 30) {
23704                                                 txpwrindex = 30;
23705                                         }
23706                                 }
23707                         } else {
23708                                 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
23709                                     (pi->srom_fem2g.extpagain == 3)) {
23710                                         if (txpwrindex < 50) {
23711                                                 txpwrindex = 50;
23712                                         }
23713                                 }
23714                         }
23715
23716                         wlc_phy_txpwr_index_nphy(pi, (1 << core),
23717                                                  (u8) txpwrindex, true);
23718                 }
23719
23720                 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
23721
23722                 if (debug) {
23723                         u16 radio_gain;
23724                         u16 dbg_m0m1;
23725
23726                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
23727
23728                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
23729                                              false);
23730
23731                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
23732                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
23733
23734                         udelay(100);
23735
23736                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
23737                                                  NPHY_CAL_TSSISAMPS);
23738
23739                         wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
23740                                                 &radio_gain);
23741
23742                         mdelay(4000);
23743                         pi->nphy_bb_mult_save = 0;
23744                         wlc_phy_stopplayback_nphy(pi);
23745                 }
23746         }
23747
23748         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
23749         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
23750
23751         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
23752
23753         write_phy_reg(pi, 0x01, orig_BBConfig);
23754
23755         write_phy_reg(pi, 0x91, phy_saveregs[0]);
23756         write_phy_reg(pi, 0x92, phy_saveregs[1]);
23757         write_phy_reg(pi, 0xe7, phy_saveregs[2]);
23758         write_phy_reg(pi, 0xec, phy_saveregs[3]);
23759
23760         pi->phyhang_avoid = phyhang_avoid_state;
23761
23762         if (pi->phyhang_avoid)
23763                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23764 }
23765
23766 static void wlc_phy_update_txcal_ladder_nphy(phy_info_t *pi, u16 core)
23767 {
23768         int index;
23769         u32 bbmult_scale;
23770         u16 bbmult;
23771         u16 tblentry;
23772
23773         nphy_txiqcal_ladder_t ladder_lo[] = {
23774                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
23775                 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
23776                 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
23777         };
23778
23779         nphy_txiqcal_ladder_t ladder_iq[] = {
23780                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
23781                 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
23782                 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
23783         };
23784
23785         bbmult = (core == PHY_CORE_0) ?
23786             ((pi->nphy_txcal_bbmult >> 8) & 0xff) : (pi->
23787                                                      nphy_txcal_bbmult & 0xff);
23788
23789         for (index = 0; index < 18; index++) {
23790                 bbmult_scale = ladder_lo[index].percent * bbmult;
23791                 bbmult_scale /= 100;
23792
23793                 tblentry =
23794                     ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
23795                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
23796                                          &tblentry);
23797
23798                 bbmult_scale = ladder_iq[index].percent * bbmult;
23799                 bbmult_scale /= 100;
23800
23801                 tblentry =
23802                     ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
23803                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
23804                                          16, &tblentry);
23805         }
23806 }
23807
23808 void wlc_phy_cal_perical_nphy_run(phy_info_t *pi, u8 caltype)
23809 {
23810         nphy_txgains_t target_gain;
23811         u8 tx_pwr_ctrl_state;
23812         bool fullcal = true;
23813         bool restore_tx_gain = false;
23814         bool mphase;
23815
23816         if (NORADIO_ENAB(pi->pubpi)) {
23817                 wlc_phy_cal_perical_mphase_reset(pi);
23818                 return;
23819         }
23820
23821         if (PHY_MUTED(pi))
23822                 return;
23823
23824         if (caltype == PHY_PERICAL_AUTO)
23825                 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
23826         else if (caltype == PHY_PERICAL_PARTIAL)
23827                 fullcal = false;
23828
23829         if (pi->cal_type_override != PHY_PERICAL_AUTO) {
23830                 fullcal =
23831                     (pi->cal_type_override == PHY_PERICAL_FULL) ? true : false;
23832         }
23833
23834         if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
23835                 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
23836                         wlc_phy_cal_perical_mphase_restart(pi);
23837         }
23838
23839         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL)) {
23840                 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
23841         }
23842
23843         wlapi_suspend_mac_and_wait(pi->sh->physhim);
23844
23845         wlc_phyreg_enter((wlc_phy_t *) pi);
23846
23847         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
23848             (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
23849                 pi->nphy_cal_orig_pwr_idx[0] =
23850                     (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
23851                 pi->nphy_cal_orig_pwr_idx[1] =
23852                     (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
23853
23854                 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
23855                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
23856                                                 0x110, 16,
23857                                                 pi->nphy_cal_orig_tx_gain);
23858                 } else {
23859                         pi->nphy_cal_orig_tx_gain[0] = 0;
23860                         pi->nphy_cal_orig_tx_gain[1] = 0;
23861                 }
23862         }
23863         target_gain = wlc_phy_get_tx_gain_nphy(pi);
23864         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
23865         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
23866
23867         if (pi->antsel_type == ANTSEL_2x3)
23868                 wlc_phy_antsel_init((wlc_phy_t *) pi, true);
23869
23870         mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
23871         if (!mphase) {
23872
23873                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23874                         wlc_phy_precal_txgain_nphy(pi);
23875                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
23876                         restore_tx_gain = true;
23877
23878                         target_gain = pi->nphy_cal_target_gain;
23879                 }
23880                 if (0 ==
23881                     wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal, mphase)) {
23882                         if (PHY_IPA(pi))
23883                                 wlc_phy_a4(pi, true);
23884
23885                         wlc_phyreg_exit((wlc_phy_t *) pi);
23886                         wlapi_enable_mac(pi->sh->physhim);
23887                         wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
23888                                              10000);
23889                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
23890                         wlc_phyreg_enter((wlc_phy_t *) pi);
23891
23892                         if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
23893                                                              (pi->
23894                                                               first_cal_after_assoc
23895                                                               || (pi->
23896                                                                   cal_type_override
23897                                                                   ==
23898                                                                   PHY_PERICAL_FULL))
23899                                                              ? 2 : 0, false)) {
23900                                 wlc_phy_savecal_nphy(pi);
23901
23902                                 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
23903
23904                                 pi->nphy_perical_last = pi->sh->now;
23905                         }
23906                 }
23907                 if (caltype != PHY_PERICAL_AUTO) {
23908                         wlc_phy_rssi_cal_nphy(pi);
23909                 }
23910
23911                 if (pi->first_cal_after_assoc
23912                     || (pi->cal_type_override == PHY_PERICAL_FULL)) {
23913                         pi->first_cal_after_assoc = false;
23914                         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
23915                         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
23916                 }
23917
23918                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23919                         wlc_phy_radio205x_vcocal_nphy(pi);
23920                 }
23921         } else {
23922                 switch (pi->mphase_cal_phase_id) {
23923                 case MPHASE_CAL_STATE_INIT:
23924                         pi->nphy_perical_last = pi->sh->now;
23925                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
23926
23927                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23928                                 wlc_phy_precal_txgain_nphy(pi);
23929                         }
23930                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
23931                         pi->mphase_cal_phase_id++;
23932                         break;
23933
23934                 case MPHASE_CAL_STATE_TXPHASE0:
23935                 case MPHASE_CAL_STATE_TXPHASE1:
23936                 case MPHASE_CAL_STATE_TXPHASE2:
23937                 case MPHASE_CAL_STATE_TXPHASE3:
23938                 case MPHASE_CAL_STATE_TXPHASE4:
23939                 case MPHASE_CAL_STATE_TXPHASE5:
23940                         if ((pi->radar_percal_mask & 0x10) != 0)
23941                                 pi->nphy_rxcal_active = true;
23942
23943                         if (wlc_phy_cal_txiqlo_nphy
23944                             (pi, pi->nphy_cal_target_gain, fullcal,
23945                              true) != 0) {
23946
23947                                 wlc_phy_cal_perical_mphase_reset(pi);
23948                                 break;
23949                         }
23950
23951                         if (NREV_LE(pi->pubpi.phy_rev, 2) &&
23952                             (pi->mphase_cal_phase_id ==
23953                              MPHASE_CAL_STATE_TXPHASE4)) {
23954                                 pi->mphase_cal_phase_id += 2;
23955                         } else {
23956                                 pi->mphase_cal_phase_id++;
23957                         }
23958                         break;
23959
23960                 case MPHASE_CAL_STATE_PAPDCAL:
23961                         if ((pi->radar_percal_mask & 0x2) != 0)
23962                                 pi->nphy_rxcal_active = true;
23963
23964                         if (PHY_IPA(pi)) {
23965                                 wlc_phy_a4(pi, true);
23966                         }
23967                         pi->mphase_cal_phase_id++;
23968                         break;
23969
23970                 case MPHASE_CAL_STATE_RXCAL:
23971                         if ((pi->radar_percal_mask & 0x1) != 0)
23972                                 pi->nphy_rxcal_active = true;
23973                         if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
23974                                                   (pi->first_cal_after_assoc ||
23975                                                    (pi->cal_type_override ==
23976                                                     PHY_PERICAL_FULL)) ? 2 : 0,
23977                                                   false) == 0) {
23978                                 wlc_phy_savecal_nphy(pi);
23979                         }
23980
23981                         pi->mphase_cal_phase_id++;
23982                         break;
23983
23984                 case MPHASE_CAL_STATE_RSSICAL:
23985                         if ((pi->radar_percal_mask & 0x4) != 0)
23986                                 pi->nphy_rxcal_active = true;
23987                         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
23988                         wlc_phy_rssi_cal_nphy(pi);
23989
23990                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23991                                 wlc_phy_radio205x_vcocal_nphy(pi);
23992                         }
23993                         restore_tx_gain = true;
23994
23995                         if (pi->first_cal_after_assoc) {
23996                                 pi->mphase_cal_phase_id++;
23997                         } else {
23998                                 wlc_phy_cal_perical_mphase_reset(pi);
23999                         }
24000
24001                         break;
24002
24003                 case MPHASE_CAL_STATE_IDLETSSI:
24004                         if ((pi->radar_percal_mask & 0x8) != 0)
24005                                 pi->nphy_rxcal_active = true;
24006
24007                         if (pi->first_cal_after_assoc) {
24008                                 pi->first_cal_after_assoc = false;
24009                                 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
24010                                 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
24011                         }
24012
24013                         wlc_phy_cal_perical_mphase_reset(pi);
24014                         break;
24015
24016                 default:
24017                         wlc_phy_cal_perical_mphase_reset(pi);
24018                         break;
24019                 }
24020         }
24021
24022         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24023                 if (restore_tx_gain) {
24024                         if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
24025
24026                                 wlc_phy_txpwr_index_nphy(pi, 1,
24027                                                          pi->
24028                                                          nphy_cal_orig_pwr_idx
24029                                                          [0], false);
24030                                 wlc_phy_txpwr_index_nphy(pi, 2,
24031                                                          pi->
24032                                                          nphy_cal_orig_pwr_idx
24033                                                          [1], false);
24034
24035                                 pi->nphy_txpwrindex[0].index = -1;
24036                                 pi->nphy_txpwrindex[1].index = -1;
24037                         } else {
24038                                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
24039                                                          (s8) (pi->
24040                                                                  nphy_txpwrindex
24041                                                                  [0].
24042                                                                  index_internal),
24043                                                          false);
24044                                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
24045                                                          (s8) (pi->
24046                                                                  nphy_txpwrindex
24047                                                                  [1].
24048                                                                  index_internal),
24049                                                          false);
24050                         }
24051                 }
24052         }
24053
24054         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
24055         wlc_phyreg_exit((wlc_phy_t *) pi);
24056         wlapi_enable_mac(pi->sh->physhim);
24057 }
24058
24059 int
24060 wlc_phy_cal_txiqlo_nphy(phy_info_t *pi, nphy_txgains_t target_gain,
24061                         bool fullcal, bool mphase)
24062 {
24063         u16 val;
24064         u16 tbl_buf[11];
24065         u8 cal_cnt;
24066         u16 cal_cmd;
24067         u8 num_cals, max_cal_cmds;
24068         u16 core_no, cal_type;
24069         u16 diq_start = 0;
24070         u8 phy_bw;
24071         u16 max_val;
24072         u16 tone_freq;
24073         u16 gain_save[2];
24074         u16 cal_gain[2];
24075         nphy_iqcal_params_t cal_params[2];
24076         u32 tbl_len;
24077         void *tbl_ptr;
24078         bool ladder_updated[2];
24079         u8 mphase_cal_lastphase = 0;
24080         int bcmerror = 0;
24081         bool phyhang_avoid_state = false;
24082
24083         u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
24084                 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
24085                     0x1902,
24086                 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
24087                     0x6407
24088         };
24089
24090         u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
24091                 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
24092                     0x3200,
24093                 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
24094                     0x6407
24095         };
24096
24097         u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
24098                 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
24099                     0x1202,
24100                 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
24101                     0x4707
24102         };
24103
24104         u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
24105                 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
24106                     0x2300,
24107                 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
24108                     0x4707
24109         };
24110
24111         u16 tbl_tx_iqlo_cal_startcoefs[] = {
24112                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24113                     0x0000
24114         };
24115
24116         u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
24117                 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
24118                 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
24119         };
24120
24121         u16 tbl_tx_iqlo_cal_cmds_recal[] = {
24122                 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
24123                 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
24124         };
24125
24126         u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
24127                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24128                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24129                 0x0000
24130         };
24131
24132         u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
24133                 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
24134                 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
24135         };
24136
24137         u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
24138                 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
24139                 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
24140         };
24141
24142         wlc_phy_stay_in_carriersearch_nphy(pi, true);
24143
24144         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
24145                 phyhang_avoid_state = pi->phyhang_avoid;
24146                 pi->phyhang_avoid = false;
24147         }
24148
24149         if (CHSPEC_IS40(pi->radio_chanspec)) {
24150                 phy_bw = 40;
24151         } else {
24152                 phy_bw = 20;
24153         }
24154
24155         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
24156
24157         for (core_no = 0; core_no <= 1; core_no++) {
24158                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
24159                                               &cal_params[core_no]);
24160                 cal_gain[core_no] = cal_params[core_no].cal_gain;
24161         }
24162
24163         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
24164
24165         wlc_phy_txcal_radio_setup_nphy(pi);
24166
24167         wlc_phy_txcal_physetup_nphy(pi);
24168
24169         ladder_updated[0] = ladder_updated[1] = false;
24170         if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
24171               (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
24172                && (CHSPEC_IS2G(pi->radio_chanspec))))) {
24173
24174                 if (phy_bw == 40) {
24175                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
24176                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
24177                 } else {
24178                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
24179                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
24180                 }
24181                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
24182                                          16, tbl_ptr);
24183
24184                 if (phy_bw == 40) {
24185                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
24186                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
24187                 } else {
24188                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
24189                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
24190                 }
24191                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
24192                                          16, tbl_ptr);
24193         }
24194
24195         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24196                 write_phy_reg(pi, 0xc2, 0x8ad9);
24197         } else {
24198                 write_phy_reg(pi, 0xc2, 0x8aa9);
24199         }
24200
24201         max_val = 250;
24202         tone_freq = (phy_bw == 20) ? 2500 : 5000;
24203
24204         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
24205                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
24206                 bcmerror = 0;
24207         } else {
24208                 bcmerror =
24209                     wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0, false);
24210         }
24211
24212         if (bcmerror == 0) {
24213
24214                 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
24215                         tbl_ptr = pi->mphase_txcal_bestcoeffs;
24216                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
24217                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24218
24219                                 tbl_len -= 2;
24220                         }
24221                 } else {
24222                         if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
24223
24224                                 tbl_ptr = pi->nphy_txiqlocal_bestc;
24225                                 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
24226                                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24227
24228                                         tbl_len -= 2;
24229                                 }
24230                         } else {
24231
24232                                 fullcal = true;
24233
24234                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24235                                         tbl_ptr =
24236                                             tbl_tx_iqlo_cal_startcoefs_nphyrev3;
24237                                         tbl_len =
24238                                             ARRAY_SIZE
24239                                             (tbl_tx_iqlo_cal_startcoefs_nphyrev3);
24240                                 } else {
24241                                         tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
24242                                         tbl_len =
24243                                             ARRAY_SIZE
24244                                             (tbl_tx_iqlo_cal_startcoefs);
24245                                 }
24246                         }
24247                 }
24248                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
24249                                          16, tbl_ptr);
24250
24251                 if (fullcal) {
24252                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24253                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
24254                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
24255                 } else {
24256                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24257                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
24258                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
24259                 }
24260
24261                 if (mphase) {
24262                         cal_cnt = pi->mphase_txcal_cmdidx;
24263                         if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds) {
24264                                 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
24265                         } else {
24266                                 num_cals = max_cal_cmds;
24267                         }
24268                 } else {
24269                         cal_cnt = 0;
24270                         num_cals = max_cal_cmds;
24271                 }
24272
24273                 for (; cal_cnt < num_cals; cal_cnt++) {
24274
24275                         if (fullcal) {
24276                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24277                                     tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
24278                                     [cal_cnt] :
24279                                     tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
24280                         } else {
24281                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24282                                     tbl_tx_iqlo_cal_cmds_recal_nphyrev3[cal_cnt]
24283                                     : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
24284                         }
24285
24286                         core_no = ((cal_cmd & 0x3000) >> 12);
24287                         cal_type = ((cal_cmd & 0x0F00) >> 8);
24288
24289                         if (NREV_GE(pi->pubpi.phy_rev, 6) ||
24290                             (NREV_IS(pi->pubpi.phy_rev, 5) &&
24291                              PHY_IPA(pi)
24292                              && (CHSPEC_IS2G(pi->radio_chanspec)))) {
24293                                 if (!ladder_updated[core_no]) {
24294                                         wlc_phy_update_txcal_ladder_nphy(pi,
24295                                                                          core_no);
24296                                         ladder_updated[core_no] = true;
24297                                 }
24298                         }
24299
24300                         val =
24301                             (cal_params[core_no].
24302                              ncorr[cal_type] << 8) | NPHY_N_GCTL;
24303                         write_phy_reg(pi, 0xc1, val);
24304
24305                         if ((cal_type == 1) || (cal_type == 3)
24306                             || (cal_type == 4)) {
24307
24308                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24309                                                         1, 69 + core_no, 16,
24310                                                         tbl_buf);
24311
24312                                 diq_start = tbl_buf[0];
24313
24314                                 tbl_buf[0] = 0;
24315                                 wlc_phy_table_write_nphy(pi,
24316                                                          NPHY_TBL_ID_IQLOCAL, 1,
24317                                                          69 + core_no, 16,
24318                                                          tbl_buf);
24319                         }
24320
24321                         write_phy_reg(pi, 0xc0, cal_cmd);
24322
24323                         SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
24324                                  20000);
24325                         if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
24326                                  "HW error: txiq calib"))
24327                                 return -EIO;
24328
24329                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24330                                                 tbl_len, 96, 16, tbl_buf);
24331                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24332                                                  tbl_len, 64, 16, tbl_buf);
24333
24334                         if ((cal_type == 1) || (cal_type == 3)
24335                             || (cal_type == 4)) {
24336
24337                                 tbl_buf[0] = diq_start;
24338
24339                         }
24340
24341                 }
24342
24343                 if (mphase) {
24344                         pi->mphase_txcal_cmdidx = num_cals;
24345                         if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
24346                                 pi->mphase_txcal_cmdidx = 0;
24347                 }
24348
24349                 mphase_cal_lastphase =
24350                     (NREV_LE(pi->pubpi.phy_rev, 2)) ?
24351                     MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
24352
24353                 if (!mphase
24354                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
24355
24356                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
24357                                                 16, tbl_buf);
24358                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
24359                                                  16, tbl_buf);
24360
24361                         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
24362
24363                                 tbl_buf[0] = 0;
24364                                 tbl_buf[1] = 0;
24365                                 tbl_buf[2] = 0;
24366                                 tbl_buf[3] = 0;
24367
24368                         }
24369                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
24370                                                  16, tbl_buf);
24371
24372                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
24373                                                 16, tbl_buf);
24374                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
24375                                                  16, tbl_buf);
24376
24377                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
24378                                                  16, tbl_buf);
24379
24380                         tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
24381                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24382
24383                                 tbl_len -= 2;
24384                         }
24385                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24386                                                 tbl_len, 96, 16,
24387                                                 pi->nphy_txiqlocal_bestc);
24388
24389                         pi->nphy_txiqlocal_coeffsvalid = true;
24390                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
24391                 } else {
24392                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
24393                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24394
24395                                 tbl_len -= 2;
24396                         }
24397                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24398                                                 tbl_len, 96, 16,
24399                                                 pi->mphase_txcal_bestcoeffs);
24400                 }
24401
24402                 wlc_phy_stopplayback_nphy(pi);
24403
24404                 write_phy_reg(pi, 0xc2, 0x0000);
24405
24406         }
24407
24408         wlc_phy_txcal_phycleanup_nphy(pi);
24409
24410         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
24411                                  gain_save);
24412
24413         wlc_phy_txcal_radio_cleanup_nphy(pi);
24414
24415         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
24416                 if (!mphase
24417                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
24418                         wlc_phy_tx_iq_war_nphy(pi);
24419         }
24420
24421         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
24422                 pi->phyhang_avoid = phyhang_avoid_state;
24423         }
24424
24425         wlc_phy_stay_in_carriersearch_nphy(pi, false);
24426
24427         return bcmerror;
24428 }
24429
24430 static void wlc_phy_reapply_txcal_coeffs_nphy(phy_info_t *pi)
24431 {
24432         u16 tbl_buf[7];
24433
24434         if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
24435             (pi->nphy_txiqlocal_coeffsvalid)) {
24436                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24437                                         ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
24438
24439                 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
24440                     (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
24441                     (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
24442                     (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
24443
24444                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
24445                                                  16, pi->nphy_txiqlocal_bestc);
24446
24447                         tbl_buf[0] = 0;
24448                         tbl_buf[1] = 0;
24449                         tbl_buf[2] = 0;
24450                         tbl_buf[3] = 0;
24451                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
24452                                                  16, tbl_buf);
24453
24454                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
24455                                                  16,
24456                                                  &pi->nphy_txiqlocal_bestc[5]);
24457
24458                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
24459                                                  16,
24460                                                  &pi->nphy_txiqlocal_bestc[5]);
24461                 }
24462         }
24463 }
24464
24465 static void wlc_phy_tx_iq_war_nphy(phy_info_t *pi)
24466 {
24467         nphy_iq_comp_t tx_comp;
24468
24469         wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, (void *)&tx_comp);
24470
24471         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
24472         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
24473         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
24474         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
24475 }
24476
24477 void
24478 wlc_phy_rx_iq_coeffs_nphy(phy_info_t *pi, u8 write, nphy_iq_comp_t *pcomp)
24479 {
24480         if (write) {
24481                 write_phy_reg(pi, 0x9a, pcomp->a0);
24482                 write_phy_reg(pi, 0x9b, pcomp->b0);
24483                 write_phy_reg(pi, 0x9c, pcomp->a1);
24484                 write_phy_reg(pi, 0x9d, pcomp->b1);
24485         } else {
24486                 pcomp->a0 = read_phy_reg(pi, 0x9a);
24487                 pcomp->b0 = read_phy_reg(pi, 0x9b);
24488                 pcomp->a1 = read_phy_reg(pi, 0x9c);
24489                 pcomp->b1 = read_phy_reg(pi, 0x9d);
24490         }
24491 }
24492
24493 void
24494 wlc_phy_rx_iq_est_nphy(phy_info_t *pi, phy_iq_est_t *est, u16 num_samps,
24495                        u8 wait_time, u8 wait_for_crs)
24496 {
24497         u8 core;
24498
24499         write_phy_reg(pi, 0x12b, num_samps);
24500         mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
24501         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
24502                     (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
24503
24504         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
24505
24506         SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
24507                  10000);
24508         if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
24509                  "HW error: rxiq est"))
24510                 return;
24511
24512         if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
24513                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24514                         est[core].i_pwr =
24515                             (read_phy_reg(pi, NPHY_IqestipwrAccHi(core)) << 16)
24516                             | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
24517                         est[core].q_pwr =
24518                             (read_phy_reg(pi, NPHY_IqestqpwrAccHi(core)) << 16)
24519                             | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
24520                         est[core].iq_prod =
24521                             (read_phy_reg(pi, NPHY_IqestIqAccHi(core)) << 16) |
24522                             read_phy_reg(pi, NPHY_IqestIqAccLo(core));
24523                 }
24524         }
24525 }
24526
24527 #define CAL_RETRY_CNT 2
24528 static void wlc_phy_calc_rx_iq_comp_nphy(phy_info_t *pi, u8 core_mask)
24529 {
24530         u8 curr_core;
24531         phy_iq_est_t est[PHY_CORE_MAX];
24532         nphy_iq_comp_t old_comp, new_comp;
24533         s32 iq = 0;
24534         u32 ii = 0, qq = 0;
24535         s16 iq_nbits, qq_nbits, brsh, arsh;
24536         s32 a, b, temp;
24537         int bcmerror = 0;
24538         uint cal_retry = 0;
24539
24540         if (core_mask == 0x0)
24541                 return;
24542
24543         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
24544         new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
24545         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
24546
24547  cal_try:
24548         wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
24549
24550         new_comp = old_comp;
24551
24552         for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
24553
24554                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
24555                         iq = est[curr_core].iq_prod;
24556                         ii = est[curr_core].i_pwr;
24557                         qq = est[curr_core].q_pwr;
24558                 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
24559                         iq = est[curr_core].iq_prod;
24560                         ii = est[curr_core].i_pwr;
24561                         qq = est[curr_core].q_pwr;
24562                 } else {
24563                         continue;
24564                 }
24565
24566                 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
24567                         bcmerror = -EBADE;
24568                         break;
24569                 }
24570
24571                 iq_nbits = wlc_phy_nbits(iq);
24572                 qq_nbits = wlc_phy_nbits(qq);
24573
24574                 arsh = 10 - (30 - iq_nbits);
24575                 if (arsh >= 0) {
24576                         a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
24577                         temp = (s32) (ii >> arsh);
24578                         if (temp == 0) {
24579                                 bcmerror = -EBADE;
24580                                 break;
24581                         }
24582                 } else {
24583                         a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
24584                         temp = (s32) (ii << -arsh);
24585                         if (temp == 0) {
24586                                 bcmerror = -EBADE;
24587                                 break;
24588                         }
24589                 }
24590
24591                 a /= temp;
24592
24593                 brsh = qq_nbits - 31 + 20;
24594                 if (brsh >= 0) {
24595                         b = (qq << (31 - qq_nbits));
24596                         temp = (s32) (ii >> brsh);
24597                         if (temp == 0) {
24598                                 bcmerror = -EBADE;
24599                                 break;
24600                         }
24601                 } else {
24602                         b = (qq << (31 - qq_nbits));
24603                         temp = (s32) (ii << -brsh);
24604                         if (temp == 0) {
24605                                 bcmerror = -EBADE;
24606                                 break;
24607                         }
24608                 }
24609                 b /= temp;
24610                 b -= a * a;
24611                 b = (s32) int_sqrt((unsigned long) b);
24612                 b -= (1 << 10);
24613
24614                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
24615                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24616                                 new_comp.a0 = (s16) a & 0x3ff;
24617                                 new_comp.b0 = (s16) b & 0x3ff;
24618                         } else {
24619
24620                                 new_comp.a0 = (s16) b & 0x3ff;
24621                                 new_comp.b0 = (s16) a & 0x3ff;
24622                         }
24623                 }
24624                 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
24625                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24626                                 new_comp.a1 = (s16) a & 0x3ff;
24627                                 new_comp.b1 = (s16) b & 0x3ff;
24628                         } else {
24629
24630                                 new_comp.a1 = (s16) b & 0x3ff;
24631                                 new_comp.b1 = (s16) a & 0x3ff;
24632                         }
24633                 }
24634         }
24635
24636         if (bcmerror != 0) {
24637                 printk("%s: Failed, cnt = %d\n", __func__, cal_retry);
24638
24639                 if (cal_retry < CAL_RETRY_CNT) {
24640                         cal_retry++;
24641                         goto cal_try;
24642                 }
24643
24644                 new_comp = old_comp;
24645         } else if (cal_retry > 0) {
24646         }
24647
24648         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
24649 }
24650
24651 static void wlc_phy_rxcal_radio_setup_nphy(phy_info_t *pi, u8 rx_core)
24652 {
24653         u16 offtune_val;
24654         u16 bias_g = 0;
24655         u16 bias_a = 0;
24656
24657         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24658                 if (rx_core == PHY_CORE_0) {
24659                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24660                                 pi->tx_rx_cal_radio_saveregs[0] =
24661                                     read_radio_reg(pi,
24662                                                    RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
24663                                 pi->tx_rx_cal_radio_saveregs[1] =
24664                                     read_radio_reg(pi,
24665                                                    RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
24666
24667                                 write_radio_reg(pi,
24668                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
24669                                                 0x3);
24670                                 write_radio_reg(pi,
24671                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
24672                                                 0xaf);
24673
24674                         } else {
24675                                 pi->tx_rx_cal_radio_saveregs[0] =
24676                                     read_radio_reg(pi,
24677                                                    RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
24678                                 pi->tx_rx_cal_radio_saveregs[1] =
24679                                     read_radio_reg(pi,
24680                                                    RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
24681
24682                                 write_radio_reg(pi,
24683                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
24684                                                 0x3);
24685                                 write_radio_reg(pi,
24686                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
24687                                                 0x7f);
24688                         }
24689
24690                 } else {
24691                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24692                                 pi->tx_rx_cal_radio_saveregs[0] =
24693                                     read_radio_reg(pi,
24694                                                    RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
24695                                 pi->tx_rx_cal_radio_saveregs[1] =
24696                                     read_radio_reg(pi,
24697                                                    RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
24698
24699                                 write_radio_reg(pi,
24700                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
24701                                                 0x3);
24702                                 write_radio_reg(pi,
24703                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
24704                                                 0xaf);
24705
24706                         } else {
24707                                 pi->tx_rx_cal_radio_saveregs[0] =
24708                                     read_radio_reg(pi,
24709                                                    RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
24710                                 pi->tx_rx_cal_radio_saveregs[1] =
24711                                     read_radio_reg(pi,
24712                                                    RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
24713
24714                                 write_radio_reg(pi,
24715                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
24716                                                 0x3);
24717                                 write_radio_reg(pi,
24718                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
24719                                                 0x7f);
24720                         }
24721                 }
24722
24723         } else {
24724                 if (rx_core == PHY_CORE_0) {
24725                         pi->tx_rx_cal_radio_saveregs[0] =
24726                             read_radio_reg(pi,
24727                                            RADIO_2056_TX_RXIQCAL_TXMUX |
24728                                            RADIO_2056_TX1);
24729                         pi->tx_rx_cal_radio_saveregs[1] =
24730                             read_radio_reg(pi,
24731                                            RADIO_2056_RX_RXIQCAL_RXMUX |
24732                                            RADIO_2056_RX0);
24733
24734                         if (pi->pubpi.radiorev >= 5) {
24735                                 pi->tx_rx_cal_radio_saveregs[2] =
24736                                     read_radio_reg(pi,
24737                                                    RADIO_2056_RX_RXSPARE2 |
24738                                                    RADIO_2056_RX0);
24739                                 pi->tx_rx_cal_radio_saveregs[3] =
24740                                     read_radio_reg(pi,
24741                                                    RADIO_2056_TX_TXSPARE2 |
24742                                                    RADIO_2056_TX1);
24743                         }
24744
24745                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24746
24747                                 if (pi->pubpi.radiorev >= 5) {
24748                                         pi->tx_rx_cal_radio_saveregs[4] =
24749                                             read_radio_reg(pi,
24750                                                            RADIO_2056_RX_LNAA_MASTER
24751                                                            | RADIO_2056_RX0);
24752
24753                                         write_radio_reg(pi,
24754                                                         RADIO_2056_RX_LNAA_MASTER
24755                                                         | RADIO_2056_RX0, 0x40);
24756
24757                                         write_radio_reg(pi,
24758                                                         RADIO_2056_TX_TXSPARE2 |
24759                                                         RADIO_2056_TX1, bias_a);
24760
24761                                         write_radio_reg(pi,
24762                                                         RADIO_2056_RX_RXSPARE2 |
24763                                                         RADIO_2056_RX0, bias_a);
24764                                 } else {
24765                                         pi->tx_rx_cal_radio_saveregs[4] =
24766                                             read_radio_reg(pi,
24767                                                            RADIO_2056_RX_LNAA_TUNE
24768                                                            | RADIO_2056_RX0);
24769
24770                                         offtune_val =
24771                                             (pi->
24772                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24773                                             >> 8;
24774                                         offtune_val =
24775                                             (offtune_val <= 0x7) ? 0xF : 0;
24776
24777                                         mod_radio_reg(pi,
24778                                                       RADIO_2056_RX_LNAA_TUNE |
24779                                                       RADIO_2056_RX0, 0xF0,
24780                                                       (offtune_val << 8));
24781                                 }
24782
24783                                 write_radio_reg(pi,
24784                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24785                                                 RADIO_2056_TX1, 0x9);
24786                                 write_radio_reg(pi,
24787                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24788                                                 RADIO_2056_RX0, 0x9);
24789                         } else {
24790                                 if (pi->pubpi.radiorev >= 5) {
24791                                         pi->tx_rx_cal_radio_saveregs[4] =
24792                                             read_radio_reg(pi,
24793                                                            RADIO_2056_RX_LNAG_MASTER
24794                                                            | RADIO_2056_RX0);
24795
24796                                         write_radio_reg(pi,
24797                                                         RADIO_2056_RX_LNAG_MASTER
24798                                                         | RADIO_2056_RX0, 0x40);
24799
24800                                         write_radio_reg(pi,
24801                                                         RADIO_2056_TX_TXSPARE2 |
24802                                                         RADIO_2056_TX1, bias_g);
24803
24804                                         write_radio_reg(pi,
24805                                                         RADIO_2056_RX_RXSPARE2 |
24806                                                         RADIO_2056_RX0, bias_g);
24807
24808                                 } else {
24809                                         pi->tx_rx_cal_radio_saveregs[4] =
24810                                             read_radio_reg(pi,
24811                                                            RADIO_2056_RX_LNAG_TUNE
24812                                                            | RADIO_2056_RX0);
24813
24814                                         offtune_val =
24815                                             (pi->
24816                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24817                                             >> 8;
24818                                         offtune_val =
24819                                             (offtune_val <= 0x7) ? 0xF : 0;
24820
24821                                         mod_radio_reg(pi,
24822                                                       RADIO_2056_RX_LNAG_TUNE |
24823                                                       RADIO_2056_RX0, 0xF0,
24824                                                       (offtune_val << 8));
24825                                 }
24826
24827                                 write_radio_reg(pi,
24828                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24829                                                 RADIO_2056_TX1, 0x6);
24830                                 write_radio_reg(pi,
24831                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24832                                                 RADIO_2056_RX0, 0x6);
24833                         }
24834
24835                 } else {
24836                         pi->tx_rx_cal_radio_saveregs[0] =
24837                             read_radio_reg(pi,
24838                                            RADIO_2056_TX_RXIQCAL_TXMUX |
24839                                            RADIO_2056_TX0);
24840                         pi->tx_rx_cal_radio_saveregs[1] =
24841                             read_radio_reg(pi,
24842                                            RADIO_2056_RX_RXIQCAL_RXMUX |
24843                                            RADIO_2056_RX1);
24844
24845                         if (pi->pubpi.radiorev >= 5) {
24846                                 pi->tx_rx_cal_radio_saveregs[2] =
24847                                     read_radio_reg(pi,
24848                                                    RADIO_2056_RX_RXSPARE2 |
24849                                                    RADIO_2056_RX1);
24850                                 pi->tx_rx_cal_radio_saveregs[3] =
24851                                     read_radio_reg(pi,
24852                                                    RADIO_2056_TX_TXSPARE2 |
24853                                                    RADIO_2056_TX0);
24854                         }
24855
24856                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24857
24858                                 if (pi->pubpi.radiorev >= 5) {
24859                                         pi->tx_rx_cal_radio_saveregs[4] =
24860                                             read_radio_reg(pi,
24861                                                            RADIO_2056_RX_LNAA_MASTER
24862                                                            | RADIO_2056_RX1);
24863
24864                                         write_radio_reg(pi,
24865                                                         RADIO_2056_RX_LNAA_MASTER
24866                                                         | RADIO_2056_RX1, 0x40);
24867
24868                                         write_radio_reg(pi,
24869                                                         RADIO_2056_TX_TXSPARE2 |
24870                                                         RADIO_2056_TX0, bias_a);
24871
24872                                         write_radio_reg(pi,
24873                                                         RADIO_2056_RX_RXSPARE2 |
24874                                                         RADIO_2056_RX1, bias_a);
24875                                 } else {
24876                                         pi->tx_rx_cal_radio_saveregs[4] =
24877                                             read_radio_reg(pi,
24878                                                            RADIO_2056_RX_LNAA_TUNE
24879                                                            | RADIO_2056_RX1);
24880
24881                                         offtune_val =
24882                                             (pi->
24883                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24884                                             >> 8;
24885                                         offtune_val =
24886                                             (offtune_val <= 0x7) ? 0xF : 0;
24887
24888                                         mod_radio_reg(pi,
24889                                                       RADIO_2056_RX_LNAA_TUNE |
24890                                                       RADIO_2056_RX1, 0xF0,
24891                                                       (offtune_val << 8));
24892                                 }
24893
24894                                 write_radio_reg(pi,
24895                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24896                                                 RADIO_2056_TX0, 0x9);
24897                                 write_radio_reg(pi,
24898                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24899                                                 RADIO_2056_RX1, 0x9);
24900                         } else {
24901                                 if (pi->pubpi.radiorev >= 5) {
24902                                         pi->tx_rx_cal_radio_saveregs[4] =
24903                                             read_radio_reg(pi,
24904                                                            RADIO_2056_RX_LNAG_MASTER
24905                                                            | RADIO_2056_RX1);
24906
24907                                         write_radio_reg(pi,
24908                                                         RADIO_2056_RX_LNAG_MASTER
24909                                                         | RADIO_2056_RX1, 0x40);
24910
24911                                         write_radio_reg(pi,
24912                                                         RADIO_2056_TX_TXSPARE2 |
24913                                                         RADIO_2056_TX0, bias_g);
24914
24915                                         write_radio_reg(pi,
24916                                                         RADIO_2056_RX_RXSPARE2 |
24917                                                         RADIO_2056_RX1, bias_g);
24918                                 } else {
24919                                         pi->tx_rx_cal_radio_saveregs[4] =
24920                                             read_radio_reg(pi,
24921                                                            RADIO_2056_RX_LNAG_TUNE
24922                                                            | RADIO_2056_RX1);
24923
24924                                         offtune_val =
24925                                             (pi->
24926                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24927                                             >> 8;
24928                                         offtune_val =
24929                                             (offtune_val <= 0x7) ? 0xF : 0;
24930
24931                                         mod_radio_reg(pi,
24932                                                       RADIO_2056_RX_LNAG_TUNE |
24933                                                       RADIO_2056_RX1, 0xF0,
24934                                                       (offtune_val << 8));
24935                                 }
24936
24937                                 write_radio_reg(pi,
24938                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24939                                                 RADIO_2056_TX0, 0x6);
24940                                 write_radio_reg(pi,
24941                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24942                                                 RADIO_2056_RX1, 0x6);
24943                         }
24944                 }
24945         }
24946 }
24947
24948 static void wlc_phy_rxcal_radio_cleanup_nphy(phy_info_t *pi, u8 rx_core)
24949 {
24950         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24951                 if (rx_core == PHY_CORE_0) {
24952                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24953                                 write_radio_reg(pi,
24954                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
24955                                                 pi->
24956                                                 tx_rx_cal_radio_saveregs[0]);
24957                                 write_radio_reg(pi,
24958                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
24959                                                 pi->
24960                                                 tx_rx_cal_radio_saveregs[1]);
24961
24962                         } else {
24963                                 write_radio_reg(pi,
24964                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
24965                                                 pi->
24966                                                 tx_rx_cal_radio_saveregs[0]);
24967                                 write_radio_reg(pi,
24968                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
24969                                                 pi->
24970                                                 tx_rx_cal_radio_saveregs[1]);
24971                         }
24972
24973                 } else {
24974                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24975                                 write_radio_reg(pi,
24976                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
24977                                                 pi->
24978                                                 tx_rx_cal_radio_saveregs[0]);
24979                                 write_radio_reg(pi,
24980                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
24981                                                 pi->
24982                                                 tx_rx_cal_radio_saveregs[1]);
24983
24984                         } else {
24985                                 write_radio_reg(pi,
24986                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
24987                                                 pi->
24988                                                 tx_rx_cal_radio_saveregs[0]);
24989                                 write_radio_reg(pi,
24990                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
24991                                                 pi->
24992                                                 tx_rx_cal_radio_saveregs[1]);
24993                         }
24994                 }
24995
24996         } else {
24997                 if (rx_core == PHY_CORE_0) {
24998                         write_radio_reg(pi,
24999                                         RADIO_2056_TX_RXIQCAL_TXMUX |
25000                                         RADIO_2056_TX1,
25001                                         pi->tx_rx_cal_radio_saveregs[0]);
25002
25003                         write_radio_reg(pi,
25004                                         RADIO_2056_RX_RXIQCAL_RXMUX |
25005                                         RADIO_2056_RX0,
25006                                         pi->tx_rx_cal_radio_saveregs[1]);
25007
25008                         if (pi->pubpi.radiorev >= 5) {
25009                                 write_radio_reg(pi,
25010                                                 RADIO_2056_RX_RXSPARE2 |
25011                                                 RADIO_2056_RX0,
25012                                                 pi->
25013                                                 tx_rx_cal_radio_saveregs[2]);
25014
25015                                 write_radio_reg(pi,
25016                                                 RADIO_2056_TX_TXSPARE2 |
25017                                                 RADIO_2056_TX1,
25018                                                 pi->
25019                                                 tx_rx_cal_radio_saveregs[3]);
25020                         }
25021
25022                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25023                                 if (pi->pubpi.radiorev >= 5) {
25024                                         write_radio_reg(pi,
25025                                                         RADIO_2056_RX_LNAA_MASTER
25026                                                         | RADIO_2056_RX0,
25027                                                         pi->
25028                                                         tx_rx_cal_radio_saveregs
25029                                                         [4]);
25030                                 } else {
25031                                         write_radio_reg(pi,
25032                                                         RADIO_2056_RX_LNAA_TUNE
25033                                                         | RADIO_2056_RX0,
25034                                                         pi->
25035                                                         tx_rx_cal_radio_saveregs
25036                                                         [4]);
25037                                 }
25038                         } else {
25039                                 if (pi->pubpi.radiorev >= 5) {
25040                                         write_radio_reg(pi,
25041                                                         RADIO_2056_RX_LNAG_MASTER
25042                                                         | RADIO_2056_RX0,
25043                                                         pi->
25044                                                         tx_rx_cal_radio_saveregs
25045                                                         [4]);
25046                                 } else {
25047                                         write_radio_reg(pi,
25048                                                         RADIO_2056_RX_LNAG_TUNE
25049                                                         | RADIO_2056_RX0,
25050                                                         pi->
25051                                                         tx_rx_cal_radio_saveregs
25052                                                         [4]);
25053                                 }
25054                         }
25055
25056                 } else {
25057                         write_radio_reg(pi,
25058                                         RADIO_2056_TX_RXIQCAL_TXMUX |
25059                                         RADIO_2056_TX0,
25060                                         pi->tx_rx_cal_radio_saveregs[0]);
25061
25062                         write_radio_reg(pi,
25063                                         RADIO_2056_RX_RXIQCAL_RXMUX |
25064                                         RADIO_2056_RX1,
25065                                         pi->tx_rx_cal_radio_saveregs[1]);
25066
25067                         if (pi->pubpi.radiorev >= 5) {
25068                                 write_radio_reg(pi,
25069                                                 RADIO_2056_RX_RXSPARE2 |
25070                                                 RADIO_2056_RX1,
25071                                                 pi->
25072                                                 tx_rx_cal_radio_saveregs[2]);
25073
25074                                 write_radio_reg(pi,
25075                                                 RADIO_2056_TX_TXSPARE2 |
25076                                                 RADIO_2056_TX0,
25077                                                 pi->
25078                                                 tx_rx_cal_radio_saveregs[3]);
25079                         }
25080
25081                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25082                                 if (pi->pubpi.radiorev >= 5) {
25083                                         write_radio_reg(pi,
25084                                                         RADIO_2056_RX_LNAA_MASTER
25085                                                         | RADIO_2056_RX1,
25086                                                         pi->
25087                                                         tx_rx_cal_radio_saveregs
25088                                                         [4]);
25089                                 } else {
25090                                         write_radio_reg(pi,
25091                                                         RADIO_2056_RX_LNAA_TUNE
25092                                                         | RADIO_2056_RX1,
25093                                                         pi->
25094                                                         tx_rx_cal_radio_saveregs
25095                                                         [4]);
25096                                 }
25097                         } else {
25098                                 if (pi->pubpi.radiorev >= 5) {
25099                                         write_radio_reg(pi,
25100                                                         RADIO_2056_RX_LNAG_MASTER
25101                                                         | RADIO_2056_RX1,
25102                                                         pi->
25103                                                         tx_rx_cal_radio_saveregs
25104                                                         [4]);
25105                                 } else {
25106                                         write_radio_reg(pi,
25107                                                         RADIO_2056_RX_LNAG_TUNE
25108                                                         | RADIO_2056_RX1,
25109                                                         pi->
25110                                                         tx_rx_cal_radio_saveregs
25111                                                         [4]);
25112                                 }
25113                         }
25114                 }
25115         }
25116 }
25117
25118 static void wlc_phy_rxcal_physetup_nphy(phy_info_t *pi, u8 rx_core)
25119 {
25120         u8 tx_core;
25121         u16 rx_antval, tx_antval;
25122
25123         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25124
25125                 tx_core = rx_core;
25126         } else {
25127                 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
25128         }
25129
25130         pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
25131         pi->tx_rx_cal_phy_saveregs[1] =
25132             read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
25133         pi->tx_rx_cal_phy_saveregs[2] =
25134             read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
25135         pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
25136         pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
25137         pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
25138         pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
25139         pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
25140         pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
25141         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25142                 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
25143                 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
25144                 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
25145                 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
25146         }
25147
25148         pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
25149         pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
25150         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25151                     0x29b, (0x1 << 0), (0) << 0);
25152
25153         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25154                     0x29b, (0x1 << 0), (0) << 0);
25155
25156         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25157
25158                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25159
25160                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
25161
25162         } else {
25163
25164                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
25165                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25166                 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
25167                 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
25168         }
25169
25170         mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
25171         mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
25172                     (0x1 << 2), (0x1 << 2));
25173         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
25174                 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
25175                             (0x1 << 0) | (0x1 << 1), 0);
25176                 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25177                             0x8f : 0xa5,
25178                             (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
25179         }
25180
25181         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
25182                                          RADIO_MIMO_CORESEL_CORE1 |
25183                                          RADIO_MIMO_CORESEL_CORE2);
25184
25185         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25186                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25187                                                   0, 0, 0,
25188                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
25189                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
25190                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25191                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
25192                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25193                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
25194                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25195                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
25196                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
25197                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
25198                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25199                 if (CHSPEC_IS40(pi->radio_chanspec)) {
25200                         wlc_phy_rfctrl_override_nphy_rev7(pi,
25201                                                           (0x1 << 7),
25202                                                           2, 0, 0,
25203                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
25204                 } else {
25205                         wlc_phy_rfctrl_override_nphy_rev7(pi,
25206                                                           (0x1 << 7),
25207                                                           0, 0, 0,
25208                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
25209                 }
25210                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
25211                                                   0, 0, 0,
25212                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25213                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
25214                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25215         } else {
25216                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
25217         }
25218
25219         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
25220
25221         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25222
25223                 wlc_phy_rfctrlintc_override_nphy(pi,
25224                                                  NPHY_RfctrlIntc_override_TRSW,
25225                                                  0x1, rx_core + 1);
25226         } else {
25227
25228                 if (rx_core == PHY_CORE_0) {
25229                         rx_antval = 0x1;
25230                         tx_antval = 0x8;
25231                 } else {
25232                         rx_antval = 0x4;
25233                         tx_antval = 0x2;
25234                 }
25235
25236                 wlc_phy_rfctrlintc_override_nphy(pi,
25237                                                  NPHY_RfctrlIntc_override_TRSW,
25238                                                  rx_antval, rx_core + 1);
25239                 wlc_phy_rfctrlintc_override_nphy(pi,
25240                                                  NPHY_RfctrlIntc_override_TRSW,
25241                                                  tx_antval, tx_core + 1);
25242         }
25243 }
25244
25245 static void wlc_phy_rxcal_phycleanup_nphy(phy_info_t *pi, u8 rx_core)
25246 {
25247
25248         write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
25249         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
25250                       pi->tx_rx_cal_phy_saveregs[1]);
25251         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
25252                       pi->tx_rx_cal_phy_saveregs[2]);
25253         write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
25254         write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
25255
25256         write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
25257         write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
25258         write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
25259         write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
25260         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25261                 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
25262                 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
25263                 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
25264                 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
25265         }
25266
25267         write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
25268         write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
25269 }
25270
25271 static void
25272 wlc_phy_rxcal_gainctrl_nphy_rev5(phy_info_t *pi, u8 rx_core,
25273                                  u16 *rxgain, u8 cal_type)
25274 {
25275
25276         u16 num_samps;
25277         phy_iq_est_t est[PHY_CORE_MAX];
25278         u8 tx_core;
25279         nphy_iq_comp_t save_comp, zero_comp;
25280         u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0, thresh_pwr =
25281             10000;
25282         s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
25283         bool gainctrl_done = false;
25284         u8 mix_tia_gain = 3;
25285         s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
25286         s8 curr_gaintbl_index = 3;
25287         u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
25288         nphy_ipa_txrxgain_t *nphy_rxcal_gaintbl;
25289         u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
25290         int fine_gain_idx;
25291         s8 txpwrindex;
25292         u16 nphy_rxcal_txgain[2];
25293
25294         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25295
25296                 tx_core = rx_core;
25297         } else {
25298                 tx_core = 1 - rx_core;
25299         }
25300
25301         num_samps = 1024;
25302         desired_log2_pwr = (cal_type == 0) ? 13 : 13;
25303
25304         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
25305         zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
25306         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
25307
25308         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25309                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25310                         mix_tia_gain = 3;
25311                 } else if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25312                         mix_tia_gain = 4;
25313                 } else {
25314                         mix_tia_gain = 6;
25315                 }
25316                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25317                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
25318                 } else {
25319                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
25320                 }
25321         } else {
25322                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25323                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
25324                 } else {
25325                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
25326                 }
25327         }
25328
25329         do {
25330
25331                 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
25332                     0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
25333                 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
25334                 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
25335                 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
25336                 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
25337                 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
25338
25339                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25340                         wlc_phy_rfctrl_override_1tomany_nphy(pi,
25341                                                              NPHY_REV7_RfctrlOverride_cmd_rxgain,
25342                                                              ((lpf_biq1 << 12) |
25343                                                               (lpf_biq0 << 8) |
25344                                                               (mix_tia_gain <<
25345                                                                4) | (lna2 << 2)
25346                                                               | lna1), 0x3, 0);
25347                 } else {
25348                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
25349                                                      ((hpvga << 12) |
25350                                                       (lpf_biq1 << 10) |
25351                                                       (lpf_biq0 << 8) |
25352                                                       (mix_tia_gain << 4) |
25353                                                       (lna2 << 2) | lna1), 0x3,
25354                                                      0);
25355                 }
25356
25357                 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
25358
25359                 if (txpwrindex == -1) {
25360                         nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
25361                         nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
25362                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
25363                                                  2, 0x110, 16,
25364                                                  nphy_rxcal_txgain);
25365                 } else {
25366                         wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
25367                                                  false);
25368                 }
25369
25370                 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
25371                                      NPHY_RXCAL_TONEFREQ_40MHz :
25372                                      NPHY_RXCAL_TONEFREQ_20MHz,
25373                                      NPHY_RXCAL_TONEAMP, 0, cal_type, false);
25374
25375                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25376                 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
25377                 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
25378                 curr_pwr = i_pwr + q_pwr;
25379
25380                 switch (gainctrl_dirn) {
25381                 case NPHY_RXCAL_GAIN_INIT:
25382                         if (curr_pwr > thresh_pwr) {
25383                                 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
25384                                 prev_gaintbl_index = curr_gaintbl_index;
25385                                 curr_gaintbl_index--;
25386                         } else {
25387                                 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
25388                                 prev_gaintbl_index = curr_gaintbl_index;
25389                                 curr_gaintbl_index++;
25390                         }
25391                         break;
25392
25393                 case NPHY_RXCAL_GAIN_UP:
25394                         if (curr_pwr > thresh_pwr) {
25395                                 gainctrl_done = true;
25396                                 optim_pwr = prev_pwr;
25397                                 optim_gaintbl_index = prev_gaintbl_index;
25398                         } else {
25399                                 prev_gaintbl_index = curr_gaintbl_index;
25400                                 curr_gaintbl_index++;
25401                         }
25402                         break;
25403
25404                 case NPHY_RXCAL_GAIN_DOWN:
25405                         if (curr_pwr > thresh_pwr) {
25406                                 prev_gaintbl_index = curr_gaintbl_index;
25407                                 curr_gaintbl_index--;
25408                         } else {
25409                                 gainctrl_done = true;
25410                                 optim_pwr = curr_pwr;
25411                                 optim_gaintbl_index = curr_gaintbl_index;
25412                         }
25413                         break;
25414
25415                 default:
25416                         break;
25417                 }
25418
25419                 if ((curr_gaintbl_index < 0) ||
25420                     (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
25421                         gainctrl_done = true;
25422                         optim_pwr = curr_pwr;
25423                         optim_gaintbl_index = prev_gaintbl_index;
25424                 } else {
25425                         prev_pwr = curr_pwr;
25426                 }
25427
25428                 wlc_phy_stopplayback_nphy(pi);
25429         } while (!gainctrl_done);
25430
25431         hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
25432         lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
25433         lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
25434         lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
25435         lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
25436         txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
25437
25438         actual_log2_pwr = wlc_phy_nbits(optim_pwr);
25439         delta_pwr = desired_log2_pwr - actual_log2_pwr;
25440
25441         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25442                 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
25443
25444                 if (fine_gain_idx + (int)lpf_biq0 > 10) {
25445                         lpf_biq1 = 10 - lpf_biq0;
25446                 } else {
25447                         lpf_biq1 = (u16) max(fine_gain_idx, 0);
25448                 }
25449                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
25450                                                      NPHY_REV7_RfctrlOverride_cmd_rxgain,
25451                                                      ((lpf_biq1 << 12) |
25452                                                       (lpf_biq0 << 8) |
25453                                                       (mix_tia_gain << 4) |
25454                                                       (lna2 << 2) | lna1), 0x3,
25455                                                      0);
25456         } else {
25457                 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
25458                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
25459                                              ((hpvga << 12) | (lpf_biq1 << 10) |
25460                                               (lpf_biq0 << 8) | (mix_tia_gain <<
25461                                                                  4) | (lna2 <<
25462                                                                        2) |
25463                                               lna1), 0x3, 0);
25464
25465         }
25466
25467         if (rxgain != NULL) {
25468                 *rxgain++ = lna1;
25469                 *rxgain++ = lna2;
25470                 *rxgain++ = mix_tia_gain;
25471                 *rxgain++ = lpf_biq0;
25472                 *rxgain++ = lpf_biq1;
25473                 *rxgain = hpvga;
25474         }
25475
25476         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
25477 }
25478
25479 static void
25480 wlc_phy_rxcal_gainctrl_nphy(phy_info_t *pi, u8 rx_core, u16 *rxgain,
25481                             u8 cal_type)
25482 {
25483         wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
25484 }
25485
25486 static u8
25487 wlc_phy_rc_sweep_nphy(phy_info_t *pi, u8 core_idx, u8 loopback_type)
25488 {
25489         u32 target_bws[2] = { 9500, 21000 };
25490         u32 ref_tones[2] = { 3000, 6000 };
25491         u32 target_bw, ref_tone;
25492
25493         u32 target_pwr_ratios[2] = { 28606, 18468 };
25494         u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
25495
25496         u16 start_rccal_ovr_val = 128;
25497         u16 txlpf_rccal_lpc_ovr_val = 128;
25498         u16 rxlpf_rccal_hpc_ovr_val = 159;
25499
25500         u16 orig_txlpf_rccal_lpc_ovr_val;
25501         u16 orig_rxlpf_rccal_hpc_ovr_val;
25502         u16 radio_addr_offset_rx;
25503         u16 radio_addr_offset_tx;
25504         u16 orig_dcBypass;
25505         u16 orig_RxStrnFilt40Num[6];
25506         u16 orig_RxStrnFilt40Den[4];
25507         u16 orig_rfctrloverride[2];
25508         u16 orig_rfctrlauxreg[2];
25509         u16 orig_rfctrlrssiothers;
25510         u16 tx_lpf_bw = 4;
25511
25512         u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
25513         u16 lpf_hpc = 7, hpvga_hpc = 7;
25514
25515         s8 rccal_stepsize;
25516         u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
25517         u32 ref_iq_vals = 0, target_iq_vals = 0;
25518         u16 num_samps, log_num_samps = 10;
25519         phy_iq_est_t est[PHY_CORE_MAX];
25520
25521         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25522                 return 0;
25523         }
25524
25525         num_samps = (1 << log_num_samps);
25526
25527         if (CHSPEC_IS40(pi->radio_chanspec)) {
25528                 target_bw = target_bws[1];
25529                 target_pwr_ratio = target_pwr_ratios[1];
25530                 ref_tone = ref_tones[1];
25531                 rx_lpf_bw = rx_lpf_bws[1];
25532         } else {
25533                 target_bw = target_bws[0];
25534                 target_pwr_ratio = target_pwr_ratios[0];
25535                 ref_tone = ref_tones[0];
25536                 rx_lpf_bw = rx_lpf_bws[0];
25537         }
25538
25539         if (core_idx == 0) {
25540                 radio_addr_offset_rx = RADIO_2056_RX0;
25541                 radio_addr_offset_tx =
25542                     (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
25543         } else {
25544                 radio_addr_offset_rx = RADIO_2056_RX1;
25545                 radio_addr_offset_tx =
25546                     (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
25547         }
25548
25549         orig_txlpf_rccal_lpc_ovr_val =
25550             read_radio_reg(pi,
25551                            (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx));
25552         orig_rxlpf_rccal_hpc_ovr_val =
25553             read_radio_reg(pi,
25554                            (RADIO_2056_RX_RXLPF_RCCAL_HPC |
25555                             radio_addr_offset_rx));
25556
25557         orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
25558
25559         orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
25560         orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
25561         orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
25562         orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
25563         orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
25564         orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
25565         orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
25566         orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
25567         orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
25568         orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
25569
25570         orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
25571         orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
25572         orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
25573         orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
25574         orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
25575
25576         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
25577                         txlpf_rccal_lpc_ovr_val);
25578
25579         write_radio_reg(pi,
25580                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
25581                         rxlpf_rccal_hpc_ovr_val);
25582
25583         mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
25584
25585         write_phy_reg(pi, 0x267, 0x02d4);
25586         write_phy_reg(pi, 0x268, 0x0000);
25587         write_phy_reg(pi, 0x269, 0x0000);
25588         write_phy_reg(pi, 0x26a, 0x0000);
25589         write_phy_reg(pi, 0x26b, 0x0000);
25590         write_phy_reg(pi, 0x26c, 0x02d4);
25591         write_phy_reg(pi, 0x26d, 0x0000);
25592         write_phy_reg(pi, 0x26e, 0x0000);
25593         write_phy_reg(pi, 0x26f, 0x0000);
25594         write_phy_reg(pi, 0x270, 0x0000);
25595
25596         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
25597         or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
25598         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
25599         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
25600
25601         mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
25602                     (0x7 << 10), (tx_lpf_bw << 10));
25603         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
25604                     (0x7 << 0), (hpvga_hpc << 0));
25605         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
25606                     (0x7 << 4), (lpf_hpc << 4));
25607         mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
25608                     (0x7 << 8), (rx_lpf_bw << 8));
25609
25610         rccal_stepsize = 16;
25611         rccal_val = start_rccal_ovr_val + rccal_stepsize;
25612
25613         while (rccal_stepsize >= 0) {
25614                 write_radio_reg(pi,
25615                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25616                                  radio_addr_offset_rx), rccal_val);
25617
25618                 if (rccal_stepsize == 16) {
25619
25620                         wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
25621                                              0, 1, false);
25622                         udelay(2);
25623
25624                         wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25625
25626                         if (core_idx == 0) {
25627                                 ref_iq_vals =
25628                                     max_t(u32, (est[0].i_pwr +
25629                                          est[0].q_pwr) >> (log_num_samps + 1),
25630                                         1);
25631                         } else {
25632                                 ref_iq_vals =
25633                                     max_t(u32, (est[1].i_pwr +
25634                                          est[1].q_pwr) >> (log_num_samps + 1),
25635                                         1);
25636                         }
25637
25638                         wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
25639                                              0, 1, false);
25640                         udelay(2);
25641                 }
25642
25643                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25644
25645                 if (core_idx == 0) {
25646                         target_iq_vals =
25647                             (est[0].i_pwr + est[0].q_pwr) >> (log_num_samps +
25648                                                               1);
25649                 } else {
25650                         target_iq_vals =
25651                             (est[1].i_pwr + est[1].q_pwr) >> (log_num_samps +
25652                                                               1);
25653                 }
25654                 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
25655
25656                 if (rccal_stepsize == 0) {
25657                         rccal_stepsize--;
25658                 } else if (rccal_stepsize == 1) {
25659                         last_rccal_val = rccal_val;
25660                         rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
25661                         last_pwr_ratio = pwr_ratio;
25662                         rccal_stepsize--;
25663                 } else {
25664                         rccal_stepsize = (rccal_stepsize >> 1);
25665                         rccal_val += ((pwr_ratio > target_pwr_ratio) ?
25666                                       rccal_stepsize : (-rccal_stepsize));
25667                 }
25668
25669                 if (rccal_stepsize == -1) {
25670                         best_rccal_val =
25671                             (ABS((int)last_pwr_ratio - (int)target_pwr_ratio) <
25672                              ABS((int)pwr_ratio -
25673                                  (int)target_pwr_ratio)) ? last_rccal_val :
25674                             rccal_val;
25675
25676                         if (CHSPEC_IS40(pi->radio_chanspec)) {
25677                                 if ((best_rccal_val > 140)
25678                                     || (best_rccal_val < 135)) {
25679                                         best_rccal_val = 138;
25680                                 }
25681                         } else {
25682                                 if ((best_rccal_val > 142)
25683                                     || (best_rccal_val < 137)) {
25684                                         best_rccal_val = 140;
25685                                 }
25686                         }
25687
25688                         write_radio_reg(pi,
25689                                         (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25690                                          radio_addr_offset_rx), best_rccal_val);
25691                 }
25692         }
25693
25694         wlc_phy_stopplayback_nphy(pi);
25695
25696         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
25697                         orig_txlpf_rccal_lpc_ovr_val);
25698         write_radio_reg(pi,
25699                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
25700                         orig_rxlpf_rccal_hpc_ovr_val);
25701
25702         mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
25703
25704         write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
25705         write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
25706         write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
25707         write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
25708         write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
25709         write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
25710         write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
25711         write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
25712         write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
25713         write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
25714
25715         write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
25716         write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
25717         write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
25718         write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
25719         write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
25720
25721         pi->nphy_anarxlpf_adjusted = false;
25722
25723         return best_rccal_val - 0x80;
25724 }
25725
25726 #define WAIT_FOR_SCOPE  4000
25727 static int
25728 wlc_phy_cal_rxiq_nphy_rev3(phy_info_t *pi, nphy_txgains_t target_gain,
25729                            u8 cal_type, bool debug)
25730 {
25731         u16 orig_BBConfig;
25732         u8 core_no, rx_core;
25733         u8 best_rccal[2];
25734         u16 gain_save[2];
25735         u16 cal_gain[2];
25736         nphy_iqcal_params_t cal_params[2];
25737         u8 rxcore_state;
25738         s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
25739         s8 txlpf_idac;
25740         bool phyhang_avoid_state = false;
25741         bool skip_rxiqcal = false;
25742
25743         orig_BBConfig = read_phy_reg(pi, 0x01);
25744         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25745
25746         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25747
25748         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25749                 phyhang_avoid_state = pi->phyhang_avoid;
25750                 pi->phyhang_avoid = false;
25751         }
25752
25753         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25754
25755         for (core_no = 0; core_no <= 1; core_no++) {
25756                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25757                                               &cal_params[core_no]);
25758                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25759         }
25760
25761         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25762
25763         rxcore_state = wlc_phy_rxcore_getstate_nphy((wlc_phy_t *) pi);
25764
25765         for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
25766
25767                 skip_rxiqcal =
25768                     ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
25769
25770                 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
25771
25772                 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
25773
25774                 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
25775
25776                         wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
25777
25778                         wlc_phy_tx_tone_nphy(pi,
25779                                              (CHSPEC_IS40(pi->radio_chanspec)) ?
25780                                              NPHY_RXCAL_TONEFREQ_40MHz :
25781                                              NPHY_RXCAL_TONEFREQ_20MHz,
25782                                              NPHY_RXCAL_TONEAMP, 0, cal_type,
25783                                              false);
25784
25785                         if (debug)
25786                                 mdelay(WAIT_FOR_SCOPE);
25787
25788                         wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
25789                         wlc_phy_stopplayback_nphy(pi);
25790                 }
25791
25792                 if (((cal_type == 1) || (cal_type == 2))
25793                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
25794
25795                         if (rx_core == PHY_CORE_1) {
25796
25797                                 if (rxcore_state == 1) {
25798                                         wlc_phy_rxcore_setstate_nphy((wlc_phy_t
25799                                                                       *) pi, 3);
25800                                 }
25801
25802                                 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
25803                                                             1);
25804
25805                                 best_rccal[rx_core] =
25806                                     wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
25807                                 pi->nphy_rccal_value = best_rccal[rx_core];
25808
25809                                 if (rxcore_state == 1) {
25810                                         wlc_phy_rxcore_setstate_nphy((wlc_phy_t
25811                                                                       *) pi,
25812                                                                      rxcore_state);
25813                                 }
25814                         }
25815                 }
25816
25817                 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
25818
25819                 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
25820                 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
25821         }
25822
25823         if ((cal_type == 1) || (cal_type == 2)) {
25824
25825                 best_rccal[0] = best_rccal[1];
25826                 write_radio_reg(pi,
25827                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25828                                  RADIO_2056_RX0), (best_rccal[0] | 0x80));
25829
25830                 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
25831                         rxlpf_rccal_hpc =
25832                             (((int)best_rccal[rx_core] - 12) >> 1) + 10;
25833                         txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
25834
25835                         if (PHY_IPA(pi)) {
25836                                 txlpf_rccal_lpc += IS40MHZ(pi) ? 24 : 12;
25837                                 txlpf_idac = IS40MHZ(pi) ? 0x0e : 0x13;
25838                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
25839                                                  TXLPF_IDAC_4, txlpf_idac);
25840                         }
25841
25842                         rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31), 0);
25843                         txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31), 0);
25844
25845                         write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
25846                                              ((rx_core ==
25847                                                PHY_CORE_0) ? RADIO_2056_RX0 :
25848                                               RADIO_2056_RX1)),
25849                                         (rxlpf_rccal_hpc | 0x80));
25850
25851                         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
25852                                              ((rx_core ==
25853                                                PHY_CORE_0) ? RADIO_2056_TX0 :
25854                                               RADIO_2056_TX1)),
25855                                         (txlpf_rccal_lpc | 0x80));
25856                 }
25857         }
25858
25859         write_phy_reg(pi, 0x01, orig_BBConfig);
25860
25861         wlc_phy_resetcca_nphy(pi);
25862
25863         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25864                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
25865                                                      NPHY_REV7_RfctrlOverride_cmd_rxgain,
25866                                                      0, 0x3, 1);
25867         } else {
25868                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
25869         }
25870         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
25871
25872         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
25873                                  gain_save);
25874
25875         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25876                 pi->phyhang_avoid = phyhang_avoid_state;
25877         }
25878
25879         wlc_phy_stay_in_carriersearch_nphy(pi, false);
25880
25881         return 0;
25882 }
25883
25884 static int
25885 wlc_phy_cal_rxiq_nphy_rev2(phy_info_t *pi, nphy_txgains_t target_gain,
25886                            bool debug)
25887 {
25888         phy_iq_est_t est[PHY_CORE_MAX];
25889         u8 core_num, rx_core, tx_core;
25890         u16 lna_vals[] = { 0x3, 0x3, 0x1 };
25891         u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
25892         u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
25893         s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
25894         s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
25895         u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
25896         u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
25897         u16 num_samps;
25898         u32 i_pwr, q_pwr, tot_pwr[3];
25899         u8 gain_pass, use_hpf_num;
25900         u16 mask, val1, val2;
25901         u16 core_no;
25902         u16 gain_save[2];
25903         u16 cal_gain[2];
25904         nphy_iqcal_params_t cal_params[2];
25905         u8 phy_bw;
25906         int bcmerror = 0;
25907         bool first_playtone = true;
25908
25909         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25910
25911         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25912
25913                 wlc_phy_reapply_txcal_coeffs_nphy(pi);
25914         }
25915
25916         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25917
25918         for (core_no = 0; core_no <= 1; core_no++) {
25919                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25920                                               &cal_params[core_no]);
25921                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25922         }
25923
25924         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25925
25926         num_samps = 1024;
25927         desired_log2_pwr = 13;
25928
25929         for (core_num = 0; core_num < 2; core_num++) {
25930
25931                 rx_core = core_num;
25932                 tx_core = 1 - core_num;
25933
25934                 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
25935                 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25936                                                 0xa6 : 0xa7);
25937                 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
25938                 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25939                                                  0x91 : 0x92);
25940                 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
25941                                                  0x91 : 0x92);
25942
25943                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
25944                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25945
25946                 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
25947                            ((0x1 << 1) | (0x1 << 2)));
25948                 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
25949
25950                 if (((pi->nphy_rxcalparams) & 0xff000000)) {
25951
25952                         write_phy_reg(pi,
25953                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
25954                                       (CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 :
25955                                        0x110));
25956                 } else {
25957
25958                         write_phy_reg(pi,
25959                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
25960                                       (CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 :
25961                                        0x120));
25962                 }
25963
25964                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
25965                               (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
25966                                0x114));
25967
25968                 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
25969                 if (rx_core == PHY_CORE_0) {
25970                         val1 = RADIO_2055_COUPLE_RX_MASK;
25971                         val2 = RADIO_2055_COUPLE_TX_MASK;
25972                 } else {
25973                         val1 = RADIO_2055_COUPLE_TX_MASK;
25974                         val2 = RADIO_2055_COUPLE_RX_MASK;
25975                 }
25976
25977                 if ((pi->nphy_rxcalparams & 0x10000)) {
25978                         mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
25979                                       val1);
25980                         mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
25981                                       val2);
25982                 }
25983
25984                 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
25985
25986                         if (debug)
25987                                 mdelay(WAIT_FOR_SCOPE);
25988
25989                         if (gain_pass < 3) {
25990                                 curr_lna = lna_vals[gain_pass];
25991                                 curr_hpf1 = hpf1_vals[gain_pass];
25992                                 curr_hpf2 = hpf2_vals[gain_pass];
25993                         } else {
25994
25995                                 if (tot_pwr[1] > 10000) {
25996                                         curr_lna = lna_vals[2];
25997                                         curr_hpf1 = hpf1_vals[2];
25998                                         curr_hpf2 = hpf2_vals[2];
25999                                         use_hpf_num = 1;
26000                                         curr_hpf = curr_hpf1;
26001                                         actual_log2_pwr =
26002                                             wlc_phy_nbits(tot_pwr[2]);
26003                                 } else {
26004                                         if (tot_pwr[0] > 10000) {
26005                                                 curr_lna = lna_vals[1];
26006                                                 curr_hpf1 = hpf1_vals[1];
26007                                                 curr_hpf2 = hpf2_vals[1];
26008                                                 use_hpf_num = 1;
26009                                                 curr_hpf = curr_hpf1;
26010                                                 actual_log2_pwr =
26011                                                     wlc_phy_nbits(tot_pwr[1]);
26012                                         } else {
26013                                                 curr_lna = lna_vals[0];
26014                                                 curr_hpf1 = hpf1_vals[0];
26015                                                 curr_hpf2 = hpf2_vals[0];
26016                                                 use_hpf_num = 2;
26017                                                 curr_hpf = curr_hpf2;
26018                                                 actual_log2_pwr =
26019                                                     wlc_phy_nbits(tot_pwr[0]);
26020                                         }
26021                                 }
26022
26023                                 hpf_change = desired_log2_pwr - actual_log2_pwr;
26024                                 curr_hpf += hpf_change;
26025                                 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
26026                                 if (use_hpf_num == 1) {
26027                                         curr_hpf1 = curr_hpf;
26028                                 } else {
26029                                         curr_hpf2 = curr_hpf;
26030                                 }
26031                         }
26032
26033                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
26034                                                      ((curr_hpf2 << 8) |
26035                                                       (curr_hpf1 << 4) |
26036                                                       (curr_lna << 2)), 0x3, 0);
26037                         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
26038
26039                         wlc_phy_stopplayback_nphy(pi);
26040
26041                         if (first_playtone) {
26042                                 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
26043                                                                 (u16) (pi->
26044                                                                           nphy_rxcalparams
26045                                                                           &
26046                                                                           0xffff),
26047                                                                 0, 0, true);
26048                                 first_playtone = false;
26049                         } else {
26050                                 phy_bw =
26051                                     (CHSPEC_IS40(pi->radio_chanspec)) ? 40 : 20;
26052                                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
26053                                                         0, 0, 0, true);
26054                         }
26055
26056                         if (bcmerror == 0) {
26057                                 if (gain_pass < 3) {
26058
26059                                         wlc_phy_rx_iq_est_nphy(pi, est,
26060                                                                num_samps, 32,
26061                                                                0);
26062                                         i_pwr =
26063                                             (est[rx_core].i_pwr +
26064                                              num_samps / 2) / num_samps;
26065                                         q_pwr =
26066                                             (est[rx_core].q_pwr +
26067                                              num_samps / 2) / num_samps;
26068                                         tot_pwr[gain_pass] = i_pwr + q_pwr;
26069                                 } else {
26070
26071                                         wlc_phy_calc_rx_iq_comp_nphy(pi,
26072                                                                      (1 <<
26073                                                                       rx_core));
26074                                 }
26075
26076                                 wlc_phy_stopplayback_nphy(pi);
26077                         }
26078
26079                         if (bcmerror != 0)
26080                                 break;
26081                 }
26082
26083                 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
26084                 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
26085
26086                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
26087                               0x92, orig_RfctrlIntcTx);
26088                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
26089                               0x92, orig_RfctrlIntcRx);
26090                 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
26091                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
26092                               0xa7, orig_AfectrlCore);
26093                 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
26094
26095                 if (bcmerror != 0)
26096                         break;
26097         }
26098
26099         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
26100         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
26101
26102         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26103                                  gain_save);
26104
26105         wlc_phy_stay_in_carriersearch_nphy(pi, false);
26106
26107         return bcmerror;
26108 }
26109
26110 int
26111 wlc_phy_cal_rxiq_nphy(phy_info_t *pi, nphy_txgains_t target_gain,
26112                       u8 cal_type, bool debug)
26113 {
26114         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26115
26116                 cal_type = 0;
26117         }
26118         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26119                 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
26120                                                   debug);
26121         } else {
26122                 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
26123         }
26124 }
26125
26126 static void wlc_phy_extpa_set_tx_digi_filts_nphy(phy_info_t *pi)
26127 {
26128         int j, type = 2;
26129         u16 addr_offset = 0x2c5;
26130
26131         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26132                 write_phy_reg(pi, addr_offset + j,
26133                               NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
26134         }
26135 }
26136
26137 static void wlc_phy_ipa_set_tx_digi_filts_nphy(phy_info_t *pi)
26138 {
26139         int j, type;
26140         u16 addr_offset[] = { 0x186, 0x195,
26141                 0x2c5
26142         };
26143
26144         for (type = 0; type < 3; type++) {
26145                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26146                         write_phy_reg(pi, addr_offset[type] + j,
26147                                       NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
26148                 }
26149         }
26150
26151         if (IS40MHZ(pi)) {
26152                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26153                         write_phy_reg(pi, 0x186 + j,
26154                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
26155                 }
26156         } else {
26157                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26158                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26159                                 write_phy_reg(pi, 0x186 + j,
26160                                               NPHY_IPA_REV4_txdigi_filtcoeffs[5]
26161                                               [j]);
26162                         }
26163                 }
26164
26165                 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
26166                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26167                                 write_phy_reg(pi, 0x2c5 + j,
26168                                               NPHY_IPA_REV4_txdigi_filtcoeffs[6]
26169                                               [j]);
26170                         }
26171                 }
26172         }
26173 }
26174
26175 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(phy_info_t *pi)
26176 {
26177         int j;
26178
26179         if (IS40MHZ(pi)) {
26180                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26181                         write_phy_reg(pi, 0x195 + j,
26182                                       NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
26183                 }
26184         } else {
26185                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26186                         write_phy_reg(pi, 0x186 + j,
26187                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
26188                 }
26189         }
26190 }
26191
26192 static u16 wlc_phy_ipa_get_bbmult_nphy(phy_info_t *pi)
26193 {
26194         u16 m0m1;
26195
26196         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
26197
26198         return m0m1;
26199 }
26200
26201 static void wlc_phy_ipa_set_bbmult_nphy(phy_info_t *pi, u8 m0, u8 m1)
26202 {
26203         u16 m0m1 = (u16) ((m0 << 8) | m1);
26204
26205         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
26206         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
26207 }
26208
26209 static u32 *wlc_phy_get_ipa_gaintbl_nphy(phy_info_t *pi)
26210 {
26211         u32 *tx_pwrctrl_tbl = NULL;
26212
26213         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26214
26215                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26216
26217                         if ((pi->pubpi.radiorev == 4)
26218                             || (pi->pubpi.radiorev == 6)) {
26219
26220                                 tx_pwrctrl_tbl =
26221                                     nphy_tpc_txgain_ipa_2g_2057rev4n6;
26222                         } else if (pi->pubpi.radiorev == 3) {
26223
26224                                 tx_pwrctrl_tbl =
26225                                     nphy_tpc_txgain_ipa_2g_2057rev3;
26226                         } else if (pi->pubpi.radiorev == 5) {
26227
26228                                 tx_pwrctrl_tbl =
26229                                     nphy_tpc_txgain_ipa_2g_2057rev5;
26230                         } else if ((pi->pubpi.radiorev == 7)
26231                                    || (pi->pubpi.radiorev == 8)) {
26232
26233                                 tx_pwrctrl_tbl =
26234                                     nphy_tpc_txgain_ipa_2g_2057rev7;
26235                         }
26236
26237                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
26238
26239                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
26240                         if (pi->sh->chip == BCM47162_CHIP_ID) {
26241
26242                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
26243                         }
26244
26245                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
26246
26247                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
26248                 } else {
26249
26250                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
26251                 }
26252
26253         } else {
26254
26255                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26256                         if ((pi->pubpi.radiorev == 3) ||
26257                             (pi->pubpi.radiorev == 4) ||
26258                             (pi->pubpi.radiorev == 6)) {
26259
26260                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
26261                         } else if ((pi->pubpi.radiorev == 7)
26262                                    || (pi->pubpi.radiorev == 8)) {
26263
26264                                 tx_pwrctrl_tbl =
26265                                     nphy_tpc_txgain_ipa_5g_2057rev7;
26266                         }
26267
26268                 } else {
26269                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
26270                 }
26271         }
26272
26273         return tx_pwrctrl_tbl;
26274 }
26275
26276 static void
26277 wlc_phy_papd_cal_setup_nphy(phy_info_t *pi, nphy_papd_restore_state *state,
26278                             u8 core)
26279 {
26280         s32 tone_freq;
26281         u8 off_core;
26282         u16 mixgain = 0;
26283
26284         off_core = core ^ 0x1;
26285         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26286
26287                 if (NREV_IS(pi->pubpi.phy_rev, 7)
26288                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
26289                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26290                                                           wlc_phy_read_lpf_bw_ctl_nphy
26291                                                           (pi, 0), 0, 0,
26292                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26293                 }
26294
26295                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26296                         if (pi->pubpi.radiorev == 5) {
26297                                 mixgain = (core == 0) ? 0x20 : 0x00;
26298
26299                         } else if ((pi->pubpi.radiorev == 7)
26300                                    || (pi->pubpi.radiorev == 8)) {
26301
26302                                 mixgain = 0x00;
26303
26304                         } else if ((pi->pubpi.radiorev <= 4)
26305                                    || (pi->pubpi.radiorev == 6)) {
26306
26307                                 mixgain = 0x00;
26308                         }
26309
26310                 } else {
26311                         if ((pi->pubpi.radiorev == 4) ||
26312                             (pi->pubpi.radiorev == 6)) {
26313
26314                                 mixgain = 0x50;
26315                         } else if ((pi->pubpi.radiorev == 3)
26316                                    || (pi->pubpi.radiorev == 7)
26317                                    || (pi->pubpi.radiorev == 8)) {
26318
26319                                 mixgain = 0x0;
26320                         }
26321                 }
26322
26323                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
26324                                                   mixgain, (1 << core), 0,
26325                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26326
26327                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26328                                                      NPHY_REV7_RfctrlOverride_cmd_tx_pu,
26329                                                      1, (1 << core), 0);
26330                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26331                                                      NPHY_REV7_RfctrlOverride_cmd_tx_pu,
26332                                                      0, (1 << off_core), 0);
26333
26334                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26335                                                   0, 0x3, 0,
26336                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26337                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
26338                                                   (1 << core), 0,
26339                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26340                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
26341                                                   (1 << core), 0,
26342                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26343                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
26344                                                   (1 << core), 0,
26345                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26346                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
26347                                                   (1 << core), 0,
26348                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26349                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
26350                                                   (1 << core), 0,
26351                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26352                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
26353                                                   (1 << core), 0,
26354                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26355                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
26356                                                   (1 << core), 0,
26357                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26358
26359                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
26360                                                   0, (1 << core), 0,
26361                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26362                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
26363                                                   (1 << core), 0,
26364                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26365
26366                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
26367                                                     0xa6 : 0xa7);
26368                 state->afeoverride[core] =
26369                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
26370                 state->afectrl[off_core] =
26371                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
26372                 state->afeoverride[off_core] =
26373                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
26374
26375                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
26376                             (0x1 << 2), 0);
26377                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
26378                                  0xa5), (0x1 << 2), (0x1 << 2));
26379
26380                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
26381                             (0x1 << 2), (0x1 << 2));
26382                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
26383                                  0x8f), (0x1 << 2), (0x1 << 2));
26384
26385                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26386                         state->pwrup[core] =
26387                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26388                                             TXRXCOUPLE_2G_PWRUP);
26389                         state->atten[core] =
26390                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26391                                             TXRXCOUPLE_2G_ATTEN);
26392                         state->pwrup[off_core] =
26393                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26394                                             TXRXCOUPLE_2G_PWRUP);
26395                         state->atten[off_core] =
26396                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26397                                             TXRXCOUPLE_2G_ATTEN);
26398
26399                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26400                                          TXRXCOUPLE_2G_PWRUP, 0xc);
26401
26402                         if ((pi->pubpi.radiorev == 3) ||
26403                             (pi->pubpi.radiorev == 4) ||
26404                             (pi->pubpi.radiorev == 6)) {
26405
26406                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26407                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
26408
26409                         } else if (pi->pubpi.radiorev == 5) {
26410
26411                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26412                                                  TXRXCOUPLE_2G_ATTEN,
26413                                                  (core == 0) ? 0xf7 : 0xf2);
26414
26415                         } else if ((pi->pubpi.radiorev == 7)
26416                                    || (pi->pubpi.radiorev == 8)) {
26417
26418                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26419                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
26420
26421                         }
26422
26423                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26424                                          TXRXCOUPLE_2G_PWRUP, 0x0);
26425                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26426                                          TXRXCOUPLE_2G_ATTEN, 0xff);
26427
26428                 } else {
26429                         state->pwrup[core] =
26430                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26431                                             TXRXCOUPLE_5G_PWRUP);
26432                         state->atten[core] =
26433                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26434                                             TXRXCOUPLE_5G_ATTEN);
26435                         state->pwrup[off_core] =
26436                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26437                                             TXRXCOUPLE_5G_PWRUP);
26438                         state->atten[off_core] =
26439                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26440                                             TXRXCOUPLE_5G_ATTEN);
26441
26442                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26443                                          TXRXCOUPLE_5G_PWRUP, 0xc);
26444
26445                         if ((pi->pubpi.radiorev == 7)
26446                             || (pi->pubpi.radiorev == 8)) {
26447
26448                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26449                                                  TXRXCOUPLE_5G_ATTEN, 0xf4);
26450
26451                         } else {
26452                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26453                                                  TXRXCOUPLE_5G_ATTEN, 0xf0);
26454                         }
26455
26456                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26457                                          TXRXCOUPLE_5G_PWRUP, 0x0);
26458                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26459                                          TXRXCOUPLE_5G_ATTEN, 0xff);
26460                 }
26461
26462                 tone_freq = 4000;
26463
26464                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
26465
26466                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26467                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
26468
26469                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26470                             0x2a4, (0x1 << 13), (1) << 13);
26471
26472                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
26473                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
26474
26475                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
26476                             0x2a4, (0x1 << 13), (0) << 13);
26477
26478         } else {
26479
26480                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
26481
26482                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
26483
26484                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
26485
26486                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
26487                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
26488
26489                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
26490                                                     0xa6 : 0xa7);
26491                 state->afeoverride[core] =
26492                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
26493
26494                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
26495                             (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
26496                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
26497                                  0xa5),
26498                             (0x1 << 0) |
26499                             (0x1 << 1) |
26500                             (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
26501
26502                 state->vga_master[core] =
26503                     READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
26504                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
26505                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26506                         state->fbmix[core] =
26507                             READ_RADIO_REG2(pi, RADIO_2056, RX, core,
26508                                             TXFBMIX_G);
26509                         state->intpa_master[core] =
26510                             READ_RADIO_REG2(pi, RADIO_2056, TX, core,
26511                                             INTPAG_MASTER);
26512
26513                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
26514                                          0x03);
26515                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26516                                          INTPAG_MASTER, 0x04);
26517                 } else {
26518                         state->fbmix[core] =
26519                             READ_RADIO_REG2(pi, RADIO_2056, RX, core,
26520                                             TXFBMIX_A);
26521                         state->intpa_master[core] =
26522                             READ_RADIO_REG2(pi, RADIO_2056, TX, core,
26523                                             INTPAA_MASTER);
26524
26525                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
26526                                          0x03);
26527                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26528                                          INTPAA_MASTER, 0x04);
26529
26530                 }
26531
26532                 tone_freq = 4000;
26533
26534                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
26535
26536                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26537                             0x29b, (0x1 << 0), (1) << 0);
26538
26539                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
26540                             0x29b, (0x1 << 0), (0) << 0);
26541
26542                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
26543         }
26544 }
26545
26546 static void
26547 wlc_phy_papd_cal_cleanup_nphy(phy_info_t *pi, nphy_papd_restore_state *state)
26548 {
26549         u8 core;
26550
26551         wlc_phy_stopplayback_nphy(pi);
26552
26553         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26554
26555                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26556
26557                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26558                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26559                                                  TXRXCOUPLE_2G_PWRUP, 0);
26560                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26561                                                  TXRXCOUPLE_2G_ATTEN,
26562                                                  state->atten[core]);
26563                         } else {
26564                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26565                                                  TXRXCOUPLE_5G_PWRUP, 0);
26566                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26567                                                  TXRXCOUPLE_5G_ATTEN,
26568                                                  state->atten[core]);
26569                         }
26570                 }
26571
26572                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6)) {
26573                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
26574                                                           1, 0x3, 0,
26575                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
26576                 } else {
26577                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
26578                                                           0, 0x3, 1,
26579                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
26580                 }
26581                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
26582                                                   0, 0x3, 1,
26583                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26584                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
26585                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26586                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
26587                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26588                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
26589                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26590                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
26591                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26592                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
26593                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26594                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
26595                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26596                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
26597                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26598                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
26599                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26600                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
26601                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26602                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
26603                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26604                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
26605                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26606                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
26607                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26608                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
26609                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26610                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
26611                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26612                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
26613                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26614
26615                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26616
26617                         write_phy_reg(pi, (core == PHY_CORE_0) ?
26618                                       0xa6 : 0xa7, state->afectrl[core]);
26619                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
26620                                       0xa5, state->afeoverride[core]);
26621                 }
26622
26623                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
26624                                             (state->mm & 0xff));
26625
26626                 if (NREV_IS(pi->pubpi.phy_rev, 7)
26627                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
26628                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7), 0, 0,
26629                                                           1,
26630                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26631                 }
26632         } else {
26633
26634                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
26635                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
26636                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
26637
26638                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
26639                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
26640
26641                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26642
26643                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
26644                                          state->vga_master[core]);
26645                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26646                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
26647                                                  TXFBMIX_G, state->fbmix[core]);
26648                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26649                                                  INTPAG_MASTER,
26650                                                  state->intpa_master[core]);
26651                         } else {
26652                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
26653                                                  TXFBMIX_A, state->fbmix[core]);
26654                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26655                                                  INTPAA_MASTER,
26656                                                  state->intpa_master[core]);
26657                         }
26658
26659                         write_phy_reg(pi, (core == PHY_CORE_0) ?
26660                                       0xa6 : 0xa7, state->afectrl[core]);
26661                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
26662                                       0xa5, state->afeoverride[core]);
26663                 }
26664
26665                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
26666                                             (state->mm & 0xff));
26667
26668                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
26669         }
26670 }
26671
26672 static void
26673 wlc_phy_a1_nphy(phy_info_t *pi, u8 core, u32 winsz, u32 start,
26674                 u32 end)
26675 {
26676         u32 *buf, *src, *dst, sz;
26677
26678         sz = end - start + 1;
26679
26680         buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
26681         if (NULL == buf) {
26682                 return;
26683         }
26684
26685         src = buf;
26686         dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
26687
26688         wlc_phy_table_read_nphy(pi,
26689                                 (core ==
26690                                  PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
26691                                  NPHY_TBL_ID_EPSILONTBL1),
26692                                 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
26693
26694         do {
26695                 u32 phy_a1, phy_a2;
26696                 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
26697
26698                 phy_a1 = end - min(end, (winsz >> 1));
26699                 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1, end + (winsz >> 1));
26700                 phy_a3 = phy_a2 - phy_a1 + 1;
26701                 phy_a6 = 0;
26702                 phy_a7 = 0;
26703
26704                 do {
26705                         wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
26706                                                     &phy_a5);
26707                         phy_a6 += phy_a4;
26708                         phy_a7 += phy_a5;
26709                 } while (phy_a2-- != phy_a1);
26710
26711                 phy_a6 /= phy_a3;
26712                 phy_a7 /= phy_a3;
26713                 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
26714         } while (end-- != start);
26715
26716         wlc_phy_table_write_nphy(pi,
26717                                  (core ==
26718                                   PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
26719                                  NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
26720
26721         kfree(buf);
26722 }
26723
26724 static void
26725 wlc_phy_a2_nphy(phy_info_t *pi, nphy_ipa_txcalgains_t *txgains,
26726                 phy_cal_mode_t cal_mode, u8 core)
26727 {
26728         u16 phy_a1, phy_a2, phy_a3;
26729         u16 phy_a4, phy_a5;
26730         bool phy_a6;
26731         u8 phy_a7, m[2];
26732         u32 phy_a8 = 0;
26733         nphy_txgains_t phy_a9;
26734
26735         if (NREV_LT(pi->pubpi.phy_rev, 3))
26736                 return;
26737
26738         phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
26739
26740         phy_a6 = ((cal_mode == CAL_GCTRL)
26741                   || (cal_mode == CAL_SOFT)) ? true : false;
26742
26743         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26744
26745                 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
26746
26747                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26748                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
26749                                   (phy_a9.txgm[core] << 12) |
26750                                   (phy_a9.pga[core] << 8) |
26751                                   (txgains->gains.pad[core] << 3) |
26752                                   (phy_a9.ipa[core]));
26753                 } else {
26754                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
26755                                   (phy_a9.txgm[core] << 12) |
26756                                   (txgains->gains.pga[core] << 8) |
26757                                   (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
26758                 }
26759
26760                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26761                                                      NPHY_REV7_RfctrlOverride_cmd_txgain,
26762                                                      phy_a5, (1 << core), 0);
26763
26764                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26765                         if ((pi->pubpi.radiorev <= 4)
26766                             || (pi->pubpi.radiorev == 6)) {
26767
26768                                 m[core] = IS40MHZ(pi) ? 60 : 79;
26769                         } else {
26770
26771                                 m[core] = IS40MHZ(pi) ? 45 : 64;
26772                         }
26773
26774                 } else {
26775                         m[core] = IS40MHZ(pi) ? 75 : 107;
26776                 }
26777
26778                 m[phy_a7] = 0;
26779                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
26780
26781                 phy_a2 = 63;
26782
26783                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26784                         if (pi->sh->chip == BCM6362_CHIP_ID) {
26785                                 phy_a1 = 35;
26786                                 phy_a3 = 35;
26787                         } else if ((pi->pubpi.radiorev == 4)
26788                                    || (pi->pubpi.radiorev == 6)) {
26789                                 phy_a1 = 30;
26790                                 phy_a3 = 30;
26791                         } else {
26792                                 phy_a1 = 25;
26793                                 phy_a3 = 25;
26794                         }
26795                 } else {
26796                         if ((pi->pubpi.radiorev == 5)
26797                             || (pi->pubpi.radiorev == 7)
26798                             || (pi->pubpi.radiorev == 8)) {
26799                                 phy_a1 = 25;
26800                                 phy_a3 = 25;
26801                         } else {
26802                                 phy_a1 = 35;
26803                                 phy_a3 = 35;
26804                         }
26805                 }
26806
26807                 if (cal_mode == CAL_GCTRL) {
26808                         if ((pi->pubpi.radiorev == 5)
26809                             && (CHSPEC_IS2G(pi->radio_chanspec))) {
26810                                 phy_a1 = 55;
26811                         } else if (((pi->pubpi.radiorev == 7) &&
26812                                     (CHSPEC_IS2G(pi->radio_chanspec))) ||
26813                                    ((pi->pubpi.radiorev == 8) &&
26814                                     (CHSPEC_IS2G(pi->radio_chanspec)))) {
26815                                 phy_a1 = 60;
26816                         } else {
26817                                 phy_a1 = 63;
26818                         }
26819
26820                 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
26821
26822                         phy_a1 = 35;
26823                         phy_a3 = 35;
26824                 }
26825
26826                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26827                             0x29b, (0x1 << 0), (1) << 0);
26828
26829                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
26830                             0x29b, (0x1 << 0), (0) << 0);
26831
26832                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26833                             0x2a4, (0x1 << 13), (1) << 13);
26834
26835                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
26836                             0x2a4, (0x1 << 13), (0) << 13);
26837
26838                 write_phy_reg(pi, 0x2a1, 0x80);
26839                 write_phy_reg(pi, 0x2a2, 0x100);
26840
26841                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26842                             0x2a4, (0x7 << 4), (11) << 4);
26843
26844                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26845                             0x2a4, (0x7 << 8), (11) << 8);
26846
26847                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26848                             0x2a4, (0x7 << 0), (0x3) << 0);
26849
26850                 write_phy_reg(pi, 0x2e5, 0x20);
26851
26852                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
26853
26854                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
26855
26856                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
26857
26858                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26859                                                   1, ((core == 0) ? 1 : 2), 0,
26860                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26861                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26862                                                   0, ((core == 0) ? 2 : 1), 0,
26863                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26864
26865                 write_phy_reg(pi, 0x2be, 1);
26866                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
26867
26868                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26869                                                   0, 0x3, 0,
26870                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26871
26872                 wlc_phy_table_write_nphy(pi,
26873                                          (core ==
26874                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
26875                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
26876                                          32, &phy_a8);
26877
26878                 if (cal_mode != CAL_GCTRL) {
26879                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26880                                 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
26881                         }
26882                 }
26883
26884                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26885                                                      NPHY_REV7_RfctrlOverride_cmd_txgain,
26886                                                      phy_a5, (1 << core), 1);
26887
26888         } else {
26889
26890                 if (txgains) {
26891                         if (txgains->useindex) {
26892                                 phy_a4 = 15 - ((txgains->index) >> 3);
26893                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26894                                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
26895                                                 phy_a5 = 0x00f7 | (phy_a4 << 8);
26896
26897                                                 if (pi->sh->chip ==
26898                                                     BCM47162_CHIP_ID) {
26899                                                         phy_a5 =
26900                                                             0x10f7 | (phy_a4 <<
26901                                                                       8);
26902                                                 }
26903                                         } else
26904                                             if (NREV_IS(pi->pubpi.phy_rev, 5))
26905                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
26906                                         else
26907                                                 phy_a5 = 0x50f7 | (phy_a4 << 8);
26908                                 } else {
26909                                         phy_a5 = 0x70f7 | (phy_a4 << 8);
26910                                 }
26911                                 wlc_phy_rfctrl_override_nphy(pi,
26912                                                              (0x1 << 13),
26913                                                              phy_a5,
26914                                                              (1 << core), 0);
26915                         } else {
26916                                 wlc_phy_rfctrl_override_nphy(pi,
26917                                                              (0x1 << 13),
26918                                                              0x5bf7,
26919                                                              (1 << core), 0);
26920                         }
26921                 }
26922
26923                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26924                         m[core] = IS40MHZ(pi) ? 45 : 64;
26925                 } else {
26926                         m[core] = IS40MHZ(pi) ? 75 : 107;
26927                 }
26928
26929                 m[phy_a7] = 0;
26930                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
26931
26932                 phy_a2 = 63;
26933
26934                 if (cal_mode == CAL_FULL) {
26935                         phy_a1 = 25;
26936                         phy_a3 = 25;
26937                 } else if (cal_mode == CAL_SOFT) {
26938                         phy_a1 = 25;
26939                         phy_a3 = 25;
26940                 } else if (cal_mode == CAL_GCTRL) {
26941                         phy_a1 = 63;
26942                         phy_a3 = 25;
26943                 } else {
26944
26945                         phy_a1 = 25;
26946                         phy_a3 = 25;
26947                 }
26948
26949                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26950                             0x29b, (0x1 << 0), (1) << 0);
26951
26952                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
26953                             0x29b, (0x1 << 0), (0) << 0);
26954
26955                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
26956                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26957                                     0x2a4, (0x1 << 13), (1) << 13);
26958
26959                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
26960                                     0x2a4, (0x1 << 13), (0) << 13);
26961
26962                         write_phy_reg(pi, 0x2a1, 0x20);
26963                         write_phy_reg(pi, 0x2a2, 0x60);
26964
26965                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26966                                     0x2a4, (0xf << 4), (9) << 4);
26967
26968                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26969                                     0x2a4, (0xf << 8), (9) << 8);
26970
26971                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26972                                     0x2a4, (0xf << 0), (0x2) << 0);
26973
26974                         write_phy_reg(pi, 0x2e5, 0x20);
26975                 } else {
26976                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26977                                     0x2a4, (0x1 << 11), (1) << 11);
26978
26979                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
26980                                     0x2a4, (0x1 << 11), (0) << 11);
26981
26982                         write_phy_reg(pi, 0x2a1, 0x80);
26983                         write_phy_reg(pi, 0x2a2, 0x600);
26984
26985                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26986                                     0x2a4, (0x7 << 4), (0) << 4);
26987
26988                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26989                                     0x2a4, (0x7 << 8), (0) << 8);
26990
26991                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26992                                     0x2a4, (0x7 << 0), (0x3) << 0);
26993
26994                         mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
26995
26996                 }
26997
26998                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
26999
27000                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
27001
27002                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
27003
27004                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
27005
27006                 write_phy_reg(pi, 0x2be, 1);
27007                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
27008
27009                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
27010
27011                 wlc_phy_table_write_nphy(pi,
27012                                          (core ==
27013                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
27014                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
27015                                          32, &phy_a8);
27016
27017                 if (cal_mode != CAL_GCTRL) {
27018                         wlc_phy_a1_nphy(pi, core, 5, 0, 40);
27019                 }
27020         }
27021 }
27022
27023 static u8 wlc_phy_a3_nphy(phy_info_t *pi, u8 start_gain, u8 core)
27024 {
27025         int phy_a1;
27026         int phy_a2;
27027         bool phy_a3;
27028         nphy_ipa_txcalgains_t phy_a4;
27029         bool phy_a5 = false;
27030         bool phy_a6 = true;
27031         s32 phy_a7, phy_a8;
27032         u32 phy_a9;
27033         int phy_a10;
27034         bool phy_a11 = false;
27035         int phy_a12;
27036         u8 phy_a13 = 0;
27037         u8 phy_a14;
27038         u8 *phy_a15 = NULL;
27039
27040         phy_a4.useindex = true;
27041         phy_a12 = start_gain;
27042
27043         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27044
27045                 phy_a2 = 20;
27046                 phy_a1 = 1;
27047
27048                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
27049                         if (pi->pubpi.radiorev == 5) {
27050
27051                                 phy_a15 = pad_gain_codes_used_2057rev5;
27052                                 phy_a13 = sizeof(pad_gain_codes_used_2057rev5) /
27053                                     sizeof(pad_gain_codes_used_2057rev5[0]) - 1;
27054
27055                         } else if ((pi->pubpi.radiorev == 7)
27056                                    || (pi->pubpi.radiorev == 8)) {
27057
27058                                 phy_a15 = pad_gain_codes_used_2057rev7;
27059                                 phy_a13 = sizeof(pad_gain_codes_used_2057rev7) /
27060                                     sizeof(pad_gain_codes_used_2057rev7[0]) - 1;
27061
27062                         } else {
27063
27064                                 phy_a15 = pad_all_gain_codes_2057;
27065                                 phy_a13 = sizeof(pad_all_gain_codes_2057) /
27066                                     sizeof(pad_all_gain_codes_2057[0]) - 1;
27067                         }
27068
27069                 } else {
27070
27071                         phy_a15 = pga_all_gain_codes_2057;
27072                         phy_a13 = sizeof(pga_all_gain_codes_2057) /
27073                             sizeof(pga_all_gain_codes_2057[0]) - 1;
27074                 }
27075
27076                 phy_a14 = 0;
27077
27078                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
27079                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27080                                 phy_a4.gains.pad[core] =
27081                                     (u16) phy_a15[phy_a12];
27082                         } else {
27083                                 phy_a4.gains.pga[core] =
27084                                     (u16) phy_a15[phy_a12];
27085                         }
27086
27087                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
27088
27089                         wlc_phy_table_read_nphy(pi,
27090                                                 (core ==
27091                                                  PHY_CORE_0 ?
27092                                                  NPHY_TBL_ID_EPSILONTBL0 :
27093                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
27094                                                 63, 32, &phy_a9);
27095
27096                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
27097
27098                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
27099                                   (phy_a8 == 4095) || (phy_a8 == -4096));
27100
27101                         if (!phy_a6 && (phy_a3 != phy_a5)) {
27102                                 if (!phy_a3) {
27103                                         phy_a12 -= (u8) phy_a1;
27104                                 }
27105                                 phy_a11 = true;
27106                                 break;
27107                         }
27108
27109                         if (phy_a3)
27110                                 phy_a12 += (u8) phy_a1;
27111                         else
27112                                 phy_a12 -= (u8) phy_a1;
27113
27114                         if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
27115                                 if (phy_a12 < phy_a14) {
27116                                         phy_a12 = phy_a14;
27117                                 } else {
27118                                         phy_a12 = phy_a13;
27119                                 }
27120                                 phy_a11 = true;
27121                                 break;
27122                         }
27123
27124                         phy_a6 = false;
27125                         phy_a5 = phy_a3;
27126                 }
27127
27128         } else {
27129                 phy_a2 = 10;
27130                 phy_a1 = 8;
27131                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
27132                         phy_a4.index = (u8) phy_a12;
27133                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
27134
27135                         wlc_phy_table_read_nphy(pi,
27136                                                 (core ==
27137                                                  PHY_CORE_0 ?
27138                                                  NPHY_TBL_ID_EPSILONTBL0 :
27139                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
27140                                                 63, 32, &phy_a9);
27141
27142                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
27143
27144                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
27145                                   (phy_a8 == 4095) || (phy_a8 == -4096));
27146
27147                         if (!phy_a6 && (phy_a3 != phy_a5)) {
27148                                 if (!phy_a3) {
27149                                         phy_a12 -= (u8) phy_a1;
27150                                 }
27151                                 phy_a11 = true;
27152                                 break;
27153                         }
27154
27155                         if (phy_a3)
27156                                 phy_a12 += (u8) phy_a1;
27157                         else
27158                                 phy_a12 -= (u8) phy_a1;
27159
27160                         if ((phy_a12 < 0) || (phy_a12 > 127)) {
27161                                 if (phy_a12 < 0) {
27162                                         phy_a12 = 0;
27163                                 } else {
27164                                         phy_a12 = 127;
27165                                 }
27166                                 phy_a11 = true;
27167                                 break;
27168                         }
27169
27170                         phy_a6 = false;
27171                         phy_a5 = phy_a3;
27172                 }
27173
27174         }
27175
27176         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27177                 return (u8) phy_a15[phy_a12];
27178         } else {
27179                 return (u8) phy_a12;
27180         }
27181
27182 }
27183
27184 static void wlc_phy_a4(phy_info_t *pi, bool full_cal)
27185 {
27186         nphy_ipa_txcalgains_t phy_b1[2];
27187         nphy_papd_restore_state phy_b2;
27188         bool phy_b3;
27189         u8 phy_b4;
27190         u8 phy_b5;
27191         s16 phy_b6, phy_b7, phy_b8;
27192         u16 phy_b9;
27193         s16 phy_b10, phy_b11, phy_b12;
27194
27195         phy_b11 = 0;
27196         phy_b12 = 0;
27197         phy_b7 = 0;
27198         phy_b8 = 0;
27199         phy_b6 = 0;
27200
27201         if (pi->nphy_papd_skip == 1)
27202                 return;
27203
27204         phy_b3 =
27205             (0 == (R_REG(&pi->regs->maccontrol) & MCTL_EN_MAC));
27206         if (!phy_b3) {
27207                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
27208         }
27209
27210         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27211
27212         pi->nphy_force_papd_cal = false;
27213
27214         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
27215                 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
27216                     wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
27217
27218         pi->nphy_papd_last_cal = pi->sh->now;
27219         pi->nphy_papd_recal_counter++;
27220
27221         if (NORADIO_ENAB(pi->pubpi))
27222                 return;
27223
27224         phy_b4 = pi->nphy_txpwrctrl;
27225         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
27226
27227         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
27228                                  nphy_papd_scaltbl);
27229         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
27230                                  nphy_papd_scaltbl);
27231
27232         phy_b9 = read_phy_reg(pi, 0x01);
27233         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27234
27235         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27236                 s32 i, val = 0;
27237                 for (i = 0; i < 64; i++) {
27238                         wlc_phy_table_write_nphy(pi,
27239                                                  ((phy_b5 ==
27240                                                    PHY_CORE_0) ?
27241                                                   NPHY_TBL_ID_EPSILONTBL0 :
27242                                                   NPHY_TBL_ID_EPSILONTBL1), 1,
27243                                                  i, 32, &val);
27244                 }
27245         }
27246
27247         wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
27248
27249         phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
27250         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27251                 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
27252
27253                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27254                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27255
27256                                 if ((pi->pubpi.radiorev == 3)
27257                                     || (pi->pubpi.radiorev == 4)
27258                                     || (pi->pubpi.radiorev == 6)) {
27259
27260                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27261                                             23;
27262
27263                                 } else if (pi->pubpi.radiorev == 5) {
27264
27265                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27266                                             0;
27267                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27268                                             wlc_phy_a3_nphy(pi,
27269                                                             pi->
27270                                                             nphy_papd_cal_gain_index
27271                                                             [phy_b5], phy_b5);
27272
27273                                 } else if ((pi->pubpi.radiorev == 7)
27274                                            || (pi->pubpi.radiorev == 8)) {
27275
27276                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27277                                             0;
27278                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27279                                             wlc_phy_a3_nphy(pi,
27280                                                             pi->
27281                                                             nphy_papd_cal_gain_index
27282                                                             [phy_b5], phy_b5);
27283
27284                                 }
27285
27286                                 phy_b1[phy_b5].gains.pad[phy_b5] =
27287                                     pi->nphy_papd_cal_gain_index[phy_b5];
27288
27289                         } else {
27290                                 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
27291                                 pi->nphy_papd_cal_gain_index[phy_b5] =
27292                                     wlc_phy_a3_nphy(pi,
27293                                                     pi->
27294                                                     nphy_papd_cal_gain_index
27295                                                     [phy_b5], phy_b5);
27296                                 phy_b1[phy_b5].gains.pga[phy_b5] =
27297                                     pi->nphy_papd_cal_gain_index[phy_b5];
27298                         }
27299                 } else {
27300                         phy_b1[phy_b5].useindex = true;
27301                         phy_b1[phy_b5].index = 16;
27302                         phy_b1[phy_b5].index =
27303                             wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index, phy_b5);
27304
27305                         pi->nphy_papd_cal_gain_index[phy_b5] =
27306                             15 - ((phy_b1[phy_b5].index) >> 3);
27307                 }
27308
27309                 switch (pi->nphy_papd_cal_type) {
27310                 case 0:
27311                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
27312                         break;
27313                 case 1:
27314                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
27315                         break;
27316                 }
27317
27318                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27319                         wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
27320                 }
27321         }
27322
27323         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27324                 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
27325         }
27326
27327         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27328                 int eps_offset = 0;
27329
27330                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27331                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27332                                 if (pi->pubpi.radiorev == 3) {
27333                                         eps_offset = -2;
27334                                 } else if (pi->pubpi.radiorev == 5) {
27335                                         eps_offset = 3;
27336                                 } else {
27337                                         eps_offset = -1;
27338                                 }
27339                         } else {
27340                                 eps_offset = 2;
27341                         }
27342
27343                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27344                                 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
27345                                 phy_b10 = 0;
27346                                 if ((pi->pubpi.radiorev == 3) ||
27347                                     (pi->pubpi.radiorev == 4) ||
27348                                     (pi->pubpi.radiorev == 6)) {
27349                                         phy_b12 =
27350                                             -
27351                                             (nphy_papd_padgain_dlt_2g_2057rev3n4
27352                                              [phy_b8]
27353                                              + 1) / 2;
27354                                         phy_b10 = -1;
27355                                 } else if (pi->pubpi.radiorev == 5) {
27356                                         phy_b12 =
27357                                             -(nphy_papd_padgain_dlt_2g_2057rev5
27358                                               [phy_b8]
27359                                               + 1) / 2;
27360                                 } else if ((pi->pubpi.radiorev == 7) ||
27361                                            (pi->pubpi.radiorev == 8)) {
27362                                         phy_b12 =
27363                                             -(nphy_papd_padgain_dlt_2g_2057rev7
27364                                               [phy_b8]
27365                                               + 1) / 2;
27366                                 }
27367                         } else {
27368                                 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
27369                                 if ((pi->pubpi.radiorev == 3) ||
27370                                     (pi->pubpi.radiorev == 4) ||
27371                                     (pi->pubpi.radiorev == 6)) {
27372                                         phy_b11 =
27373                                             -(nphy_papd_pgagain_dlt_5g_2057
27374                                               [phy_b7]
27375                                               + 1) / 2;
27376                                 } else if ((pi->pubpi.radiorev == 7)
27377                                            || (pi->pubpi.radiorev == 8)) {
27378                                         phy_b11 =
27379                                             -(nphy_papd_pgagain_dlt_5g_2057rev7
27380                                               [phy_b7]
27381                                               + 1) / 2;
27382                                 }
27383
27384                                 phy_b10 = -9;
27385                         }
27386
27387                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27388                                 phy_b6 =
27389                                     -60 + 27 + eps_offset + phy_b12 + phy_b10;
27390                         } else {
27391                                 phy_b6 =
27392                                     -60 + 27 + eps_offset + phy_b11 + phy_b10;
27393                         }
27394
27395                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
27396                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
27397
27398                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
27399                 } else {
27400                         if (NREV_LT(pi->pubpi.phy_rev, 5)) {
27401                                 eps_offset = 4;
27402                         } else {
27403                                 eps_offset = 2;
27404                         }
27405
27406                         phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
27407
27408                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27409                                 phy_b11 =
27410                                     -(nphy_papd_pga_gain_delta_ipa_2g[phy_b7] +
27411                                       1) / 2;
27412                                 phy_b10 = 0;
27413                         } else {
27414                                 phy_b11 =
27415                                     -(nphy_papd_pga_gain_delta_ipa_5g[phy_b7] +
27416                                       1) / 2;
27417                                 phy_b10 = -9;
27418                         }
27419
27420                         phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
27421
27422                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
27423                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
27424
27425                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
27426                 }
27427         }
27428
27429         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
27430                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
27431
27432         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
27433                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
27434
27435         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
27436                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
27437                             0x2a4, (0x1 << 13), (0) << 13);
27438
27439                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
27440                             0x2a4, (0x1 << 13), (0) << 13);
27441
27442         } else {
27443                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
27444                             0x2a4, (0x1 << 11), (0) << 11);
27445
27446                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
27447                             0x2a4, (0x1 << 11), (0) << 11);
27448
27449         }
27450         pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
27451
27452         write_phy_reg(pi, 0x01, phy_b9);
27453
27454         wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
27455
27456         wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
27457         if (phy_b4 == PHY_TPC_HW_OFF) {
27458                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
27459                                          (s8) (pi->nphy_txpwrindex[0].
27460                                                  index_internal), false);
27461                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
27462                                          (s8) (pi->nphy_txpwrindex[1].
27463                                                  index_internal), false);
27464         }
27465
27466         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27467
27468         if (!phy_b3) {
27469                 wlapi_enable_mac(pi->sh->physhim);
27470         }
27471 }
27472
27473 void wlc_phy_txpwr_fixpower_nphy(phy_info_t *pi)
27474 {
27475         uint core;
27476         u32 txgain;
27477         u16 rad_gain, dac_gain, bbmult, m1m2;
27478         u8 txpi[2], chan_freq_range;
27479         s32 rfpwr_offset;
27480
27481         if (pi->phyhang_avoid)
27482                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27483
27484         if (pi->sh->sromrev < 4) {
27485                 txpi[0] = txpi[1] = 72;
27486         } else {
27487
27488                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27489                 switch (chan_freq_range) {
27490                 case WL_CHAN_FREQ_RANGE_2G:
27491                         txpi[0] = pi->nphy_txpid2g[0];
27492                         txpi[1] = pi->nphy_txpid2g[1];
27493                         break;
27494                 case WL_CHAN_FREQ_RANGE_5GL:
27495                         txpi[0] = pi->nphy_txpid5gl[0];
27496                         txpi[1] = pi->nphy_txpid5gl[1];
27497                         break;
27498                 case WL_CHAN_FREQ_RANGE_5GM:
27499                         txpi[0] = pi->nphy_txpid5g[0];
27500                         txpi[1] = pi->nphy_txpid5g[1];
27501                         break;
27502                 case WL_CHAN_FREQ_RANGE_5GH:
27503                         txpi[0] = pi->nphy_txpid5gh[0];
27504                         txpi[1] = pi->nphy_txpid5gh[1];
27505                         break;
27506                 default:
27507                         txpi[0] = txpi[1] = 91;
27508                         break;
27509                 }
27510         }
27511
27512         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27513                 txpi[0] = txpi[1] = 30;
27514         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27515                 txpi[0] = txpi[1] = 40;
27516         }
27517
27518         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27519
27520                 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27521                     (txpi[1] < 40) || (txpi[1] > 100))
27522                         txpi[0] = txpi[1] = 91;
27523         }
27524
27525         pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27526         pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27527         pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27528         pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27529
27530         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27531                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27532                         if (PHY_IPA(pi)) {
27533                                 u32 *tx_gaintbl =
27534                                     wlc_phy_get_ipa_gaintbl_nphy(pi);
27535                                 txgain = tx_gaintbl[txpi[core]];
27536                         } else {
27537                                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27538                                         if NREV_IS
27539                                                 (pi->pubpi.phy_rev, 3) {
27540                                                 txgain =
27541                                                     nphy_tpc_5GHz_txgain_rev3
27542                                                     [txpi[core]];
27543                                         } else if NREV_IS
27544                                                 (pi->pubpi.phy_rev, 4) {
27545                                                 txgain =
27546                                                     (pi->srom_fem5g.extpagain ==
27547                                                      3) ?
27548                                                     nphy_tpc_5GHz_txgain_HiPwrEPA
27549                                                     [txpi[core]] :
27550                                                     nphy_tpc_5GHz_txgain_rev4
27551                                                     [txpi[core]];
27552                                         } else {
27553                                                 txgain =
27554                                                     nphy_tpc_5GHz_txgain_rev5
27555                                                     [txpi[core]];
27556                                         }
27557                                 } else {
27558                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
27559                                             (pi->srom_fem2g.extpagain == 3)) {
27560                                                 txgain =
27561                                                     nphy_tpc_txgain_HiPwrEPA
27562                                                     [txpi[core]];
27563                                         } else {
27564                                                 txgain =
27565                                                     nphy_tpc_txgain_rev3[txpi
27566                                                                          [core]];
27567                                         }
27568                                 }
27569                         }
27570                 } else {
27571                         txgain = nphy_tpc_txgain[txpi[core]];
27572                 }
27573
27574                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27575                         rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27576                 } else {
27577                         rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27578                 }
27579
27580                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27581                         dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27582                 } else {
27583                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27584                 }
27585                 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27586
27587                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27588                         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27589                                          0xa5), (0x1 << 8), (0x1 << 8));
27590                 } else {
27591                         mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27592                 }
27593                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27594
27595                 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27596                                          &rad_gain);
27597
27598                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27599                 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27600                 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27601                 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27602
27603                 if (PHY_IPA(pi)) {
27604                         wlc_phy_table_read_nphy(pi,
27605                                                 (core ==
27606                                                  PHY_CORE_0 ?
27607                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
27608                                                  NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27609                                                 576 + txpi[core], 32,
27610                                                 &rfpwr_offset);
27611
27612                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27613                                     0x29b, (0x1ff << 4),
27614                                     ((s16) rfpwr_offset) << 4);
27615
27616                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27617                                     0x29b, (0x1 << 2), (1) << 2);
27618
27619                 }
27620         }
27621
27622         and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27623
27624         if (pi->phyhang_avoid)
27625                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27626 }
27627
27628 static void
27629 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27630                                 u8 tmp_max_pwr, u8 rate_start,
27631                                 u8 rate_end)
27632 {
27633         u8 rate;
27634         u8 word_num, nibble_num;
27635         u8 tmp_nibble;
27636
27637         for (rate = rate_start; rate <= rate_end; rate++) {
27638                 word_num = (rate - rate_start) >> 2;
27639                 nibble_num = (rate - rate_start) & 0x3;
27640                 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27641
27642                 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27643         }
27644 }
27645
27646 static void
27647 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27648                             u8 rate_start, u8 rate_end)
27649 {
27650         u8 rate;
27651
27652         for (rate = rate_start; rate <= rate_end; rate++) {
27653                 srom_max[rate] -= 2 * pwr_offset;
27654         }
27655 }
27656
27657 void
27658 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
27659                                 u8 rate_mcs_end, u8 rate_ofdm_start)
27660 {
27661         u8 rate1, rate2;
27662
27663         rate2 = rate_ofdm_start;
27664         for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
27665                 power[rate1] = power[rate2];
27666                 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
27667         }
27668         power[rate_mcs_end] = power[rate_mcs_end - 1];
27669 }
27670
27671 void
27672 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
27673                                 u8 rate_ofdm_end, u8 rate_mcs_start)
27674 {
27675         u8 rate1, rate2;
27676
27677         for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
27678              rate1 <= rate_ofdm_end; rate1++, rate2++) {
27679                 power[rate1] = power[rate2];
27680                 if (rate1 == rate_ofdm_start)
27681                         power[++rate1] = power[rate2];
27682         }
27683 }
27684
27685 void wlc_phy_txpwr_apply_nphy(phy_info_t *pi)
27686 {
27687         uint rate1, rate2, band_num;
27688         u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
27689         u8 tmp_max_pwr = 0;
27690         u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
27691         u8 *tx_srom_max_rate = NULL;
27692
27693         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP); band_num++) {
27694                 switch (band_num) {
27695                 case 0:
27696
27697                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
27698                                           pi->nphy_pwrctrl_info[1].max_pwr_2g);
27699
27700                         pwr_offsets1[0] = pi->cck2gpo;
27701                         wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
27702                                                         pwr_offsets1,
27703                                                         tmp_max_pwr,
27704                                                         TXP_FIRST_CCK,
27705                                                         TXP_LAST_CCK);
27706
27707                         pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
27708                         pwr_offsets1[1] =
27709                             (u16) (pi->ofdm2gpo >> 16) & 0xffff;
27710
27711                         pwr_offsets2 = pi->mcs2gpo;
27712
27713                         tmp_cddpo = pi->cdd2gpo;
27714                         tmp_stbcpo = pi->stbc2gpo;
27715                         tmp_bw40po = pi->bw402gpo;
27716
27717                         tx_srom_max_rate = pi->tx_srom_max_rate_2g;
27718                         break;
27719                 case 1:
27720
27721                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
27722                                           pi->nphy_pwrctrl_info[1].max_pwr_5gm);
27723
27724                         pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
27725                         pwr_offsets1[1] =
27726                             (u16) (pi->ofdm5gpo >> 16) & 0xffff;
27727
27728                         pwr_offsets2 = pi->mcs5gpo;
27729
27730                         tmp_cddpo = pi->cdd5gpo;
27731                         tmp_stbcpo = pi->stbc5gpo;
27732                         tmp_bw40po = pi->bw405gpo;
27733
27734                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
27735                         break;
27736                 case 2:
27737
27738                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
27739                                           pi->nphy_pwrctrl_info[1].max_pwr_5gl);
27740
27741                         pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
27742                         pwr_offsets1[1] =
27743                             (u16) (pi->ofdm5glpo >> 16) & 0xffff;
27744
27745                         pwr_offsets2 = pi->mcs5glpo;
27746
27747                         tmp_cddpo = pi->cdd5glpo;
27748                         tmp_stbcpo = pi->stbc5glpo;
27749                         tmp_bw40po = pi->bw405glpo;
27750
27751                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
27752                         break;
27753                 case 3:
27754
27755                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
27756                                           pi->nphy_pwrctrl_info[1].max_pwr_5gh);
27757
27758                         pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
27759                         pwr_offsets1[1] =
27760                             (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
27761
27762                         pwr_offsets2 = pi->mcs5ghpo;
27763
27764                         tmp_cddpo = pi->cdd5ghpo;
27765                         tmp_stbcpo = pi->stbc5ghpo;
27766                         tmp_bw40po = pi->bw405ghpo;
27767
27768                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
27769                         break;
27770                 }
27771
27772                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
27773                                                 tmp_max_pwr, TXP_FIRST_OFDM,
27774                                                 TXP_LAST_OFDM);
27775
27776                 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
27777                                                 TXP_FIRST_MCS_20_SISO,
27778                                                 TXP_LAST_MCS_20_SISO,
27779                                                 TXP_FIRST_OFDM);
27780
27781                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
27782                                                 tmp_max_pwr,
27783                                                 TXP_FIRST_MCS_20_CDD,
27784                                                 TXP_LAST_MCS_20_CDD);
27785
27786                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27787
27788                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
27789                                                     TXP_FIRST_MCS_20_CDD,
27790                                                     TXP_LAST_MCS_20_CDD);
27791                 }
27792
27793                 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27794                                                 TXP_FIRST_OFDM_20_CDD,
27795                                                 TXP_LAST_OFDM_20_CDD,
27796                                                 TXP_FIRST_MCS_20_CDD);
27797
27798                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
27799                                                 tmp_max_pwr,
27800                                                 TXP_FIRST_MCS_20_STBC,
27801                                                 TXP_LAST_MCS_20_STBC);
27802
27803                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27804
27805                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27806                                                     tmp_stbcpo,
27807                                                     TXP_FIRST_MCS_20_STBC,
27808                                                     TXP_LAST_MCS_20_STBC);
27809                 }
27810
27811                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27812                                                 &pwr_offsets2[2], tmp_max_pwr,
27813                                                 TXP_FIRST_MCS_20_SDM,
27814                                                 TXP_LAST_MCS_20_SDM);
27815
27816                 if (NPHY_IS_SROM_REINTERPRET) {
27817
27818                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27819                                                         &pwr_offsets2[4],
27820                                                         tmp_max_pwr,
27821                                                         TXP_FIRST_MCS_40_SISO,
27822                                                         TXP_LAST_MCS_40_SISO);
27823
27824                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27825                                                         TXP_FIRST_OFDM_40_SISO,
27826                                                         TXP_LAST_OFDM_40_SISO,
27827                                                         TXP_FIRST_MCS_40_SISO);
27828
27829                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27830                                                         &pwr_offsets2[4],
27831                                                         tmp_max_pwr,
27832                                                         TXP_FIRST_MCS_40_CDD,
27833                                                         TXP_LAST_MCS_40_CDD);
27834
27835                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
27836                                                     TXP_FIRST_MCS_40_CDD,
27837                                                     TXP_LAST_MCS_40_CDD);
27838
27839                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27840                                                         TXP_FIRST_OFDM_40_CDD,
27841                                                         TXP_LAST_OFDM_40_CDD,
27842                                                         TXP_FIRST_MCS_40_CDD);
27843
27844                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27845                                                         &pwr_offsets2[4],
27846                                                         tmp_max_pwr,
27847                                                         TXP_FIRST_MCS_40_STBC,
27848                                                         TXP_LAST_MCS_40_STBC);
27849
27850                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27851                                                     tmp_stbcpo,
27852                                                     TXP_FIRST_MCS_40_STBC,
27853                                                     TXP_LAST_MCS_40_STBC);
27854
27855                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27856                                                         &pwr_offsets2[6],
27857                                                         tmp_max_pwr,
27858                                                         TXP_FIRST_MCS_40_SDM,
27859                                                         TXP_LAST_MCS_40_SDM);
27860                 } else {
27861
27862                         for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
27863                              TXP_FIRST_OFDM; rate1 <= TXP_LAST_MCS_40_SDM;
27864                              rate1++, rate2++)
27865                                 tx_srom_max_rate[rate1] =
27866                                     tx_srom_max_rate[rate2];
27867                 }
27868
27869                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27870                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27871                                                     tmp_bw40po,
27872                                                     TXP_FIRST_OFDM_40_SISO,
27873                                                     TXP_LAST_MCS_40_SDM);
27874                 }
27875
27876                 tx_srom_max_rate[TXP_MCS_32] =
27877                     tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
27878         }
27879
27880         return;
27881 }
27882
27883 static void wlc_phy_txpwr_srom_read_ppr_nphy(phy_info_t *pi)
27884 {
27885         u16 bw40po, cddpo, stbcpo, bwduppo;
27886         uint band_num;
27887
27888         if (pi->sh->sromrev >= 9) {
27889
27890                 return;
27891         }
27892
27893         bw40po = (u16) PHY_GETINTVAR(pi, "bw40po");
27894         pi->bw402gpo = bw40po & 0xf;
27895         pi->bw405gpo = (bw40po & 0xf0) >> 4;
27896         pi->bw405glpo = (bw40po & 0xf00) >> 8;
27897         pi->bw405ghpo = (bw40po & 0xf000) >> 12;
27898
27899         cddpo = (u16) PHY_GETINTVAR(pi, "cddpo");
27900         pi->cdd2gpo = cddpo & 0xf;
27901         pi->cdd5gpo = (cddpo & 0xf0) >> 4;
27902         pi->cdd5glpo = (cddpo & 0xf00) >> 8;
27903         pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
27904
27905         stbcpo = (u16) PHY_GETINTVAR(pi, "stbcpo");
27906         pi->stbc2gpo = stbcpo & 0xf;
27907         pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
27908         pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
27909         pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
27910
27911         bwduppo = (u16) PHY_GETINTVAR(pi, "bwduppo");
27912         pi->bwdup2gpo = bwduppo & 0xf;
27913         pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
27914         pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
27915         pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
27916
27917         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP); band_num++) {
27918                 switch (band_num) {
27919                 case 0:
27920
27921                         pi->nphy_txpid2g[PHY_CORE_0] =
27922                             (u8) PHY_GETINTVAR(pi, "txpid2ga0");
27923                         pi->nphy_txpid2g[PHY_CORE_1] =
27924                             (u8) PHY_GETINTVAR(pi, "txpid2ga1");
27925                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
27926                             (s8) PHY_GETINTVAR(pi, "maxp2ga0");
27927                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
27928                             (s8) PHY_GETINTVAR(pi, "maxp2ga1");
27929                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
27930                             (s16) PHY_GETINTVAR(pi, "pa2gw0a0");
27931                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
27932                             (s16) PHY_GETINTVAR(pi, "pa2gw0a1");
27933                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
27934                             (s16) PHY_GETINTVAR(pi, "pa2gw1a0");
27935                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
27936                             (s16) PHY_GETINTVAR(pi, "pa2gw1a1");
27937                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
27938                             (s16) PHY_GETINTVAR(pi, "pa2gw2a0");
27939                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
27940                             (s16) PHY_GETINTVAR(pi, "pa2gw2a1");
27941                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
27942                             (s8) PHY_GETINTVAR(pi, "itt2ga0");
27943                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
27944                             (s8) PHY_GETINTVAR(pi, "itt2ga1");
27945
27946                         pi->cck2gpo = (u16) PHY_GETINTVAR(pi, "cck2gpo");
27947
27948                         pi->ofdm2gpo = (u32) PHY_GETINTVAR(pi, "ofdm2gpo");
27949
27950                         pi->mcs2gpo[0] = (u16) PHY_GETINTVAR(pi, "mcs2gpo0");
27951                         pi->mcs2gpo[1] = (u16) PHY_GETINTVAR(pi, "mcs2gpo1");
27952                         pi->mcs2gpo[2] = (u16) PHY_GETINTVAR(pi, "mcs2gpo2");
27953                         pi->mcs2gpo[3] = (u16) PHY_GETINTVAR(pi, "mcs2gpo3");
27954                         pi->mcs2gpo[4] = (u16) PHY_GETINTVAR(pi, "mcs2gpo4");
27955                         pi->mcs2gpo[5] = (u16) PHY_GETINTVAR(pi, "mcs2gpo5");
27956                         pi->mcs2gpo[6] = (u16) PHY_GETINTVAR(pi, "mcs2gpo6");
27957                         pi->mcs2gpo[7] = (u16) PHY_GETINTVAR(pi, "mcs2gpo7");
27958                         break;
27959                 case 1:
27960
27961                         pi->nphy_txpid5g[PHY_CORE_0] =
27962                             (u8) PHY_GETINTVAR(pi, "txpid5ga0");
27963                         pi->nphy_txpid5g[PHY_CORE_1] =
27964                             (u8) PHY_GETINTVAR(pi, "txpid5ga1");
27965                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
27966                             (s8) PHY_GETINTVAR(pi, "maxp5ga0");
27967                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
27968                             (s8) PHY_GETINTVAR(pi, "maxp5ga1");
27969                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
27970                             (s16) PHY_GETINTVAR(pi, "pa5gw0a0");
27971                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
27972                             (s16) PHY_GETINTVAR(pi, "pa5gw0a1");
27973                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
27974                             (s16) PHY_GETINTVAR(pi, "pa5gw1a0");
27975                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
27976                             (s16) PHY_GETINTVAR(pi, "pa5gw1a1");
27977                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
27978                             (s16) PHY_GETINTVAR(pi, "pa5gw2a0");
27979                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
27980                             (s16) PHY_GETINTVAR(pi, "pa5gw2a1");
27981                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
27982                             (s8) PHY_GETINTVAR(pi, "itt5ga0");
27983                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
27984                             (s8) PHY_GETINTVAR(pi, "itt5ga1");
27985
27986                         pi->ofdm5gpo = (u32) PHY_GETINTVAR(pi, "ofdm5gpo");
27987
27988                         pi->mcs5gpo[0] = (u16) PHY_GETINTVAR(pi, "mcs5gpo0");
27989                         pi->mcs5gpo[1] = (u16) PHY_GETINTVAR(pi, "mcs5gpo1");
27990                         pi->mcs5gpo[2] = (u16) PHY_GETINTVAR(pi, "mcs5gpo2");
27991                         pi->mcs5gpo[3] = (u16) PHY_GETINTVAR(pi, "mcs5gpo3");
27992                         pi->mcs5gpo[4] = (u16) PHY_GETINTVAR(pi, "mcs5gpo4");
27993                         pi->mcs5gpo[5] = (u16) PHY_GETINTVAR(pi, "mcs5gpo5");
27994                         pi->mcs5gpo[6] = (u16) PHY_GETINTVAR(pi, "mcs5gpo6");
27995                         pi->mcs5gpo[7] = (u16) PHY_GETINTVAR(pi, "mcs5gpo7");
27996                         break;
27997                 case 2:
27998
27999                         pi->nphy_txpid5gl[0] =
28000                             (u8) PHY_GETINTVAR(pi, "txpid5gla0");
28001                         pi->nphy_txpid5gl[1] =
28002                             (u8) PHY_GETINTVAR(pi, "txpid5gla1");
28003                         pi->nphy_pwrctrl_info[0].max_pwr_5gl =
28004                             (s8) PHY_GETINTVAR(pi, "maxp5gla0");
28005                         pi->nphy_pwrctrl_info[1].max_pwr_5gl =
28006                             (s8) PHY_GETINTVAR(pi, "maxp5gla1");
28007                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
28008                             (s16) PHY_GETINTVAR(pi, "pa5glw0a0");
28009                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
28010                             (s16) PHY_GETINTVAR(pi, "pa5glw0a1");
28011                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
28012                             (s16) PHY_GETINTVAR(pi, "pa5glw1a0");
28013                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
28014                             (s16) PHY_GETINTVAR(pi, "pa5glw1a1");
28015                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
28016                             (s16) PHY_GETINTVAR(pi, "pa5glw2a0");
28017                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
28018                             (s16) PHY_GETINTVAR(pi, "pa5glw2a1");
28019                         pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
28020                         pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
28021
28022                         pi->ofdm5glpo = (u32) PHY_GETINTVAR(pi, "ofdm5glpo");
28023
28024                         pi->mcs5glpo[0] =
28025                             (u16) PHY_GETINTVAR(pi, "mcs5glpo0");
28026                         pi->mcs5glpo[1] =
28027                             (u16) PHY_GETINTVAR(pi, "mcs5glpo1");
28028                         pi->mcs5glpo[2] =
28029                             (u16) PHY_GETINTVAR(pi, "mcs5glpo2");
28030                         pi->mcs5glpo[3] =
28031                             (u16) PHY_GETINTVAR(pi, "mcs5glpo3");
28032                         pi->mcs5glpo[4] =
28033                             (u16) PHY_GETINTVAR(pi, "mcs5glpo4");
28034                         pi->mcs5glpo[5] =
28035                             (u16) PHY_GETINTVAR(pi, "mcs5glpo5");
28036                         pi->mcs5glpo[6] =
28037                             (u16) PHY_GETINTVAR(pi, "mcs5glpo6");
28038                         pi->mcs5glpo[7] =
28039                             (u16) PHY_GETINTVAR(pi, "mcs5glpo7");
28040                         break;
28041                 case 3:
28042
28043                         pi->nphy_txpid5gh[0] =
28044                             (u8) PHY_GETINTVAR(pi, "txpid5gha0");
28045                         pi->nphy_txpid5gh[1] =
28046                             (u8) PHY_GETINTVAR(pi, "txpid5gha1");
28047                         pi->nphy_pwrctrl_info[0].max_pwr_5gh =
28048                             (s8) PHY_GETINTVAR(pi, "maxp5gha0");
28049                         pi->nphy_pwrctrl_info[1].max_pwr_5gh =
28050                             (s8) PHY_GETINTVAR(pi, "maxp5gha1");
28051                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
28052                             (s16) PHY_GETINTVAR(pi, "pa5ghw0a0");
28053                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
28054                             (s16) PHY_GETINTVAR(pi, "pa5ghw0a1");
28055                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
28056                             (s16) PHY_GETINTVAR(pi, "pa5ghw1a0");
28057                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
28058                             (s16) PHY_GETINTVAR(pi, "pa5ghw1a1");
28059                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
28060                             (s16) PHY_GETINTVAR(pi, "pa5ghw2a0");
28061                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
28062                             (s16) PHY_GETINTVAR(pi, "pa5ghw2a1");
28063                         pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
28064                         pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
28065
28066                         pi->ofdm5ghpo = (u32) PHY_GETINTVAR(pi, "ofdm5ghpo");
28067
28068                         pi->mcs5ghpo[0] =
28069                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo0");
28070                         pi->mcs5ghpo[1] =
28071                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo1");
28072                         pi->mcs5ghpo[2] =
28073                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo2");
28074                         pi->mcs5ghpo[3] =
28075                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo3");
28076                         pi->mcs5ghpo[4] =
28077                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo4");
28078                         pi->mcs5ghpo[5] =
28079                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo5");
28080                         pi->mcs5ghpo[6] =
28081                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo6");
28082                         pi->mcs5ghpo[7] =
28083                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo7");
28084                         break;
28085                 }
28086         }
28087
28088         wlc_phy_txpwr_apply_nphy(pi);
28089 }
28090
28091 static bool wlc_phy_txpwr_srom_read_nphy(phy_info_t *pi)
28092 {
28093
28094         pi->antswitch = (u8) PHY_GETINTVAR(pi, "antswitch");
28095         pi->aa2g = (u8) PHY_GETINTVAR(pi, "aa2g");
28096         pi->aa5g = (u8) PHY_GETINTVAR(pi, "aa5g");
28097
28098         pi->srom_fem2g.tssipos = (u8) PHY_GETINTVAR(pi, "tssipos2g");
28099         pi->srom_fem2g.extpagain = (u8) PHY_GETINTVAR(pi, "extpagain2g");
28100         pi->srom_fem2g.pdetrange = (u8) PHY_GETINTVAR(pi, "pdetrange2g");
28101         pi->srom_fem2g.triso = (u8) PHY_GETINTVAR(pi, "triso2g");
28102         pi->srom_fem2g.antswctrllut = (u8) PHY_GETINTVAR(pi, "antswctl2g");
28103
28104         pi->srom_fem5g.tssipos = (u8) PHY_GETINTVAR(pi, "tssipos5g");
28105         pi->srom_fem5g.extpagain = (u8) PHY_GETINTVAR(pi, "extpagain5g");
28106         pi->srom_fem5g.pdetrange = (u8) PHY_GETINTVAR(pi, "pdetrange5g");
28107         pi->srom_fem5g.triso = (u8) PHY_GETINTVAR(pi, "triso5g");
28108         if (PHY_GETVAR(pi, "antswctl5g")) {
28109
28110                 pi->srom_fem5g.antswctrllut =
28111                     (u8) PHY_GETINTVAR(pi, "antswctl5g");
28112         } else {
28113
28114                 pi->srom_fem5g.antswctrllut =
28115                     (u8) PHY_GETINTVAR(pi, "antswctl2g");
28116         }
28117
28118         wlc_phy_txpower_ipa_upd(pi);
28119
28120         pi->phy_txcore_disable_temp = (s16) PHY_GETINTVAR(pi, "tempthresh");
28121         if (pi->phy_txcore_disable_temp == 0) {
28122                 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
28123         }
28124
28125         pi->phy_tempsense_offset = (s8) PHY_GETINTVAR(pi, "tempoffset");
28126         if (pi->phy_tempsense_offset != 0) {
28127                 if (pi->phy_tempsense_offset >
28128                     (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET)) {
28129                         pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
28130                 } else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
28131                                                     NPHY_SROM_MINTEMPOFFSET)) {
28132                         pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
28133                 } else {
28134                         pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
28135                 }
28136         }
28137
28138         pi->phy_txcore_enable_temp =
28139             pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
28140
28141         pi->phycal_tempdelta = (u8) PHY_GETINTVAR(pi, "phycal_tempdelta");
28142         if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA) {
28143                 pi->phycal_tempdelta = 0;
28144         }
28145
28146         wlc_phy_txpwr_srom_read_ppr_nphy(pi);
28147
28148         return true;
28149 }
28150
28151 void wlc_phy_txpower_recalc_target_nphy(phy_info_t *pi)
28152 {
28153         u8 tx_pwr_ctrl_state;
28154         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28155         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28156
28157         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28158
28159         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28160                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28161                 (void)R_REG(&pi->regs->maccontrol);
28162                 udelay(1);
28163         }
28164
28165         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28166
28167         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28168                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28169 }
28170
28171 static void wlc_phy_txpwrctrl_coeff_setup_nphy(phy_info_t *pi)
28172 {
28173         u32 idx;
28174         u16 iqloCalbuf[7];
28175         u32 iqcomp, locomp, curr_locomp;
28176         s8 locomp_i, locomp_q;
28177         s8 curr_locomp_i, curr_locomp_q;
28178         u32 tbl_id, tbl_len, tbl_offset;
28179         u32 regval[128];
28180
28181         if (pi->phyhang_avoid)
28182                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28183
28184         wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
28185
28186         tbl_len = 128;
28187         tbl_offset = 320;
28188         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28189              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28190                 iqcomp =
28191                     (tbl_id ==
28192                      26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
28193                     (iqloCalbuf[1] & 0x3ff)
28194                     : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
28195                     (iqloCalbuf[3] & 0x3ff);
28196
28197                 for (idx = 0; idx < tbl_len; idx++) {
28198                         regval[idx] = iqcomp;
28199                 }
28200                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28201                                          regval);
28202         }
28203
28204         tbl_offset = 448;
28205         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28206              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28207
28208                 locomp =
28209                     (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
28210                 locomp_i = (s8) ((locomp >> 8) & 0xff);
28211                 locomp_q = (s8) ((locomp) & 0xff);
28212                 for (idx = 0; idx < tbl_len; idx++) {
28213                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28214                                 curr_locomp_i = locomp_i;
28215                                 curr_locomp_q = locomp_q;
28216                         } else {
28217                                 curr_locomp_i = (s8) ((locomp_i *
28218                                                          nphy_tpc_loscale[idx] +
28219                                                          128) >> 8);
28220                                 curr_locomp_q =
28221                                     (s8) ((locomp_q * nphy_tpc_loscale[idx] +
28222                                              128) >> 8);
28223                         }
28224                         curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
28225                         curr_locomp |= (u32) (curr_locomp_q & 0xff);
28226                         regval[idx] = curr_locomp;
28227                 }
28228                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28229                                          regval);
28230         }
28231
28232         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
28233
28234                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
28235                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
28236         }
28237
28238         if (pi->phyhang_avoid)
28239                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28240 }
28241
28242 static void wlc_phy_ipa_internal_tssi_setup_nphy(phy_info_t *pi)
28243 {
28244         u8 core;
28245
28246         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28247                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28248                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28249                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28250                                                  TX_SSI_MASTER, 0x5);
28251                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28252                                                  TX_SSI_MUX, 0xe);
28253
28254                                 if (pi->pubpi.radiorev != 5)
28255                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28256                                                          core, TSSIA, 0);
28257
28258                                 if (!NREV_IS(pi->pubpi.phy_rev, 7)) {
28259
28260                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28261                                                          core, TSSIG, 0x1);
28262                                 } else {
28263
28264                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28265                                                          core, TSSIG, 0x31);
28266                                 }
28267                         } else {
28268                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28269                                                  TX_SSI_MASTER, 0x9);
28270                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28271                                                  TX_SSI_MUX, 0xc);
28272                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28273                                                  TSSIG, 0);
28274
28275                                 if (pi->pubpi.radiorev != 5) {
28276                                         if (!NREV_IS(pi->pubpi.phy_rev, 7)) {
28277
28278                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28279                                                                  TX, core,
28280                                                                  TSSIA, 0x1);
28281                                         } else {
28282
28283                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28284                                                                  TX, core,
28285                                                                  TSSIA, 0x31);
28286                                         }
28287                                 }
28288                         }
28289                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
28290                                          0);
28291                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
28292                                          0);
28293                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
28294                                          0x3);
28295                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
28296                                          0x0);
28297                 }
28298         } else {
28299                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
28300                                 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
28301                                 0x80);
28302                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
28303                 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
28304
28305                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28306                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
28307                                          0x0);
28308                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
28309                                          0x0);
28310                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
28311                                          0x3);
28312                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
28313                                          0x0);
28314                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
28315                                          0x8);
28316                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
28317                                          0x0);
28318                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
28319                                          0x0);
28320
28321                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28322                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28323                                                  TX_SSI_MASTER, 0x5);
28324
28325                                 if (pi->pubpi.radiorev != 5)
28326                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28327                                                          core, TSSIA, 0x0);
28328                                 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
28329
28330                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28331                                                          core, TSSIG, 0x31);
28332                                 } else {
28333                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28334                                                          core, TSSIG, 0x11);
28335                                 }
28336                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28337                                                  TX_SSI_MUX, 0xe);
28338                         } else {
28339                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28340                                                  TX_SSI_MASTER, 0x9);
28341                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28342                                                  TSSIA, 0x31);
28343                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28344                                                  TSSIG, 0x0);
28345                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28346                                                  TX_SSI_MUX, 0xc);
28347                         }
28348                 }
28349         }
28350 }
28351
28352 static void wlc_phy_txpwrctrl_idle_tssi_nphy(phy_info_t *pi)
28353 {
28354         s32 rssi_buf[4];
28355         s32 int_val;
28356
28357         if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
28358
28359                 return;
28360
28361         if (PHY_IPA(pi)) {
28362                 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
28363         }
28364
28365         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28366                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
28367                                                   0, 0x3, 0,
28368                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
28369         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28370                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
28371         }
28372
28373         wlc_phy_stopplayback_nphy(pi);
28374
28375         wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
28376
28377         udelay(20);
28378         int_val =
28379             wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
28380                                    1);
28381         wlc_phy_stopplayback_nphy(pi);
28382         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
28383
28384         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28385                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
28386                                                   0, 0x3, 1,
28387                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
28388         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28389                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
28390         }
28391
28392         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28393
28394                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
28395                     (u8) ((int_val >> 24) & 0xff);
28396                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
28397                     (u8) ((int_val >> 24) & 0xff);
28398
28399                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
28400                     (u8) ((int_val >> 8) & 0xff);
28401                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
28402                     (u8) ((int_val >> 8) & 0xff);
28403         } else {
28404                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
28405                     (u8) ((int_val >> 24) & 0xff);
28406
28407                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
28408                     (u8) ((int_val >> 8) & 0xff);
28409
28410                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
28411                     (u8) ((int_val >> 16) & 0xff);
28412                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
28413                     (u8) ((int_val) & 0xff);
28414         }
28415
28416 }
28417
28418 static void wlc_phy_txpwrctrl_pwr_setup_nphy(phy_info_t *pi)
28419 {
28420         u32 idx;
28421         s16 a1[2], b0[2], b1[2];
28422         s8 target_pwr_qtrdbm[2];
28423         s32 num, den, pwr_est;
28424         u8 chan_freq_range;
28425         u8 idle_tssi[2];
28426         u32 tbl_id, tbl_len, tbl_offset;
28427         u32 regval[64];
28428         u8 core;
28429
28430         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28431                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28432                 (void)R_REG(&pi->regs->maccontrol);
28433                 udelay(1);
28434         }
28435
28436         if (pi->phyhang_avoid)
28437                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28438
28439         or_phy_reg(pi, 0x122, (0x1 << 0));
28440
28441         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28442                 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
28443         } else {
28444
28445                 or_phy_reg(pi, 0x1e7, (0x1 << 15));
28446         }
28447
28448         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28449                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28450
28451         if (pi->sh->sromrev < 4) {
28452                 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28453                 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28454                 target_pwr_qtrdbm[0] = 13 * 4;
28455                 target_pwr_qtrdbm[1] = 13 * 4;
28456                 a1[0] = -424;
28457                 a1[1] = -424;
28458                 b0[0] = 5612;
28459                 b0[1] = 5612;
28460                 b1[1] = -1393;
28461                 b1[0] = -1393;
28462         } else {
28463
28464                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
28465                 switch (chan_freq_range) {
28466                 case WL_CHAN_FREQ_RANGE_2G:
28467                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28468                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28469                         target_pwr_qtrdbm[0] =
28470                             pi->nphy_pwrctrl_info[0].max_pwr_2g;
28471                         target_pwr_qtrdbm[1] =
28472                             pi->nphy_pwrctrl_info[1].max_pwr_2g;
28473                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
28474                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
28475                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
28476                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
28477                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
28478                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
28479                         break;
28480                 case WL_CHAN_FREQ_RANGE_5GL:
28481                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28482                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28483                         target_pwr_qtrdbm[0] =
28484                             pi->nphy_pwrctrl_info[0].max_pwr_5gl;
28485                         target_pwr_qtrdbm[1] =
28486                             pi->nphy_pwrctrl_info[1].max_pwr_5gl;
28487                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
28488                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
28489                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
28490                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
28491                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
28492                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
28493                         break;
28494                 case WL_CHAN_FREQ_RANGE_5GM:
28495                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28496                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28497                         target_pwr_qtrdbm[0] =
28498                             pi->nphy_pwrctrl_info[0].max_pwr_5gm;
28499                         target_pwr_qtrdbm[1] =
28500                             pi->nphy_pwrctrl_info[1].max_pwr_5gm;
28501                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
28502                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
28503                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
28504                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
28505                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
28506                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
28507                         break;
28508                 case WL_CHAN_FREQ_RANGE_5GH:
28509                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28510                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28511                         target_pwr_qtrdbm[0] =
28512                             pi->nphy_pwrctrl_info[0].max_pwr_5gh;
28513                         target_pwr_qtrdbm[1] =
28514                             pi->nphy_pwrctrl_info[1].max_pwr_5gh;
28515                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
28516                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
28517                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
28518                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
28519                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
28520                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
28521                         break;
28522                 default:
28523                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28524                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28525                         target_pwr_qtrdbm[0] = 13 * 4;
28526                         target_pwr_qtrdbm[1] = 13 * 4;
28527                         a1[0] = -424;
28528                         a1[1] = -424;
28529                         b0[0] = 5612;
28530                         b0[1] = 5612;
28531                         b1[1] = -1393;
28532                         b1[0] = -1393;
28533                         break;
28534                 }
28535         }
28536
28537         target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
28538         target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
28539
28540         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28541                 if (pi->srom_fem2g.tssipos) {
28542                         or_phy_reg(pi, 0x1e9, (0x1 << 14));
28543                 }
28544
28545                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28546                         for (core = 0; core <= 1; core++) {
28547                                 if (PHY_IPA(pi)) {
28548
28549                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28550                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28551                                                                  TX, core,
28552                                                                  TX_SSI_MUX,
28553                                                                  0xe);
28554                                         } else {
28555                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28556                                                                  TX, core,
28557                                                                  TX_SSI_MUX,
28558                                                                  0xc);
28559                                         }
28560                                 } else {
28561                                 }
28562                         }
28563                 } else {
28564                         if (PHY_IPA(pi)) {
28565
28566                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28567                                                 RADIO_2056_TX0,
28568                                                 (CHSPEC_IS5G
28569                                                  (pi->
28570                                                   radio_chanspec)) ? 0xc : 0xe);
28571                                 write_radio_reg(pi,
28572                                                 RADIO_2056_TX_TX_SSI_MUX |
28573                                                 RADIO_2056_TX1,
28574                                                 (CHSPEC_IS5G
28575                                                  (pi->
28576                                                   radio_chanspec)) ? 0xc : 0xe);
28577                         } else {
28578
28579                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28580                                                 RADIO_2056_TX0, 0x11);
28581                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28582                                                 RADIO_2056_TX1, 0x11);
28583                         }
28584                 }
28585         }
28586
28587         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28588                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28589                 (void)R_REG(&pi->regs->maccontrol);
28590                 udelay(1);
28591         }
28592
28593         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28594                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
28595                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
28596         } else {
28597                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
28598                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
28599         }
28600
28601         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28602                 mod_phy_reg(pi, 0x222, (0xff << 0),
28603                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
28604         } else if (NREV_GT(pi->pubpi.phy_rev, 1)) {
28605                 mod_phy_reg(pi, 0x222, (0xff << 0),
28606                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
28607         }
28608
28609         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28610                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28611
28612         write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
28613
28614         write_phy_reg(pi, 0x1e9,
28615                       (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
28616
28617         write_phy_reg(pi, 0x1ea,
28618                       (target_pwr_qtrdbm[0] << 0) |
28619                       (target_pwr_qtrdbm[1] << 8));
28620
28621         tbl_len = 64;
28622         tbl_offset = 0;
28623         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28624              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28625
28626                 for (idx = 0; idx < tbl_len; idx++) {
28627                         num =
28628                             8 * (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
28629                         den = 32768 + a1[tbl_id - 26] * idx;
28630                         pwr_est = max(((4 * num + den / 2) / den), -8);
28631                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
28632                                 if (idx <=
28633                                     (uint) (31 - idle_tssi[tbl_id - 26] + 1))
28634                                         pwr_est =
28635                                             max(pwr_est,
28636                                                 target_pwr_qtrdbm[tbl_id - 26] +
28637                                                 1);
28638                         }
28639                         regval[idx] = (u32) pwr_est;
28640                 }
28641                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28642                                          regval);
28643         }
28644
28645         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28646         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
28647                                  pi->adj_pwr_tbl_nphy);
28648         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
28649                                  pi->adj_pwr_tbl_nphy);
28650
28651         if (pi->phyhang_avoid)
28652                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28653 }
28654
28655 static bool wlc_phy_txpwr_ison_nphy(phy_info_t *pi)
28656 {
28657         return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28658                                              (0x1 << 14) | (0x1 << 13));
28659 }
28660
28661 static u8 wlc_phy_txpwr_idx_cur_get_nphy(phy_info_t *pi, u8 core)
28662 {
28663         u16 tmp;
28664         tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
28665
28666         tmp = (tmp & (0x7f << 8)) >> 8;
28667         return (u8) tmp;
28668 }
28669
28670 static void
28671 wlc_phy_txpwr_idx_cur_set_nphy(phy_info_t *pi, u8 idx0, u8 idx1)
28672 {
28673         mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
28674
28675         if (NREV_GT(pi->pubpi.phy_rev, 1))
28676                 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
28677 }
28678
28679 u16 wlc_phy_txpwr_idx_get_nphy(phy_info_t *pi)
28680 {
28681         u16 tmp;
28682         u16 pwr_idx[2];
28683
28684         if (wlc_phy_txpwr_ison_nphy(pi)) {
28685                 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28686                 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28687
28688                 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28689         } else {
28690                 tmp =
28691                     ((pi->nphy_txpwrindex[PHY_CORE_0].
28692                       index_internal & 0xff) << 8) | (pi->
28693                                                       nphy_txpwrindex
28694                                                       [PHY_CORE_1].
28695                                                       index_internal & 0xff);
28696         }
28697
28698         return tmp;
28699 }
28700
28701 void wlc_phy_txpwr_papd_cal_nphy(phy_info_t *pi)
28702 {
28703         if (PHY_IPA(pi)
28704             && (pi->nphy_force_papd_cal
28705                 || (wlc_phy_txpwr_ison_nphy(pi)
28706                     &&
28707                     (((u32)
28708                       ABS(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28709                           pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28710                      || ((u32)
28711                          ABS(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28712                              pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4))))) {
28713                 wlc_phy_a4(pi, true);
28714         }
28715 }
28716
28717 void wlc_phy_txpwrctrl_enable_nphy(phy_info_t *pi, u8 ctrl_type)
28718 {
28719         u16 mask = 0, val = 0, ishw = 0;
28720         u8 ctr;
28721         uint core;
28722         u32 tbl_offset;
28723         u32 tbl_len;
28724         u16 regval[84];
28725
28726         if (pi->phyhang_avoid)
28727                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28728
28729         switch (ctrl_type) {
28730         case PHY_TPC_HW_OFF:
28731         case PHY_TPC_HW_ON:
28732                 pi->nphy_txpwrctrl = ctrl_type;
28733                 break;
28734         default:
28735                 break;
28736         }
28737
28738         if (ctrl_type == PHY_TPC_HW_OFF) {
28739                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28740
28741                         if (wlc_phy_txpwr_ison_nphy(pi)) {
28742                                 for (core = 0; core < pi->pubpi.phy_corenum;
28743                                      core++)
28744                                         pi->nphy_txpwr_idx[core] =
28745                                             wlc_phy_txpwr_idx_cur_get_nphy(pi,
28746                                                                            (u8)
28747                                                                            core);
28748                         }
28749
28750                 }
28751
28752                 tbl_len = 84;
28753                 tbl_offset = 64;
28754                 for (ctr = 0; ctr < tbl_len; ctr++) {
28755                         regval[ctr] = 0;
28756                 }
28757                 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28758                                          regval);
28759                 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28760                                          regval);
28761
28762                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28763
28764                         and_phy_reg(pi, 0x1e7,
28765                                     (u16) (~((0x1 << 15) |
28766                                                 (0x1 << 14) | (0x1 << 13))));
28767                 } else {
28768                         and_phy_reg(pi, 0x1e7,
28769                                     (u16) (~((0x1 << 14) | (0x1 << 13))));
28770                 }
28771
28772                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28773                         or_phy_reg(pi, 0x8f, (0x1 << 8));
28774                         or_phy_reg(pi, 0xa5, (0x1 << 8));
28775                 } else {
28776                         or_phy_reg(pi, 0xa5, (0x1 << 14));
28777                 }
28778
28779                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28780                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28781                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28782                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28783
28784                 if (NREV_LT(pi->pubpi.phy_rev, 2) && IS40MHZ(pi))
28785                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28786                                        MHF1_IQSWAP_WAR, WLC_BAND_ALL);
28787
28788         } else {
28789
28790                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28791                                          8, pi->adj_pwr_tbl_nphy);
28792                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28793                                          8, pi->adj_pwr_tbl_nphy);
28794
28795                 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28796                 mask = (0x1 << 14) | (0x1 << 13);
28797                 val = (ishw << 14) | (ishw << 13);
28798
28799                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28800                         mask |= (0x1 << 15);
28801                         val |= (ishw << 15);
28802                 }
28803
28804                 mod_phy_reg(pi, 0x1e7, mask, val);
28805
28806                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28807                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28808                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28809                                 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28810                         } else {
28811                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28812                                 if (NREV_GT(pi->pubpi.phy_rev, 1))
28813                                         mod_phy_reg(pi, 0x222,
28814                                                     (0xff << 0), 0x64);
28815                         }
28816                 }
28817
28818                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28819                         if ((pi->nphy_txpwr_idx[0] != 128)
28820                             && (pi->nphy_txpwr_idx[1] != 128)) {
28821                                 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28822                                                                pi->
28823                                                                nphy_txpwr_idx
28824                                                                [0],
28825                                                                pi->
28826                                                                nphy_txpwr_idx
28827                                                                [1]);
28828                         }
28829                 }
28830
28831                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28832                         and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28833                         and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28834                 } else {
28835                         and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28836                 }
28837
28838                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28839                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28840                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28841                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28842
28843                 if (NREV_LT(pi->pubpi.phy_rev, 2) && IS40MHZ(pi))
28844                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28845                                        0x0, WLC_BAND_ALL);
28846
28847                 if (PHY_IPA(pi)) {
28848                         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28849                                     0x29b, (0x1 << 2), (0) << 2);
28850
28851                         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28852                                     0x29b, (0x1 << 2), (0) << 2);
28853
28854                 }
28855
28856         }
28857
28858         if (pi->phyhang_avoid)
28859                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28860 }
28861
28862 void
28863 wlc_phy_txpwr_index_nphy(phy_info_t *pi, u8 core_mask, s8 txpwrindex,
28864                          bool restore_cals)
28865 {
28866         u8 core, txpwrctl_tbl;
28867         u16 tx_ind0, iq_ind0, lo_ind0;
28868         u16 m1m2;
28869         u32 txgain;
28870         u16 rad_gain, dac_gain;
28871         u8 bbmult;
28872         u32 iqcomp;
28873         u16 iqcomp_a, iqcomp_b;
28874         u32 locomp;
28875         u16 tmpval;
28876         u8 tx_pwr_ctrl_state;
28877         s32 rfpwr_offset;
28878         u16 regval[2];
28879
28880         if (pi->phyhang_avoid)
28881                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28882
28883         tx_ind0 = 192;
28884         iq_ind0 = 320;
28885         lo_ind0 = 448;
28886
28887         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28888
28889                 if ((core_mask & (1 << core)) == 0) {
28890                         continue;
28891                 }
28892
28893                 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28894
28895                 if (txpwrindex < 0) {
28896                         if (pi->nphy_txpwrindex[core].index < 0) {
28897
28898                                 continue;
28899                         }
28900
28901                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28902                                 mod_phy_reg(pi, 0x8f,
28903                                             (0x1 << 8),
28904                                             pi->nphy_txpwrindex[core].
28905                                             AfectrlOverride);
28906                                 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28907                                             pi->nphy_txpwrindex[core].
28908                                             AfectrlOverride);
28909                         } else {
28910                                 mod_phy_reg(pi, 0xa5,
28911                                             (0x1 << 14),
28912                                             pi->nphy_txpwrindex[core].
28913                                             AfectrlOverride);
28914                         }
28915
28916                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28917                                       0xaa : 0xab,
28918                                       pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28919
28920                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28921                                                  &pi->nphy_txpwrindex[core].
28922                                                  rad_gain);
28923
28924                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28925                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28926                         m1m2 |= ((core == PHY_CORE_0) ?
28927                                  (pi->nphy_txpwrindex[core].bbmult << 8) :
28928                                  (pi->nphy_txpwrindex[core].bbmult << 0));
28929                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28930
28931                         if (restore_cals) {
28932
28933                                 wlc_phy_table_write_nphy(pi, 15, 2,
28934                                                          (80 + 2 * core), 16,
28935                                                          (void *)&pi->
28936                                                          nphy_txpwrindex[core].
28937                                                          iqcomp_a);
28938
28939                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28940                                                          16,
28941                                                          &pi->
28942                                                          nphy_txpwrindex[core].
28943                                                          locomp);
28944                                 wlc_phy_table_write_nphy(pi, 15, 1, (93 + core),
28945                                                          16,
28946                                                          (void *)&pi->
28947                                                          nphy_txpwrindex[core].
28948                                                          locomp);
28949                         }
28950
28951                         wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28952
28953                         pi->nphy_txpwrindex[core].index_internal =
28954                             pi->nphy_txpwrindex[core].index_internal_save;
28955                 } else {
28956
28957                         if (pi->nphy_txpwrindex[core].index < 0) {
28958
28959                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28960                                         mod_phy_reg(pi, 0x8f,
28961                                                     (0x1 << 8),
28962                                                     pi->nphy_txpwrindex[core].
28963                                                     AfectrlOverride);
28964                                         mod_phy_reg(pi, 0xa5, (0x1 << 8),
28965                                                     pi->nphy_txpwrindex[core].
28966                                                     AfectrlOverride);
28967                                 } else {
28968                                         pi->nphy_txpwrindex[core].
28969                                             AfectrlOverride =
28970                                             read_phy_reg(pi, 0xa5);
28971                                 }
28972
28973                                 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28974                                     read_phy_reg(pi,
28975                                                  (core ==
28976                                                   PHY_CORE_0) ? 0xaa : 0xab);
28977
28978                                 wlc_phy_table_read_nphy(pi, 7, 1,
28979                                                         (0x110 + core), 16,
28980                                                         &pi->
28981                                                         nphy_txpwrindex[core].
28982                                                         rad_gain);
28983
28984                                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28985                                                         &tmpval);
28986                                 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28987                                 tmpval &= 0xff;
28988                                 pi->nphy_txpwrindex[core].bbmult =
28989                                     (u8) tmpval;
28990
28991                                 wlc_phy_table_read_nphy(pi, 15, 2,
28992                                                         (80 + 2 * core), 16,
28993                                                         (void *)&pi->
28994                                                         nphy_txpwrindex[core].
28995                                                         iqcomp_a);
28996
28997                                 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28998                                                         16,
28999                                                         (void *)&pi->
29000                                                         nphy_txpwrindex[core].
29001                                                         locomp);
29002
29003                                 pi->nphy_txpwrindex[core].index_internal_save =
29004                                     pi->nphy_txpwrindex[core].index_internal;
29005                         }
29006
29007                         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
29008                         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
29009
29010                         if (NREV_IS(pi->pubpi.phy_rev, 1))
29011                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
29012
29013                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29014                                                 (tx_ind0 + txpwrindex), 32,
29015                                                 &txgain);
29016
29017                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29018                                 rad_gain =
29019                                     (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
29020                         } else {
29021                                 rad_gain =
29022                                     (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
29023                         }
29024                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
29025                         bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
29026
29027                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29028                                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
29029                                                  0xa5), (0x1 << 8), (0x1 << 8));
29030                         } else {
29031                                 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
29032                         }
29033                         write_phy_reg(pi, (core == PHY_CORE_0) ?
29034                                       0xaa : 0xab, dac_gain);
29035
29036                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
29037                                                  &rad_gain);
29038
29039                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
29040                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
29041                         m1m2 |=
29042                             ((core ==
29043                               PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
29044
29045                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
29046
29047                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29048                                                 (iq_ind0 + txpwrindex), 32,
29049                                                 &iqcomp);
29050                         iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
29051                         iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
29052
29053                         if (restore_cals) {
29054                                 regval[0] = (u16) iqcomp_a;
29055                                 regval[1] = (u16) iqcomp_b;
29056                                 wlc_phy_table_write_nphy(pi, 15, 2,
29057                                                          (80 + 2 * core), 16,
29058                                                          regval);
29059                         }
29060
29061                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29062                                                 (lo_ind0 + txpwrindex), 32,
29063                                                 &locomp);
29064                         if (restore_cals) {
29065                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
29066                                                          16, &locomp);
29067                         }
29068
29069                         if (NREV_IS(pi->pubpi.phy_rev, 1))
29070                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
29071
29072                         if (PHY_IPA(pi)) {
29073                                 wlc_phy_table_read_nphy(pi,
29074                                                         (core ==
29075                                                          PHY_CORE_0 ?
29076                                                          NPHY_TBL_ID_CORE1TXPWRCTL
29077                                                          :
29078                                                          NPHY_TBL_ID_CORE2TXPWRCTL),
29079                                                         1, 576 + txpwrindex, 32,
29080                                                         &rfpwr_offset);
29081
29082                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
29083                                             0x29b, (0x1ff << 4),
29084                                             ((s16) rfpwr_offset) << 4);
29085
29086                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
29087                                             0x29b, (0x1 << 2), (1) << 2);
29088
29089                         }
29090
29091                         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
29092                 }
29093
29094                 pi->nphy_txpwrindex[core].index = txpwrindex;
29095         }
29096
29097         if (pi->phyhang_avoid)
29098                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
29099 }
29100
29101 void
29102 wlc_phy_txpower_sromlimit_get_nphy(phy_info_t *pi, uint chan, u8 *max_pwr,
29103                                    u8 txp_rate_idx)
29104 {
29105         u8 chan_freq_range;
29106
29107         chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
29108         switch (chan_freq_range) {
29109         case WL_CHAN_FREQ_RANGE_2G:
29110                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
29111                 break;
29112         case WL_CHAN_FREQ_RANGE_5GM:
29113                 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
29114                 break;
29115         case WL_CHAN_FREQ_RANGE_5GL:
29116                 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
29117                 break;
29118         case WL_CHAN_FREQ_RANGE_5GH:
29119                 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
29120                 break;
29121         default:
29122                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
29123                 break;
29124         }
29125
29126         return;
29127 }
29128
29129 void wlc_phy_stay_in_carriersearch_nphy(phy_info_t *pi, bool enable)
29130 {
29131         u16 clip_off[] = { 0xffff, 0xffff };
29132
29133         if (enable) {
29134                 if (pi->nphy_deaf_count == 0) {
29135                         pi->classifier_state =
29136                             wlc_phy_classifier_nphy(pi, 0, 0);
29137                         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
29138                         wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
29139                         wlc_phy_clip_det_nphy(pi, 1, clip_off);
29140                 }
29141
29142                 pi->nphy_deaf_count++;
29143
29144                 wlc_phy_resetcca_nphy(pi);
29145
29146         } else {
29147                 pi->nphy_deaf_count--;
29148
29149                 if (pi->nphy_deaf_count == 0) {
29150                         wlc_phy_classifier_nphy(pi, (0x7 << 0),
29151                                                 pi->classifier_state);
29152                         wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
29153                 }
29154         }
29155 }
29156
29157 void wlc_nphy_deaf_mode(phy_info_t *pi, bool mode)
29158 {
29159         wlapi_suspend_mac_and_wait(pi->sh->physhim);
29160
29161         if (mode) {
29162                 if (pi->nphy_deaf_count == 0)
29163                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
29164         } else {
29165                 if (pi->nphy_deaf_count > 0)
29166                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
29167         }
29168         wlapi_enable_mac(pi->sh->physhim);
29169 }