]> git.karo-electronics.de Git - linux-beck.git/blob - drivers/staging/brcm80211/phy/wlc_phy_n.c
Staging: brcm80211: remove FALSE #define
[linux-beck.git] / drivers / staging / brcm80211 / 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 <wlc_cfg.h>
18 #include <typedefs.h>
19 #include <linux/kernel.h>
20 #include <linux/string.h>
21 #include <linuxver.h>
22 #include <osl.h>
23 #include <siutils.h>
24 #include <sbchipc.h>
25 #include <hndpmu.h>
26 #include <bcmendian.h>
27
28 #include <wlc_phy_radio.h>
29 #include <wlc_phy_int.h>
30 #include <wlc_phyreg_n.h>
31 #include <wlc_phytbl_n.h>
32
33 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
34         read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
35         ((core == PHY_CORE_0) ? radio_type##_##jspace##0 : radio_type##_##jspace##1))
36 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
37         write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
38         ((core == PHY_CORE_0) ? radio_type##_##jspace##0 : radio_type##_##jspace##1), value);
39 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
40         write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value);
41
42 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
43         read_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##jspace##0##_##reg_name : \
44         radio_type##_##jspace##1##_##reg_name));
45 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
46         write_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##jspace##0##_##reg_name : \
47         radio_type##_##jspace##1##_##reg_name), value);
48 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
49         read_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##reg_name##_##jspace##0 : \
50         radio_type##_##reg_name##_##jspace##1));
51 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
52         write_radio_reg(pi, ((core == PHY_CORE_0) ? radio_type##_##reg_name##_##jspace##0 : \
53         radio_type##_##reg_name##_##jspace##1), value);
54
55 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
56 #define NPHY_ACI_CHANNEL_DELTA 5
57 #define NPHY_ACI_CHANNEL_SKIP 4
58 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
59 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
60 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
61 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
62 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
63 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
64
65 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
66
67 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
68
69 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
70
71 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
72
73 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
74
75 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
76
77 #define NPHY_NOISE_NOASSOC_ENTER_TH  400
78
79 #define NPHY_NOISE_ASSOC_ENTER_TH  400
80
81 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
82
83 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
84 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
85
86 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
87
88 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
89
90 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
91
92 #define NPHY_RSSICAL_MAXREAD 31
93
94 #define NPHY_RSSICAL_NPOLL 8
95 #define NPHY_RSSICAL_MAXD  (1<<20)
96 #define NPHY_MIN_RXIQ_PWR 2
97
98 #define NPHY_RSSICAL_W1_TARGET 25
99 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
100 #define NPHY_RSSICAL_NB_TARGET 0
101
102 #define NPHY_RSSICAL_W1_TARGET_REV3 29
103 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
104
105 #define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
106 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
107 #define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
108 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - NPHY_RSSICAL_MAXREAD)
109 #define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
110 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - NPHY_RSSICAL_MAXREAD)
111 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
112 #define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
113                                ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
114 #define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
115                                ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
116 #define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
117                                ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
118
119 #define NPHY_IQCAL_NUMGAINS 9
120 #define NPHY_N_GCTL 0x66
121
122 #define NPHY_PAPD_EPS_TBL_SIZE 64
123 #define NPHY_PAPD_SCL_TBL_SIZE 64
124 #define NPHY_NUM_DIG_FILT_COEFFS 15
125
126 #define NPHY_PAPD_COMP_OFF 0
127 #define NPHY_PAPD_COMP_ON  1
128
129 #define NPHY_SROM_TEMPSHIFT             32
130 #define NPHY_SROM_MAXTEMPOFFSET         16
131 #define NPHY_SROM_MINTEMPOFFSET         -16
132
133 #define NPHY_CAL_MAXTEMPDELTA           64
134
135 #define NPHY_NOISEVAR_TBLLEN40 256
136 #define NPHY_NOISEVAR_TBLLEN20 128
137
138 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
139
140 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
141
142 typedef struct _nphy_iqcal_params {
143         u16 txlpf;
144         u16 txgm;
145         u16 pga;
146         u16 pad;
147         u16 ipa;
148         u16 cal_gain;
149         u16 ncorr[5];
150 } nphy_iqcal_params_t;
151
152 typedef struct _nphy_txiqcal_ladder {
153         u8 percent;
154         u8 g_env;
155 } nphy_txiqcal_ladder_t;
156
157 typedef struct {
158         nphy_txgains_t gains;
159         bool useindex;
160         u8 index;
161 } nphy_ipa_txcalgains_t;
162
163 typedef struct nphy_papd_restore_state_t {
164         u16 fbmix[2];
165         u16 vga_master[2];
166         u16 intpa_master[2];
167         u16 afectrl[2];
168         u16 afeoverride[2];
169         u16 pwrup[2];
170         u16 atten[2];
171         u16 mm;
172 } nphy_papd_restore_state;
173
174 typedef struct _nphy_ipa_txrxgain {
175         u16 hpvga;
176         u16 lpf_biq1;
177         u16 lpf_biq0;
178         u16 lna2;
179         u16 lna1;
180         s8 txpwrindex;
181 } nphy_ipa_txrxgain_t;
182
183 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
184
185 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_5GHz[] = { {0, 0, 0, 0, 0, 100},
186 {0, 0, 0, 0, 0, 50},
187 {0, 0, 0, 0, 0, -1},
188 {0, 0, 0, 3, 0, -1},
189 {0, 0, 3, 3, 0, -1},
190 {0, 2, 3, 3, 0, -1}
191 };
192
193 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_2GHz[] = { {0, 0, 0, 0, 0, 128},
194 {0, 0, 0, 0, 0, 70},
195 {0, 0, 0, 0, 0, 20},
196 {0, 0, 0, 3, 0, 20},
197 {0, 0, 3, 3, 0, 20},
198 {0, 2, 3, 3, 0, 20}
199 };
200
201 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = { {0, 0, 0, 0, 0, 100},
202 {0, 0, 0, 0, 0, 50},
203 {0, 0, 0, 0, 0, -1},
204 {0, 0, 0, 3, 0, -1},
205 {0, 0, 3, 3, 0, -1},
206 {0, 0, 5, 3, 0, -1}
207 };
208
209 nphy_ipa_txrxgain_t nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = { {0, 0, 0, 0, 0, 10},
210 {0, 0, 0, 1, 0, 10},
211 {0, 0, 1, 2, 0, 10},
212 {0, 0, 1, 3, 0, 10},
213 {0, 0, 4, 3, 0, 10},
214 {0, 0, 6, 3, 0, 10}
215 };
216
217 #define NPHY_RXCAL_TONEAMP 181
218 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
219 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
220
221 enum {
222         NPHY_RXCAL_GAIN_INIT = 0,
223         NPHY_RXCAL_GAIN_UP,
224         NPHY_RXCAL_GAIN_DOWN
225 };
226
227 #define wlc_phy_get_papd_nphy(pi) \
228         (read_phy_reg((pi), 0x1e7) & \
229                         ((0x1 << 15) | \
230                         (0x1 << 14) | \
231                         (0x1 << 13)))
232
233 #define TXFILT_SHAPING_OFDM20   0
234 #define TXFILT_SHAPING_OFDM40   1
235 #define TXFILT_SHAPING_CCK      2
236 #define TXFILT_DEFAULT_OFDM20   3
237 #define TXFILT_DEFAULT_OFDM40   4
238
239 u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
240         {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
241          230, -44, 230, 201, -191, 201},
242         {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
243          26, 34, -32, 34},
244         {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
245          121, -73, 121, 91, 124, 91},
246         {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
247          151, 301, 151, 602, -752, 602},
248         {-92, 58, -96, 49, -104, 44, 17, 35, 17,
249          12, 25, 12, 13, 27, 13},
250         {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
251          230, -44, 230, 201, -191, 201},
252         {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
253          0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
254 };
255
256 typedef struct _chan_info_nphy_2055 {
257         u16 chan;
258         u16 freq;
259         uint unknown;
260         u8 RF_pll_ref;
261         u8 RF_rf_pll_mod1;
262         u8 RF_rf_pll_mod0;
263         u8 RF_vco_cap_tail;
264         u8 RF_vco_cal1;
265         u8 RF_vco_cal2;
266         u8 RF_pll_lf_c1;
267         u8 RF_pll_lf_r1;
268         u8 RF_pll_lf_c2;
269         u8 RF_lgbuf_cen_buf;
270         u8 RF_lgen_tune1;
271         u8 RF_lgen_tune2;
272         u8 RF_core1_lgbuf_a_tune;
273         u8 RF_core1_lgbuf_g_tune;
274         u8 RF_core1_rxrf_reg1;
275         u8 RF_core1_tx_pga_pad_tn;
276         u8 RF_core1_tx_mx_bgtrim;
277         u8 RF_core2_lgbuf_a_tune;
278         u8 RF_core2_lgbuf_g_tune;
279         u8 RF_core2_rxrf_reg1;
280         u8 RF_core2_tx_pga_pad_tn;
281         u8 RF_core2_tx_mx_bgtrim;
282         u16 PHY_BW1a;
283         u16 PHY_BW2;
284         u16 PHY_BW3;
285         u16 PHY_BW4;
286         u16 PHY_BW5;
287         u16 PHY_BW6;
288 } chan_info_nphy_2055_t;
289
290 typedef struct _chan_info_nphy_radio205x {
291         u16 chan;
292         u16 freq;
293         u8 RF_SYN_pll_vcocal1;
294         u8 RF_SYN_pll_vcocal2;
295         u8 RF_SYN_pll_refdiv;
296         u8 RF_SYN_pll_mmd2;
297         u8 RF_SYN_pll_mmd1;
298         u8 RF_SYN_pll_loopfilter1;
299         u8 RF_SYN_pll_loopfilter2;
300         u8 RF_SYN_pll_loopfilter3;
301         u8 RF_SYN_pll_loopfilter4;
302         u8 RF_SYN_pll_loopfilter5;
303         u8 RF_SYN_reserved_addr27;
304         u8 RF_SYN_reserved_addr28;
305         u8 RF_SYN_reserved_addr29;
306         u8 RF_SYN_logen_VCOBUF1;
307         u8 RF_SYN_logen_MIXER2;
308         u8 RF_SYN_logen_BUF3;
309         u8 RF_SYN_logen_BUF4;
310         u8 RF_RX0_lnaa_tune;
311         u8 RF_RX0_lnag_tune;
312         u8 RF_TX0_intpaa_boost_tune;
313         u8 RF_TX0_intpag_boost_tune;
314         u8 RF_TX0_pada_boost_tune;
315         u8 RF_TX0_padg_boost_tune;
316         u8 RF_TX0_pgaa_boost_tune;
317         u8 RF_TX0_pgag_boost_tune;
318         u8 RF_TX0_mixa_boost_tune;
319         u8 RF_TX0_mixg_boost_tune;
320         u8 RF_RX1_lnaa_tune;
321         u8 RF_RX1_lnag_tune;
322         u8 RF_TX1_intpaa_boost_tune;
323         u8 RF_TX1_intpag_boost_tune;
324         u8 RF_TX1_pada_boost_tune;
325         u8 RF_TX1_padg_boost_tune;
326         u8 RF_TX1_pgaa_boost_tune;
327         u8 RF_TX1_pgag_boost_tune;
328         u8 RF_TX1_mixa_boost_tune;
329         u8 RF_TX1_mixg_boost_tune;
330         u16 PHY_BW1a;
331         u16 PHY_BW2;
332         u16 PHY_BW3;
333         u16 PHY_BW4;
334         u16 PHY_BW5;
335         u16 PHY_BW6;
336 } chan_info_nphy_radio205x_t;
337
338 typedef struct _chan_info_nphy_radio2057 {
339         u16 chan;
340         u16 freq;
341         u8 RF_vcocal_countval0;
342         u8 RF_vcocal_countval1;
343         u8 RF_rfpll_refmaster_sparextalsize;
344         u8 RF_rfpll_loopfilter_r1;
345         u8 RF_rfpll_loopfilter_c2;
346         u8 RF_rfpll_loopfilter_c1;
347         u8 RF_cp_kpd_idac;
348         u8 RF_rfpll_mmd0;
349         u8 RF_rfpll_mmd1;
350         u8 RF_vcobuf_tune;
351         u8 RF_logen_mx2g_tune;
352         u8 RF_logen_mx5g_tune;
353         u8 RF_logen_indbuf2g_tune;
354         u8 RF_logen_indbuf5g_tune;
355         u8 RF_txmix2g_tune_boost_pu_core0;
356         u8 RF_pad2g_tune_pus_core0;
357         u8 RF_pga_boost_tune_core0;
358         u8 RF_txmix5g_boost_tune_core0;
359         u8 RF_pad5g_tune_misc_pus_core0;
360         u8 RF_lna2g_tune_core0;
361         u8 RF_lna5g_tune_core0;
362         u8 RF_txmix2g_tune_boost_pu_core1;
363         u8 RF_pad2g_tune_pus_core1;
364         u8 RF_pga_boost_tune_core1;
365         u8 RF_txmix5g_boost_tune_core1;
366         u8 RF_pad5g_tune_misc_pus_core1;
367         u8 RF_lna2g_tune_core1;
368         u8 RF_lna5g_tune_core1;
369         u16 PHY_BW1a;
370         u16 PHY_BW2;
371         u16 PHY_BW3;
372         u16 PHY_BW4;
373         u16 PHY_BW5;
374         u16 PHY_BW6;
375 } chan_info_nphy_radio2057_t;
376
377 typedef struct _chan_info_nphy_radio2057_rev5 {
378         u16 chan;
379         u16 freq;
380         u8 RF_vcocal_countval0;
381         u8 RF_vcocal_countval1;
382         u8 RF_rfpll_refmaster_sparextalsize;
383         u8 RF_rfpll_loopfilter_r1;
384         u8 RF_rfpll_loopfilter_c2;
385         u8 RF_rfpll_loopfilter_c1;
386         u8 RF_cp_kpd_idac;
387         u8 RF_rfpll_mmd0;
388         u8 RF_rfpll_mmd1;
389         u8 RF_vcobuf_tune;
390         u8 RF_logen_mx2g_tune;
391         u8 RF_logen_indbuf2g_tune;
392         u8 RF_txmix2g_tune_boost_pu_core0;
393         u8 RF_pad2g_tune_pus_core0;
394         u8 RF_lna2g_tune_core0;
395         u8 RF_txmix2g_tune_boost_pu_core1;
396         u8 RF_pad2g_tune_pus_core1;
397         u8 RF_lna2g_tune_core1;
398         u16 PHY_BW1a;
399         u16 PHY_BW2;
400         u16 PHY_BW3;
401         u16 PHY_BW4;
402         u16 PHY_BW5;
403         u16 PHY_BW6;
404 } chan_info_nphy_radio2057_rev5_t;
405
406 typedef struct nphy_sfo_cfg {
407         u16 PHY_BW1a;
408         u16 PHY_BW2;
409         u16 PHY_BW3;
410         u16 PHY_BW4;
411         u16 PHY_BW5;
412         u16 PHY_BW6;
413 } nphy_sfo_cfg_t;
414
415 static chan_info_nphy_2055_t chan_info_nphy_2055[] = {
416         {
417          184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
418          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
419          0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
420         {
421          186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
422          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
423          0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
424         {
425          188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
426          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
427          0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
428         {
429          190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
430          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
431          0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
432         {
433          192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
434          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
435          0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
436         {
437          194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
438          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
439          0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
440         {
441          196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
442          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
443          0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
444         {
445          198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
446          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
447          0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
448         {
449          200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
450          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
451          0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
452         {
453          202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
454          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
455          0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
456         {
457          204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
458          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
459          0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
460         {
461          206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
462          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
463          0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
464         {
465          208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
466          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
467          0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
468         {
469          210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
470          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
471          0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
472         {
473          212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
474          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
475          0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
476         {
477          214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
478          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
479          0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
480         {
481          216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
482          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
483          0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
484         {
485          218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
486          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
487          0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
488         {
489          220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
490          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
491          0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
492         {
493          222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
494          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
495          0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
496         {
497          224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
498          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
499          0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
500         {
501          226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
502          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
503          0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
504         {
505          228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
506          0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
507          0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
508         {
509          32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
510          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
511          0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
512         {
513          34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
514          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
515          0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
516         {
517          36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
518          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
519          0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
520         {
521          38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
522          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
523          0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
524         {
525          40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
526          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
527          0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
528         {
529          42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
530          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
531          0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
532         {
533          44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
534          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
535          0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
536         {
537          46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
538          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
539          0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
540         {
541          48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
542          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
543          0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
544         {
545          50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
546          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
547          0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
548         {
549          52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
550          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
551          0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
552         {
553          54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
554          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
555          0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
556         {
557          56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
558          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
559          0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
560         {
561          58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
562          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
563          0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
564         {
565          60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
566          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
567          0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
568         {
569          62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
570          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
571          0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
572         {
573          64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
574          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
575          0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
576         {
577          66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
578          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
579          0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
580         {
581          68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
582          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
583          0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
584         {
585          70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
586          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
587          0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
588         {
589          72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
590          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
591          0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
592         {
593          74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
594          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
595          0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
596         {
597          76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
598          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
599          0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
600         {
601          78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
602          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
603          0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
604         {
605          80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
606          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
607          0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
608         {
609          82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
610          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
611          0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
612         {
613          84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
614          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
615          0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
616         {
617          86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
618          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
619          0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
620         {
621          88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
622          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
623          0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
624         {
625          90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
626          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
627          0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
628         {
629          92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
630          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
631          0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
632         {
633          94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
634          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
635          0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
636         {
637          96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
638          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
639          0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
640         {
641          98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
642          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
643          0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
644         {
645          100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
646          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
647          0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
648         {
649          102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
650          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
651          0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
652         {
653          104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
654          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
655          0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
656         {
657          106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
658          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
659          0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
660         {
661          108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
662          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
663          0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
664         {
665          110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
666          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
667          0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
668         {
669          112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
670          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
671          0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
672         {
673          114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
674          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
675          0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
676         {
677          116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
678          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
679          0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
680         {
681          118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
682          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
683          0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
684         {
685          120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
686          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
687          0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
688         {
689          122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
690          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
691          0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
692         {
693          124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
694          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
695          0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
696         {
697          126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
698          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
699          0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
700         {
701          128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
702          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
703          0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
704         {
705          130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
706          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
707          0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
708         {
709          132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
710          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
711          0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
712         {
713          134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
714          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
715          0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
716         {
717          136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
718          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
719          0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
720         {
721          138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
722          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
723          0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
724         {
725          140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
726          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
727          0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
728         {
729          142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
730          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
731          0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
732         {
733          144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
734          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
735          0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
736         {
737          145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
738          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
739          0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
740         {
741          146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
742          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
743          0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
744         {
745          147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
746          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
747          0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
748         {
749          148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
750          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
751          0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
752         {
753          149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
754          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
755          0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
756         {
757          150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
758          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
759          0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
760         {
761          151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
762          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
763          0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
764         {
765          152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
766          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
767          0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
768         {
769          153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
770          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
771          0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
772         {
773          154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
774          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
775          0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
776         {
777          155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
778          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
779          0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
780         {
781          156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
782          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
783          0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
784         {
785          157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
786          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
787          0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
788         {
789          158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
790          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
791          0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
792         {
793          159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
794          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
795          0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
796         {
797          160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
798          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
799          0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
800         {
801          161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
802          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
803          0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
804         {
805          162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
806          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
807          0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
808         {
809          163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
810          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
811          0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
812         {
813          164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
814          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
815          0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
816         {
817          165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
818          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
819          0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
820         {
821          166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
822          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
823          0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
824         {
825          168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
826          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
827          0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
828         {
829          170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
830          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
831          0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
832         {
833          172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
834          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
835          0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
836         {
837          174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
838          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
839          0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
840         {
841          176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
842          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
843          0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
844         {
845          178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
846          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
847          0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
848         {
849          180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
850          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
851          0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
852         {
853          182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
854          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
855          0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
856         {
857          1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
858          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
859          0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
860         {
861          2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
862          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
863          0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
864         {
865          3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
866          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
867          0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
868         {
869          4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
870          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
871          0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
872         {
873          5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
874          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
875          0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
876         {
877          6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
878          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
879          0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
880         {
881          7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
882          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
883          0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
884         {
885          8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
886          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
887          0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
888         {
889          9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
890          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
891          0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
892         {
893          10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
894          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
895          0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
896         {
897          11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
898          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
899          0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
900         {
901          12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
902          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
903          0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
904         {
905          13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
906          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
907          0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
908         {
909          14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
910          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
911          0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
912 };
913
914 static chan_info_nphy_radio205x_t chan_info_nphyrev3_2056[] = {
915         {
916          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
917          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
918          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
919          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
920         {
921          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
922          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
923          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
924          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
925         {
926          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
927          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
928          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
929          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
930         {
931          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
932          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
933          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
934          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
935         {
936          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
937          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
938          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
939          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
940         {
941          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
942          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
943          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
944          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
945         {
946          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
947          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
948          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
949          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
950         {
951          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
952          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
953          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
954          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
955         {
956          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
957          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
958          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
959          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
960         {
961          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
962          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
963          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
964          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
965         {
966          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
967          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
968          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
969          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
970         {
971          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
972          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
973          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
974          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
975         {
976          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
977          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
978          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
979          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
980         {
981          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
982          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
983          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
984          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
985         {
986          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
987          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
988          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
989          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
990         {
991          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
992          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
993          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
994          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
995         {
996          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
997          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
998          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
999          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1000         {
1001          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1002          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1003          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1004          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1005         {
1006          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1007          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1008          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1009          0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1010         {
1011          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1012          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1013          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1014          0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1015         {
1016          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1017          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1018          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1019          0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1020         {
1021          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1022          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1023          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1024          0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1025         {
1026          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1027          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1028          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1029          0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1030         {
1031          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1032          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1033          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1034          0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1035         {
1036          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1037          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1038          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1039          0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1040         {
1041          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1042          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1043          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1044          0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1045         {
1046          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1047          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1048          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1049          0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1050         {
1051          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1052          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1053          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1054          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1055         {
1056          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1057          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1058          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1059          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1060         {
1061          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1062          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1063          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1064          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1065         {
1066          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1067          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1068          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1069          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1070         {
1071          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1072          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1073          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1074          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1075         {
1076          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1077          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1078          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1079          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1080         {
1081          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1082          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1083          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1084          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1085         {
1086          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1087          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1088          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1089          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1090         {
1091          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1092          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1093          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1094          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1095         {
1096          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1097          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1098          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1099          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1100         {
1101          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1102          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1103          0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1104          0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1105         {
1106          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1107          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1108          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1109          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1110         {
1111          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1112          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1113          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1114          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1115         {
1116          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1117          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1118          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1119          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1120         {
1121          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1122          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1123          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1124          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1125         {
1126          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1127          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1128          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1129          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1130         {
1131          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1132          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1133          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1134          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1135         {
1136          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1137          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1138          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1139          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1140         {
1141          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1142          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1143          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1144          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1145         {
1146          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1147          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1148          0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1149          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1150         {
1151          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1152          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1153          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1154          0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1155         {
1156          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1157          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1158          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1159          0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1160         {
1161          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1162          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1163          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1164          0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1165         {
1166          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1167          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1168          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1169          0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1170         {
1171          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1172          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1173          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1174          0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1175         {
1176          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1177          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1178          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1179          0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1180         {
1181          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1182          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1183          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1184          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1185         {
1186          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1187          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1188          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1189          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1190         {
1191          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1192          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1193          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1194          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1195         {
1196          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1197          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1198          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1199          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1200         {
1201          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1202          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1203          0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1204          0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1205         {
1206          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1207          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1208          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1209          0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1210         {
1211          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1212          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1213          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1214          0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1215         {
1216          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1217          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1218          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1219          0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1220         {
1221          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1222          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1223          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1224          0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1225         {
1226          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1227          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1228          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1229          0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1230         {
1231          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1232          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1233          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1234          0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1235         {
1236          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1237          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1238          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1239          0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1240         {
1241          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1242          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1243          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1244          0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1245         {
1246          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1247          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1248          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1249          0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1250         {
1251          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1252          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1253          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1254          0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1255         {
1256          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1257          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1258          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1259          0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1260         {
1261          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1262          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1263          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1264          0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1265         {
1266          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1267          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1268          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1269          0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1270         {
1271          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1272          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1273          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1274          0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1275         {
1276          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1277          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1278          0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1279          0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1280         {
1281          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1282          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1283          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1284          0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1285         {
1286          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1287          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1288          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1289          0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1290         {
1291          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1292          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1293          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1294          0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1295         {
1296          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1297          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1298          0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1299          0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1300         {
1301          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1302          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1303          0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1304          0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1305         {
1306          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1307          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1308          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1309          0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1310         {
1311          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1312          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1313          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1314          0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1315         {
1316          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1317          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1318          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1319          0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1320         {
1321          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1322          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1323          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1324          0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1325         {
1326          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1327          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1328          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1329          0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1330         {
1331          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1332          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1333          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1334          0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1335         {
1336          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1337          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1338          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1339          0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1340         {
1341          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1342          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1343          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1344          0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1345         {
1346          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1347          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1348          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1349          0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1350         {
1351          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1352          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1353          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1354          0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1355         {
1356          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1357          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1358          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1359          0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1360         {
1361          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1362          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1363          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1364          0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1365         {
1366          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1367          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1368          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1369          0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1370         {
1371          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1372          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1373          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1374          0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1375         {
1376          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1377          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1378          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1379          0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1380         {
1381          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1382          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1383          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1384          0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1385         {
1386          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1387          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1388          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1389          0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1390         {
1391          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1392          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1393          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1394          0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1395         {
1396          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1397          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1398          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1399          0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1400         {
1401          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1402          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1403          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1404          0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1405         {
1406          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1407          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1408          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1409          0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1410         {
1411          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1412          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1413          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1414          0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1415         {
1416          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1417          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1418          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1419          0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1420         {
1421          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1422          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1423          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1424          0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1425         {
1426          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1427          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1428          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1429          0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1430         {
1431          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1432          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1433          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1434          0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1435         {
1436          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1437          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1438          0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1439          0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1440         {
1441          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1442          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1443          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1444          0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1445         {
1446          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1447          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1448          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1449          0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1450         {
1451          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1452          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1453          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1454          0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1455         {
1456          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1457          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1458          0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1459          0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1460         {
1461          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1462          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1463          0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1464          0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1465         {
1466          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1467          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1468          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1469          0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1470         {
1471          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1472          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1473          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1474          0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1475         {
1476          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1477          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1478          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1479          0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1480         {
1481          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1482          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1483          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1484          0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1485         {
1486          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1487          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1488          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1489          0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1490         {
1491          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1492          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1493          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1494          0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1495         {
1496          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1497          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1498          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1499          0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1500         {
1501          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1502          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1503          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1504          0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1505         {
1506          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1507          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1508          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1509          0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1510         {
1511          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1512          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1513          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1514          0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1515         {
1516          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1517          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1518          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1519          0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1520         {
1521          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1522          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1523          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1524          0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1525         {
1526          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1527          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1528          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1529          0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1530         {
1531          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1532          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1533          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1534          0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1535 };
1536
1537 static chan_info_nphy_radio205x_t chan_info_nphyrev4_2056_A1[] = {
1538         {
1539          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1540          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1541          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1542          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1543         {
1544          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1545          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1546          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1547          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1548         {
1549          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1550          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1551          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1552          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1553         {
1554          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1555          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1556          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1557          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1558         {
1559          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1560          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1561          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1562          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1563         {
1564          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1565          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1566          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1567          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1568         {
1569          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1570          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1571          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1572          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1573         {
1574          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1575          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1576          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1577          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1578         {
1579          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1580          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1581          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1582          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1583         {
1584          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1585          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1586          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1587          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1588         {
1589          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1590          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1591          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1592          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1593         {
1594          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1595          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1596          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1597          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1598         {
1599          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1600          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1601          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1602          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1603         {
1604          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1605          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1606          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1607          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1608         {
1609          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1610          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1611          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1612          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1613         {
1614          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1615          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1616          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1617          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1618         {
1619          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1620          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1621          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1622          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1623         {
1624          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1625          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1626          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1627          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1628         {
1629          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1630          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1631          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1632          0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1633         {
1634          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1635          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1636          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1637          0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1638         {
1639          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1640          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1641          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1642          0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1643         {
1644          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1645          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1646          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1647          0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1648         {
1649          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1650          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1651          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1652          0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1653         {
1654          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1655          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1656          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1657          0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1658         {
1659          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1660          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1661          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1662          0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1663         {
1664          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1665          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1666          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1667          0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1668         {
1669          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1670          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1671          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1672          0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1673         {
1674          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1675          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1676          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1677          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1678         {
1679          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1680          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1681          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1682          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1683         {
1684          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1685          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1686          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1687          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1688         {
1689          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1690          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1691          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1692          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1693         {
1694          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1695          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1696          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1697          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1698         {
1699          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1700          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1701          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1702          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1703         {
1704          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1705          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1706          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1707          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1708         {
1709          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1710          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1711          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1712          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1713         {
1714          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1715          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1716          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1717          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1718         {
1719          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1720          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1721          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1722          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1723         {
1724          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1725          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1726          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1727          0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1728         {
1729          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1730          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1731          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1732          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1733         {
1734          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1735          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1736          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1737          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1738         {
1739          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1740          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1741          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1742          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1743         {
1744          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1745          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1746          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1747          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1748         {
1749          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1750          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1751          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1752          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1753         {
1754          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1755          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1756          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1757          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1758         {
1759          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1760          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1761          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1762          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1763         {
1764          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1765          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1766          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1767          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1768         {
1769          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1770          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1771          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1772          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1773         {
1774          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1775          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1776          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1777          0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1778         {
1779          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1780          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1781          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1782          0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1783         {
1784          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1785          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1786          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1787          0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1788         {
1789          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1790          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1791          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1792          0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1793         {
1794          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1795          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1796          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1797          0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1798         {
1799          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1800          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1801          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1802          0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1803         {
1804          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1805          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1806          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1807          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1808         {
1809          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1810          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1811          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1812          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1813         {
1814          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1815          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1816          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1817          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1818         {
1819          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1820          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1821          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1822          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1823         {
1824          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1825          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1826          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1827          0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1828         {
1829          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1830          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1831          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1832          0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1833         {
1834          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1835          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1836          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1837          0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1838         {
1839          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1840          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1841          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1842          0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1843         {
1844          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1845          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1846          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1847          0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1848         {
1849          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1850          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1851          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1852          0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1853         {
1854          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1855          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1856          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1857          0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1858         {
1859          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1860          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1861          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1862          0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1863         {
1864          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1865          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1866          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1867          0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1868         {
1869          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1870          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1871          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1872          0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1873         {
1874          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1875          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1876          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1877          0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1878         {
1879          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1880          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1881          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1882          0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1883         {
1884          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1885          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1886          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1887          0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1888         {
1889          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1890          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1891          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1892          0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1893         {
1894          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1895          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1896          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1897          0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1898         {
1899          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1900          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1901          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1902          0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1903         {
1904          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1905          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1906          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1907          0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1908         {
1909          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1910          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1911          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1912          0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1913         {
1914          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1915          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1916          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1917          0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1918         {
1919          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1920          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1921          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1922          0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1923         {
1924          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1925          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1926          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1927          0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1928         {
1929          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1930          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1931          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1932          0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1933         {
1934          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1935          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1936          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1937          0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1938         {
1939          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1940          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1941          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1942          0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1943         {
1944          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1945          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1946          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1947          0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1948         {
1949          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1950          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1951          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1952          0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1953         {
1954          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1955          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1956          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1957          0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1958         {
1959          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1960          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1961          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1962          0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1963         {
1964          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1965          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1966          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1967          0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1968         {
1969          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1970          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1971          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1972          0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1973         {
1974          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1975          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1976          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1977          0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1978         {
1979          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1980          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1981          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1982          0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1983         {
1984          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1985          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1986          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1987          0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1988         {
1989          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1990          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1991          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1992          0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1993         {
1994          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1995          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1996          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1997          0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1998         {
1999          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2000          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2001          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2002          0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2003         {
2004          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2005          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2006          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2007          0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2008         {
2009          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2010          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2011          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2012          0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2013         {
2014          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2015          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2016          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2017          0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2018         {
2019          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2020          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2021          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2022          0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2023         {
2024          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2025          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2026          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2027          0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2028         {
2029          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2030          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2031          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2032          0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2033         {
2034          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2035          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2036          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2037          0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2038         {
2039          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2040          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2041          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2042          0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2043         {
2044          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2045          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2046          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2047          0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2048         {
2049          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2050          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2051          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2052          0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2053         {
2054          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2055          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2056          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2057          0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2058         {
2059          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2060          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2061          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2062          0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2063         {
2064          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2065          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2066          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2067          0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2068         {
2069          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2070          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2071          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2072          0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2073         {
2074          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2075          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2076          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2077          0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2078         {
2079          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2080          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2081          0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2082          0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2083         {
2084          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2085          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2086          0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2087          0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2088         {
2089          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2090          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2091          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2092          0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2093         {
2094          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2095          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2096          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2097          0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2098         {
2099          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2100          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2101          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2102          0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2103         {
2104          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2105          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2106          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2107          0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2108         {
2109          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2110          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2111          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2112          0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2113         {
2114          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2115          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2116          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2117          0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2118         {
2119          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2120          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2121          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2122          0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2123         {
2124          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2125          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2126          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2127          0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2128         {
2129          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2130          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2131          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2132          0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2133         {
2134          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2135          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2136          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2137          0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2138         {
2139          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2140          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2141          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2142          0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2143         {
2144          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2145          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2146          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2147          0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2148         {
2149          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2150          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2151          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2152          0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2153         {
2154          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2155          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2156          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2157          0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2158 };
2159
2160 static chan_info_nphy_radio205x_t chan_info_nphyrev5_2056v5[] = {
2161         {
2162          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2163          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2164          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2165          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2166         {
2167          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2168          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2169          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2170          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2171         {
2172          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2173          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2174          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2175          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2176         {
2177          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2178          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2179          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2180          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2181         {
2182          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2183          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2184          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2185          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2186         {
2187          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2188          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2189          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2190          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2191         {
2192          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2193          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2194          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2195          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2196         {
2197          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2198          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2199          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2200          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2201         {
2202          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2203          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2204          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2205          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2206         {
2207          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2208          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2209          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2210          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2211         {
2212          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2213          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2214          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2215          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2216         {
2217          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2218          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2219          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2220          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2221         {
2222          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2223          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2224          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2225          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2226         {
2227          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2228          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2229          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2230          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2231         {
2232          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2233          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2234          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2235          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2236         {
2237          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2238          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2239          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2240          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2241         {
2242          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2243          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2244          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2245          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2246         {
2247          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2248          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2249          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2250          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2251         {
2252          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2253          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2254          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2255          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2256         {
2257          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2258          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2259          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2260          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2261         {
2262          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2263          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2264          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2265          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2266         {
2267          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2268          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2269          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2270          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2271         {
2272          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2273          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2274          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2275          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2276         {
2277          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2278          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2279          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2280          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2281         {
2282          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2283          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2284          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2285          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2286         {
2287          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2288          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2289          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2290          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2291         {
2292          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2293          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2294          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2295          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2296         {
2297          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2298          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2299          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2300          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2301         {
2302          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2303          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2304          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2305          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2306         {
2307          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2308          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2309          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2310          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2311         {
2312          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2313          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2314          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2315          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2316         {
2317          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2318          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2319          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2320          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2321         {
2322          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2323          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2324          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2325          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2326         {
2327          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2328          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2329          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2330          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2331         {
2332          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2333          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2334          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2335          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2336         {
2337          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2338          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2339          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2340          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2341         {
2342          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2343          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2344          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2345          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2346         {
2347          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2348          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2349          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2350          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2351         {
2352          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2353          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2354          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2355          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2356         {
2357          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2358          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2359          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2360          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2361         {
2362          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2363          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2364          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2365          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2366         {
2367          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2368          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2369          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2370          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2371         {
2372          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2373          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2374          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2375          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2376         {
2377          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2378          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2379          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2380          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2381         {
2382          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2383          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2384          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2385          0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2386         {
2387          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2388          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2389          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2390          0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2391         {
2392          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2393          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2394          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2395          0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2396         {
2397          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2398          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2399          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2400          0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2401         {
2402          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2403          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2404          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2405          0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2406         {
2407          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2408          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2409          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2410          0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2411         {
2412          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2413          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2414          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2415          0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2416         {
2417          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2418          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2419          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2420          0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2421         {
2422          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2423          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2424          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2425          0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2426         {
2427          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2428          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2429          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2430          0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2431         {
2432          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2433          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2434          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2435          0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2436         {
2437          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2438          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2439          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2440          0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2441         {
2442          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2443          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2444          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2445          0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2446         {
2447          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2448          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2449          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2450          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2451         {
2452          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2453          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2454          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2455          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2456         {
2457          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2458          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2459          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2460          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2461         {
2462          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2463          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2464          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2465          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2466         {
2467          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2468          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2469          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2470          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2471         {
2472          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2473          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2474          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2475          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2476         {
2477          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2478          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2479          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2480          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2481         {
2482          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2483          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2484          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2485          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2486         {
2487          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2488          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2489          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2490          0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2491         {
2492          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2493          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2494          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2495          0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2496         {
2497          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2498          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2499          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2500          0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2501         {
2502          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2503          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2504          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2505          0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2506         {
2507          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2508          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2509          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2510          0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2511         {
2512          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2513          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2514          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2515          0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2516         {
2517          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2518          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2519          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2520          0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2521         {
2522          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2523          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2524          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2525          0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2526         {
2527          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2528          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2529          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2530          0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2531         {
2532          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2533          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2534          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2535          0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2536         {
2537          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2538          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2539          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2540          0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2541         {
2542          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2543          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2544          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2545          0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2546         {
2547          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2548          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2549          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2550          0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2551         {
2552          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2553          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2554          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2555          0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2556         {
2557          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2558          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2559          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2560          0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2561         {
2562          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2563          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2564          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2565          0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2566         {
2567          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2568          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2569          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2570          0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2571         {
2572          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2573          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2574          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2575          0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2576         {
2577          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2578          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2579          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2580          0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2581         {
2582          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2583          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2584          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2585          0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2586         {
2587          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2588          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2589          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2590          0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2591         {
2592          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2593          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2594          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2595          0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2596         {
2597          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2598          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2599          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2600          0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2601         {
2602          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2603          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2604          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2605          0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2606         {
2607          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2608          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2609          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2610          0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2611         {
2612          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2613          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2614          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2615          0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2616         {
2617          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2618          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2619          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2620          0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2621         {
2622          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2623          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2624          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2625          0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2626         {
2627          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2628          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2629          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2630          0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2631         {
2632          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2633          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2634          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2635          0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2636         {
2637          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2638          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2639          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2640          0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2641         {
2642          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2643          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2644          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2645          0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2646         {
2647          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2648          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2649          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2650          0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2651         {
2652          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2653          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2654          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2655          0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2656         {
2657          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2658          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2659          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2660          0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2661         {
2662          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2663          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2664          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2665          0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2666         {
2667          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2668          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2669          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2670          0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2671         {
2672          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2673          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2674          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2675          0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2676         {
2677          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2678          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2679          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2680          0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2681         {
2682          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2683          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2684          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2685          0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2686         {
2687          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2688          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2689          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2690          0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2691         {
2692          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2693          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2694          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2695          0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2696         {
2697          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2698          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2699          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2700          0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2701         {
2702          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2703          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2704          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2705          0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2706         {
2707          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2708          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2709          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2710          0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2711         {
2712          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2713          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2714          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2715          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2716         {
2717          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2718          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2719          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2720          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2721         {
2722          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2723          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2724          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2725          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2726         {
2727          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2728          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2729          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2730          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2731         {
2732          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2733          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2734          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2735          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2736         {
2737          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2738          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2739          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2740          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2741         {
2742          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2743          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2744          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2745          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2746         {
2747          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2748          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2749          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2750          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2751         {
2752          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2753          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2754          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2755          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2756         {
2757          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2758          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2759          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2760          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2761         {
2762          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2763          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2764          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2765          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2766         {
2767          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2768          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2769          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2770          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2771         {
2772          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2773          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2774          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2775          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2776         {
2777          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2778          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2779          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2780          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2781 };
2782
2783 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v6[] = {
2784         {
2785          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2786          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2787          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2788          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2789         {
2790          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2791          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2792          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2793          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2794         {
2795          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2796          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2797          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2798          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2799         {
2800          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2801          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2802          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2803          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2804         {
2805          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2806          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2807          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2808          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2809         {
2810          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2811          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2812          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2813          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2814         {
2815          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2816          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2817          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2818          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2819         {
2820          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2821          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2822          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2823          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2824         {
2825          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2826          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2827          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2828          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2829         {
2830          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2831          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2832          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2833          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2834         {
2835          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2836          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2837          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2838          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2839         {
2840          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2841          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2842          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2843          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2844         {
2845          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2846          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2847          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2848          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2849         {
2850          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2851          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2852          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2853          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2854         {
2855          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2856          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2857          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2858          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2859         {
2860          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2861          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2862          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2863          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2864         {
2865          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2866          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2867          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2868          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2869         {
2870          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2871          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2872          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2873          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2874         {
2875          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2876          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2877          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2878          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2879         {
2880          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2881          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2882          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2883          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2884         {
2885          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2886          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2887          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2888          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2889         {
2890          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2891          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2892          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2893          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2894         {
2895          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2896          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2897          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2898          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2899         {
2900          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2901          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2902          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2903          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2904         {
2905          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2906          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2907          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2908          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2909         {
2910          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2911          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2912          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2913          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2914         {
2915          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2916          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2917          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2918          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2919         {
2920          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2921          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2922          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2923          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2924         {
2925          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2926          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2927          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2928          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2929         {
2930          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2931          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2932          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2933          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2934         {
2935          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2936          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2937          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2938          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2939         {
2940          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2941          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2942          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2943          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2944         {
2945          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2946          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2947          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2948          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2949         {
2950          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2951          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2952          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2953          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2954         {
2955          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2956          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2957          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2958          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2959         {
2960          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2961          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2962          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2963          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2964         {
2965          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2966          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2967          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2968          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2969         {
2970          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2971          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2972          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2973          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2974         {
2975          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2976          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2977          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2978          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2979         {
2980          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2981          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
2982          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2983          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2984         {
2985          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2986          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
2987          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
2988          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2989         {
2990          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2991          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
2992          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
2993          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2994         {
2995          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2996          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
2997          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
2998          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2999         {
3000          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3001          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3002          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3003          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3004         {
3005          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3006          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3007          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3008          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3009         {
3010          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3011          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3012          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3013          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3014         {
3015          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3016          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3017          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3018          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3019         {
3020          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3021          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3022          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3023          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3024         {
3025          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3026          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3027          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3028          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3029         {
3030          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3031          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3032          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3033          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3034         {
3035          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3036          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3037          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3038          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3039         {
3040          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3041          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3042          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3043          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3044         {
3045          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3046          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3047          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3048          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3049         {
3050          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3051          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3052          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3053          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3054         {
3055          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3056          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3057          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3058          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3059         {
3060          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3061          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3062          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3063          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3064         {
3065          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3066          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3067          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3068          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3069         {
3070          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3071          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3072          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3073          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3074         {
3075          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3076          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3077          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3078          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3079         {
3080          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3081          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3082          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3083          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3084         {
3085          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3086          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3087          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3088          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3089         {
3090          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3091          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3092          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3093          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3094         {
3095          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3096          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3097          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3098          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3099         {
3100          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3101          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3102          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3103          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3104         {
3105          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3106          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3107          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3108          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3109         {
3110          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3111          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3112          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3113          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3114         {
3115          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3116          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3117          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3118          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3119         {
3120          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3121          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3122          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3123          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3124         {
3125          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3126          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3127          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3128          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3129         {
3130          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3131          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3132          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3133          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3134         {
3135          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3136          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3137          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3138          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3139         {
3140          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3141          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3142          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3143          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3144         {
3145          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3146          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3147          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3148          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3149         {
3150          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3151          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3152          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3153          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3154         {
3155          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3156          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3157          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3158          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3159         {
3160          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3161          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3162          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3163          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3164         {
3165          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3166          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3167          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3168          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3169         {
3170          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3171          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3172          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3173          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3174         {
3175          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3176          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3177          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3178          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3179         {
3180          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3181          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3182          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3183          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3184         {
3185          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3186          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3187          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3188          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3189         {
3190          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3191          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3192          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3193          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3194         {
3195          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3196          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3197          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3198          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3199         {
3200          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3201          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3202          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3203          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3204         {
3205          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3206          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3207          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3208          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3209         {
3210          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3211          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3212          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3213          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3214         {
3215          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3216          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3217          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3218          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3219         {
3220          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3221          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3222          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3223          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3224         {
3225          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3226          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3227          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3228          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3229         {
3230          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3231          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3232          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3233          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3234         {
3235          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3236          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3237          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3238          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3239         {
3240          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3241          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3242          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3243          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3244         {
3245          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3246          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3247          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3248          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3249         {
3250          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3251          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3252          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3253          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3254         {
3255          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3256          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3257          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3258          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3259         {
3260          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3261          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3262          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3263          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3264         {
3265          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3266          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3267          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3268          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3269         {
3270          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3271          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3272          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3273          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3274         {
3275          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3276          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3277          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3278          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3279         {
3280          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3281          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3282          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3283          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3284         {
3285          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3286          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3287          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3288          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3289         {
3290          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3291          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3292          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3293          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3294         {
3295          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3296          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3297          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3298          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3299         {
3300          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3301          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3302          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3303          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3304         {
3305          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3306          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3307          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3308          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3309         {
3310          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3311          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3312          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3313          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3314         {
3315          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3316          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3317          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3318          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3319         {
3320          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3321          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3322          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3323          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3324         {
3325          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3326          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3327          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3328          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3329         {
3330          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3331          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3332          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3333          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3334         {
3335          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3336          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3337          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3338          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3339         {
3340          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3341          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3342          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3343          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3344         {
3345          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3346          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3347          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3348          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3349         {
3350          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3351          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3352          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3353          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3354         {
3355          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3356          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3357          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3358          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3359         {
3360          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3361          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3362          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3363          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3364         {
3365          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3366          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3367          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3368          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3369         {
3370          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3371          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3372          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3373          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3374         {
3375          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3376          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3377          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3378          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3379         {
3380          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3381          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3382          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3383          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3384         {
3385          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3386          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3387          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3388          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3389         {
3390          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3391          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3392          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3393          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3394         {
3395          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3396          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3397          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3398          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3399         {
3400          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3401          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3402          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3403          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3404 };
3405
3406 static chan_info_nphy_radio205x_t chan_info_nphyrev5n6_2056v7[] = {
3407         {
3408          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3409          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3410          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3411          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3412         {
3413          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3414          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3415          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3416          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3417         {
3418          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3419          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3420          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3421          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3422         {
3423          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3424          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3425          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3426          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3427         {
3428          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3429          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3430          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3431          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3432         {
3433          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3434          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3435          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3436          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3437         {
3438          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3439          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3440          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3441          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3442         {
3443          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3444          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3445          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3446          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3447         {
3448          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3449          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3450          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3451          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3452         {
3453          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3454          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3455          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3456          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3457         {
3458          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3459          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3460          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3461          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3462         {
3463          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3464          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3465          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3466          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3467         {
3468          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3469          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3470          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3471          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3472         {
3473          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3474          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3475          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3476          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3477         {
3478          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3479          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3480          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3481          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3482         {
3483          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3484          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3485          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3486          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3487         {
3488          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3489          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3490          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3491          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3492         {
3493          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3494          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3495          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3496          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3497         {
3498          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3499          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3500          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3501          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3502         {
3503          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3504          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3505          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3506          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3507         {
3508          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3509          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3510          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3511          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3512         {
3513          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3514          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3515          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3516          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3517         {
3518          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3519          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3520          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3521          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3522         {
3523          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3524          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3525          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3526          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3527         {
3528          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3529          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3530          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3531          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3532         {
3533          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3534          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3535          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3536          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3537         {
3538          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3539          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3540          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3541          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3542         {
3543          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3544          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3545          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3546          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3547         {
3548          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3549          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3550          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3551          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3552         {
3553          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3554          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3555          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3556          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3557         {
3558          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3559          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3560          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3561          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3562         {
3563          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3564          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3565          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3566          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3567         {
3568          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3569          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3570          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3571          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3572         {
3573          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3574          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3575          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3576          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3577         {
3578          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3579          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3580          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3581          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3582         {
3583          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3584          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3585          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3586          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3587         {
3588          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3589          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3590          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3591          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3592         {
3593          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3594          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3595          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3596          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3597         {
3598          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3599          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3600          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3601          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3602         {
3603          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3604          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3605          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3606          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3607         {
3608          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3609          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3610          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3611          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3612         {
3613          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3614          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3615          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3616          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3617         {
3618          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3619          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3620          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3621          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3622         {
3623          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3624          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3625          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3626          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3627         {
3628          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3629          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3630          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3631          0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3632         {
3633          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3634          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3635          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3636          0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3637         {
3638          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3639          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3640          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3641          0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3642         {
3643          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3644          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3645          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3646          0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3647         {
3648          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3649          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3650          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3651          0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3652         {
3653          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3654          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3655          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3656          0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3657         {
3658          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3659          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3660          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3661          0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3662         {
3663          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3664          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3665          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3666          0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3667         {
3668          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3669          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3670          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3671          0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3672         {
3673          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3674          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3675          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3676          0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3677         {
3678          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3679          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3680          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3681          0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3682         {
3683          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3684          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3685          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3686          0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3687         {
3688          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3689          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3690          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3691          0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3692         {
3693          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3694          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3695          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3696          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3697         {
3698          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3699          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3700          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3701          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3702         {
3703          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3704          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3705          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3706          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3707         {
3708          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3709          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3710          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3711          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3712         {
3713          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3714          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3715          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3716          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3717         {
3718          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3719          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3720          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3721          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3722         {
3723          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3724          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3725          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3726          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3727         {
3728          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3729          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3730          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3731          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3732         {
3733          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3734          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3735          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3736          0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3737         {
3738          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3739          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3740          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3741          0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3742         {
3743          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3744          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3745          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3746          0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3747         {
3748          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3749          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3750          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3751          0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3752         {
3753          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3754          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3755          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3756          0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3757         {
3758          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3759          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3760          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3761          0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3762         {
3763          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3764          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3765          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3766          0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3767         {
3768          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3769          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3770          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3771          0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3772         {
3773          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3774          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3775          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3776          0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3777         {
3778          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3779          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3780          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3781          0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3782         {
3783          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3784          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3785          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3786          0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3787         {
3788          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3789          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3790          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3791          0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3792         {
3793          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3794          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3795          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3796          0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3797         {
3798          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3799          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3800          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3801          0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3802         {
3803          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3804          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3805          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3806          0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3807         {
3808          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3809          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3810          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3811          0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3812         {
3813          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3814          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3815          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3816          0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3817         {
3818          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3819          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3820          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3821          0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3822         {
3823          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3824          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3825          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3826          0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3827         {
3828          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3829          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3830          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3831          0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3832         {
3833          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3834          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3835          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3836          0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3837         {
3838          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3839          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3840          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3841          0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3842         {
3843          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3844          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3845          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3846          0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3847         {
3848          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3849          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3850          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3851          0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3852         {
3853          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3854          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3855          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3856          0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3857         {
3858          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3859          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3860          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3861          0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3862         {
3863          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3864          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3865          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3866          0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3867         {
3868          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3869          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3870          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3871          0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3872         {
3873          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3874          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3875          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3876          0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3877         {
3878          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3879          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3880          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3881          0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3882         {
3883          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3884          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3885          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3886          0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3887         {
3888          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3889          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3890          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3891          0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3892         {
3893          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3894          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3895          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3896          0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3897         {
3898          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3899          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3900          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3901          0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3902         {
3903          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3904          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3905          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3906          0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3907         {
3908          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3909          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3910          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3911          0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3912         {
3913          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3914          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3915          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3916          0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3917         {
3918          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3919          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3920          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3921          0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3922         {
3923          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3924          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3925          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3926          0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3927         {
3928          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3929          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3930          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3931          0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3932         {
3933          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3934          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3935          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3936          0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3937         {
3938          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3939          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3940          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3941          0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3942         {
3943          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3944          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3945          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3946          0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3947         {
3948          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3949          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3950          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3951          0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3952         {
3953          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3954          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3955          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3956          0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3957         {
3958          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3959          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3960          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3961          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3962         {
3963          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3964          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3965          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3966          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3967         {
3968          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3969          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3970          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3971          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3972         {
3973          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3974          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3975          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3976          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3977         {
3978          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3979          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
3980          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
3981          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3982         {
3983          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3984          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
3985          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
3986          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3987         {
3988          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3989          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
3990          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
3991          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3992         {
3993          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3994          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
3995          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
3996          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3997         {
3998          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3999          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4000          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4001          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4002         {
4003          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4004          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4005          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4006          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4007         {
4008          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4009          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4010          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4011          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4012         {
4013          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4014          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4015          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4016          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4017         {
4018          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4019          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4020          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4021          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4022         {
4023          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4024          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4025          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4026          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4027 };
4028
4029 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v8[] = {
4030         {
4031          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4032          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4033          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4034          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4035         {
4036          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4037          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4038          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4039          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4040         {
4041          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4042          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4043          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4044          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4045         {
4046          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4047          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4048          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4049          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4050         {
4051          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4052          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4053          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4054          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4055         {
4056          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4057          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4058          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4059          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4060         {
4061          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4062          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4063          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4064          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4065         {
4066          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4067          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4068          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4069          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4070         {
4071          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4072          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4073          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4074          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4075         {
4076          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4077          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4078          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4079          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4080         {
4081          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4082          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4083          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4084          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4085         {
4086          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4087          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4088          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4089          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4090         {
4091          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4092          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4093          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4094          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4095         {
4096          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4097          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4098          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4099          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4100         {
4101          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4102          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4103          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4104          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4105         {
4106          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4107          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4108          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4109          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4110         {
4111          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4112          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4113          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4114          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4115         {
4116          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4117          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4118          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4119          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4120         {
4121          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4122          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4123          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4124          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4125         {
4126          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4127          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4128          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4129          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4130         {
4131          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4132          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4133          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4134          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4135         {
4136          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4137          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4138          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4139          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4140         {
4141          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4142          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4143          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4144          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4145         {
4146          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4147          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4148          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4149          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4150         {
4151          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4152          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4153          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4154          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4155         {
4156          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4157          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4158          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4159          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4160         {
4161          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4162          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4163          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4164          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4165         {
4166          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4167          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4168          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4169          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4170         {
4171          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4172          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4173          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4174          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4175         {
4176          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4177          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4178          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4179          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4180         {
4181          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4182          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4183          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4184          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4185         {
4186          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4187          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4188          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4189          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4190         {
4191          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4192          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4193          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4194          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4195         {
4196          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4197          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4198          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4199          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4200         {
4201          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4202          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4203          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4204          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4205         {
4206          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4207          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4208          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4209          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4210         {
4211          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4212          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4213          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4214          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4215         {
4216          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4217          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4218          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4219          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4220         {
4221          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4222          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4223          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4224          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4225         {
4226          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4227          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4228          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4229          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4230         {
4231          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4232          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4233          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4234          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4235         {
4236          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4237          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4238          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4239          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4240         {
4241          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4242          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4243          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4244          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4245         {
4246          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4247          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4248          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4249          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4250         {
4251          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4252          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4253          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4254          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4255         {
4256          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4257          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4258          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4259          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4260         {
4261          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4262          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4263          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4264          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4265         {
4266          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4267          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4268          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4269          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4270         {
4271          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4272          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4273          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4274          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4275         {
4276          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4277          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4278          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4279          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4280         {
4281          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4282          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4283          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4284          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4285         {
4286          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4287          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4288          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4289          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4290         {
4291          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4292          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4293          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4294          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4295         {
4296          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4297          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4298          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4299          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4300         {
4301          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4302          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4303          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4304          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4305         {
4306          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4307          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4308          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4309          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4310         {
4311          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4312          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4313          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4314          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4315         {
4316          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4317          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4318          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4319          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4320         {
4321          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4322          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4323          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4324          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4325         {
4326          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4327          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4328          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4329          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4330         {
4331          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4332          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4333          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4334          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4335         {
4336          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4337          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4338          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4339          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4340         {
4341          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4342          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4343          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4344          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4345         {
4346          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4347          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4348          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4349          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4350         {
4351          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4352          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4353          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4354          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4355         {
4356          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4357          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4358          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4359          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4360         {
4361          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4362          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4363          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4364          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4365         {
4366          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4367          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4368          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4369          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4370         {
4371          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4372          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4373          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4374          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4375         {
4376          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4377          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4378          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4379          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4380         {
4381          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4382          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4383          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4384          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4385         {
4386          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4387          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4388          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4389          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4390         {
4391          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4392          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4393          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4394          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4395         {
4396          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4397          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4398          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4399          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4400         {
4401          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4402          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4403          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4404          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4405         {
4406          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4407          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4408          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4409          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4410         {
4411          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4412          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4413          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4414          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4415         {
4416          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4417          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4418          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4419          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4420         {
4421          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4422          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4423          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4424          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4425         {
4426          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4427          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4428          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4429          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4430         {
4431          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4432          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4433          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4434          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4435         {
4436          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4437          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4438          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4439          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4440         {
4441          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4442          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4443          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4444          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4445         {
4446          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4447          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4448          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4449          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4450         {
4451          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4452          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4453          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4454          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4455         {
4456          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4457          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4458          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4459          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4460         {
4461          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4462          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4463          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4464          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4465         {
4466          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4467          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4468          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4469          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4470         {
4471          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4472          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4473          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4474          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4475         {
4476          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4477          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4478          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4479          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4480         {
4481          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4482          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4483          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4484          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4485         {
4486          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4487          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4488          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4489          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4490         {
4491          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4492          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4493          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4494          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4495         {
4496          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4497          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4498          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4499          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4500         {
4501          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4502          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4503          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4504          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4505         {
4506          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4507          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4508          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4509          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4510         {
4511          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4512          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4513          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4514          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4515         {
4516          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4517          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4518          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4519          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4520         {
4521          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4522          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4523          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4524          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4525         {
4526          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4527          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4528          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4529          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4530         {
4531          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4532          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4533          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4534          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4535         {
4536          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4537          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4538          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4539          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4540         {
4541          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4542          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4543          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4544          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4545         {
4546          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4547          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4548          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4549          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4550         {
4551          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4552          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4553          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4554          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4555         {
4556          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4557          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4558          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4559          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4560         {
4561          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4562          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4563          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4564          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4565         {
4566          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4567          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4568          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4569          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4570         {
4571          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4572          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4573          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4574          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4575         {
4576          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4577          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4578          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4579          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4580         {
4581          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4582          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4583          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4584          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4585         {
4586          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4587          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4588          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4589          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4590         {
4591          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4592          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4593          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4594          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4595         {
4596          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4597          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4598          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4599          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4600         {
4601          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4602          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4603          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4604          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4605         {
4606          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4607          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4608          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4609          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4610         {
4611          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4612          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4613          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4614          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4615         {
4616          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4617          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4618          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4619          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4620         {
4621          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4622          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4623          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4624          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4625         {
4626          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4627          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4628          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4629          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4630         {
4631          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4632          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4633          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4634          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4635         {
4636          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4637          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4638          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4639          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4640         {
4641          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4642          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4643          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4644          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4645         {
4646          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4647          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4648          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4649          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4650 };
4651
4652 static chan_info_nphy_radio205x_t chan_info_nphyrev6_2056v11[] = {
4653         {
4654          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4655          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4656          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4657          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4658         {
4659          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4660          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4661          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4662          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4663         {
4664          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4665          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4666          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4667          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4668         {
4669          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4670          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4671          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4672          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4673         {
4674          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4675          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4676          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4677          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4678         {
4679          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4680          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4681          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4682          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4683         {
4684          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4685          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4686          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4687          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4688         {
4689          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4690          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4691          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4692          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4693         {
4694          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4695          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4696          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4697          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4698         {
4699          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4700          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4701          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4702          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4703         {
4704          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4705          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4706          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4707          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4708         {
4709          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4710          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4711          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4712          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4713         {
4714          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4715          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4716          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4717          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4718         {
4719          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4720          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4721          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4722          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4723         {
4724          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4725          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4726          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4727          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4728         {
4729          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4730          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4731          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4732          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4733         {
4734          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4735          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4736          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4737          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4738         {
4739          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4740          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4741          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4742          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4743         {
4744          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4745          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4746          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4747          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4748         {
4749          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4750          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4751          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4752          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4753         {
4754          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4755          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4756          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4757          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4758         {
4759          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4760          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4761          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4762          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4763         {
4764          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4765          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4766          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4767          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4768         {
4769          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4770          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4771          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4772          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4773         {
4774          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4775          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4776          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4777          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4778         {
4779          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4780          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4781          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4782          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4783         {
4784          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4785          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4786          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4787          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4788         {
4789          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4790          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4791          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4792          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4793         {
4794          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4795          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4796          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4797          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4798         {
4799          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4800          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4801          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4802          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4803         {
4804          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4805          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4806          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4807          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4808         {
4809          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4810          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4811          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4812          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4813         {
4814          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4815          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4816          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4817          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4818         {
4819          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4820          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4821          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4822          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4823         {
4824          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4825          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4826          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4827          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4828         {
4829          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4830          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4831          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4832          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4833         {
4834          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4835          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4836          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4837          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4838         {
4839          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4840          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4841          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4842          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4843         {
4844          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4845          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4846          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4847          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4848         {
4849          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4850          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4851          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4852          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4853         {
4854          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4855          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4856          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4857          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4858         {
4859          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4860          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4861          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4862          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4863         {
4864          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4865          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4866          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4867          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4868         {
4869          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4870          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4871          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4872          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4873         {
4874          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4875          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4876          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4877          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4878         {
4879          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4880          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4881          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4882          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4883         {
4884          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4885          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4886          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4887          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4888         {
4889          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4890          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4891          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4892          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4893         {
4894          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4895          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4896          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4897          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4898         {
4899          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4900          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4901          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4902          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4903         {
4904          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4905          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4906          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4907          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4908         {
4909          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4910          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4911          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4912          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4913         {
4914          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4915          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4916          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4917          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4918         {
4919          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4920          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4921          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4922          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4923         {
4924          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4925          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4926          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4927          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4928         {
4929          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4930          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4931          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4932          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4933         {
4934          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4935          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4936          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4937          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4938         {
4939          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4940          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4941          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4942          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4943         {
4944          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4945          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4946          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4947          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4948         {
4949          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4950          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4951          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4952          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4953         {
4954          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4955          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4956          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4957          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4958         {
4959          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4960          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4961          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4962          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4963         {
4964          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4965          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4966          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4967          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4968         {
4969          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4970          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4971          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4972          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4973         {
4974          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4975          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4976          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4977          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4978         {
4979          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4980          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4981          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4982          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4983         {
4984          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4985          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4986          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4987          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4988         {
4989          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
4990          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4991          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4992          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4993         {
4994          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
4995          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4996          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4997          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4998         {
4999          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5000          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5001          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5002          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5003         {
5004          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5005          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5006          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5007          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5008         {
5009          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5010          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5011          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5012          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5013         {
5014          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5015          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5016          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5017          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5018         {
5019          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5020          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5021          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5022          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5023         {
5024          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5025          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5026          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5027          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5028         {
5029          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5030          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5031          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5032          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5033         {
5034          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5035          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5036          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5037          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5038         {
5039          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5040          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5041          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5042          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5043         {
5044          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5045          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5046          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5047          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5048         {
5049          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5050          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5051          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5052          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5053         {
5054          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5055          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5056          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5057          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5058         {
5059          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5060          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5061          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5062          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5063         {
5064          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5065          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5066          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5067          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5068         {
5069          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5070          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5071          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5072          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5073         {
5074          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5075          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5076          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5077          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5078         {
5079          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5080          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5081          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5082          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5083         {
5084          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5085          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5086          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5087          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5088         {
5089          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5090          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5091          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5092          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5093         {
5094          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5095          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5096          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5097          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5098         {
5099          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5100          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5101          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5102          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5103         {
5104          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5105          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5106          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5107          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5108         {
5109          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5110          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5111          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5112          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5113         {
5114          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5115          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5116          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5117          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5118         {
5119          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5120          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5121          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5122          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5123         {
5124          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5125          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5126          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5127          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5128         {
5129          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5130          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5131          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5132          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5133         {
5134          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5135          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5136          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5137          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5138         {
5139          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5140          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5141          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5142          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5143         {
5144          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5145          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5146          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5147          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5148         {
5149          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5150          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5151          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5152          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5153         {
5154          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5155          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5156          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5157          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5158         {
5159          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5160          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5161          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5162          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5163         {
5164          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5165          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5166          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5167          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5168         {
5169          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5170          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5171          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5172          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5173         {
5174          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5175          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5176          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5177          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5178         {
5179          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5180          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5181          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5182          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5183         {
5184          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5185          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5186          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5187          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5188         {
5189          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5190          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5191          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5192          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5193         {
5194          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5195          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5196          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5197          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5198         {
5199          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5200          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5201          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5202          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5203         {
5204          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5205          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5206          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5207          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5208         {
5209          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5210          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5211          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5212          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5213         {
5214          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5215          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5216          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5217          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5218         {
5219          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5220          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5221          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5222          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5223         {
5224          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5225          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5226          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5227          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5228         {
5229          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5230          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5231          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5232          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5233         {
5234          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5235          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5236          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5237          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5238         {
5239          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5240          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5241          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5242          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5243         {
5244          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5245          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5246          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5247          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5248         {
5249          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5250          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5251          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5252          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5253         {
5254          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5255          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5256          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5257          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5258         {
5259          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5260          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5261          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5262          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5263         {
5264          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5265          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5266          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5267          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5268         {
5269          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5270          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5271          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5272          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5273 };
5274
5275 static chan_info_nphy_radio2057_t chan_info_nphyrev7_2057_rev4[] = {
5276         {
5277          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5278          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5279          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5280          0x0215,
5281          0x0216,
5282          },
5283         {
5284          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5285          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5286          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5287          0x0214,
5288          0x0215,
5289          },
5290         {
5291          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5292          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5293          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5294          0x0213,
5295          0x0214,
5296          },
5297         {
5298          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5299          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5300          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5301          0x0212,
5302          0x0213,
5303          },
5304         {
5305          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5306          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5307          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5308          0x0211,
5309          0x0212,
5310          },
5311         {
5312          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5313          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5314          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5315          0x020f,
5316          0x0211,
5317          },
5318         {
5319          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5320          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5321          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5322          0x020e,
5323          0x020f,
5324          },
5325         {
5326          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5327          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5328          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5329          0x020d,
5330          0x020e,
5331          },
5332         {
5333          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5334          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5335          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5336          0x020c,
5337          0x020d,
5338          },
5339         {
5340          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5341          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5342          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5343          0x020b,
5344          0x020c,
5345          },
5346         {
5347          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5348          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5349          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5350          0x020a,
5351          0x020b,
5352          },
5353         {
5354          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5355          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5356          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5357          0x0209,
5358          0x020a,
5359          },
5360         {
5361          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5362          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5363          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5364          0x0208,
5365          0x0209,
5366          },
5367         {
5368          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5369          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5370          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5371          0x0207,
5372          0x0208,
5373          },
5374         {
5375          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5376          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5377          0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5378          0x0206,
5379          0x0207,
5380          },
5381         {
5382          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5383          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5384          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5385          0x0205,
5386          0x0206,
5387          },
5388         {
5389          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5390          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5391          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5392          0x0204,
5393          0x0205,
5394          },
5395         {
5396          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5397          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5398          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5399          0x0203,
5400          0x0204,
5401          },
5402         {
5403          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5404          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5405          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5406          0x0202,
5407          0x0203,
5408          },
5409         {
5410          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5411          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5412          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5413          0x0201,
5414          0x0202,
5415          },
5416         {
5417          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5418          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5419          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5420          0x0200,
5421          0x0201,
5422          },
5423         {
5424          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5425          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5426          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5427          0x01ff,
5428          0x0200,
5429          },
5430         {
5431          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5432          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5433          0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5434          0x01fe,
5435          0x01ff,
5436          },
5437         {
5438          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5439          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5440          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5441          0x01fc,
5442          0x01fd,
5443          },
5444         {
5445          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5446          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5447          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5448          0x01fb,
5449          0x01fc,
5450          },
5451         {
5452          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5453          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5454          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5455          0x01fa,
5456          0x01fb,
5457          },
5458         {
5459          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5460          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5461          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5462          0x01f9,
5463          0x01fa,
5464          },
5465         {
5466          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5467          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5468          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5469          0x01f8,
5470          0x01f9,
5471          },
5472         {
5473          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5474          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5475          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5476          0x01f7,
5477          0x01f8,
5478          },
5479         {
5480          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5481          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5482          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5483          0x01f6,
5484          0x01f7,
5485          },
5486         {
5487          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5488          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5489          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5490          0x01f5,
5491          0x01f6,
5492          },
5493         {
5494          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5495          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5496          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5497          0x01f4,
5498          0x01f5,
5499          },
5500         {
5501          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5502          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5503          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5504          0x01f3,
5505          0x01f4,
5506          },
5507         {
5508          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5509          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5510          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5511          0x01f2,
5512          0x01f3,
5513          },
5514         {
5515          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5516          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5517          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5518          0x01f1,
5519          0x01f2,
5520          },
5521         {
5522          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5523          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5524          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5525          0x01f0,
5526          0x01f1,
5527          },
5528         {
5529          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5530          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5531          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5532          0x01f0,
5533          0x01f0,
5534          },
5535         {
5536          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5537          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5538          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5539          0x01ef,
5540          0x01f0,
5541          },
5542         {
5543          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5544          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5545          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5546          0x01ee,
5547          0x01ef,
5548          },
5549         {
5550          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5551          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5552          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5553          0x01ed,
5554          0x01ee,
5555          },
5556         {
5557          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5558          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5559          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5560          0x01ec,
5561          0x01ed,
5562          },
5563         {
5564          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5565          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5566          0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5567          0x01eb,
5568          0x01ec,
5569          },
5570         {
5571          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5572          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5573          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5574          0x01ea,
5575          0x01eb,
5576          },
5577         {
5578          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5579          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5580          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5581          0x01e9,
5582          0x01ea,
5583          },
5584         {
5585          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5586          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5587          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5588          0x01e8,
5589          0x01e9,
5590          },
5591         {
5592          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5593          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5594          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5595          0x01e7,
5596          0x01e8,
5597          },
5598         {
5599          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5600          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5601          0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5602          0x01e6,
5603          0x01e7,
5604          },
5605         {
5606          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5607          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5608          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5609          0x01e5,
5610          0x01e6,
5611          },
5612         {
5613          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5614          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5615          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5616          0x01e5,
5617          0x01e5,
5618          },
5619         {
5620          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5621          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5622          0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5623          0x01e4,
5624          0x01e5,
5625          },
5626         {
5627          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5628          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5629          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5630          0x01e3,
5631          0x01e4,
5632          },
5633         {
5634          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5635          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5636          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5637          0x01e2,
5638          0x01e3,
5639          },
5640         {
5641          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5642          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5643          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5644          0x01e1,
5645          0x01e2,
5646          },
5647         {
5648          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5649          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5650          0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5651          0x01e0,
5652          0x01e1,
5653          },
5654         {
5655          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5656          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5657          0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5658          0x01df,
5659          0x01e0,
5660          },
5661         {
5662          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5663          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5664          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5665          0x01de,
5666          0x01df,
5667          },
5668         {
5669          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5670          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5671          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5672          0x01dd,
5673          0x01de,
5674          },
5675         {
5676          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5677          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5678          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5679          0x01dd,
5680          0x01dd,
5681          },
5682         {
5683          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5684          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5685          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5686          0x01dc,
5687          0x01dd,
5688          },
5689         {
5690          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5691          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5692          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5693          0x01db,
5694          0x01dc,
5695          },
5696         {
5697          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5698          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5699          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5700          0x01da,
5701          0x01db,
5702          },
5703         {
5704          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5705          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5706          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5707          0x01d9,
5708          0x01da,
5709          },
5710         {
5711          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5712          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5713          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5714          0x01d8,
5715          0x01d9,
5716          },
5717         {
5718          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5719          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5720          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5721          0x01d7,
5722          0x01d8,
5723          },
5724         {
5725          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5726          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5727          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5728          0x01d7,
5729          0x01d7,
5730          },
5731         {
5732          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5733          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5734          0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5735          0x01d6,
5736          0x01d7,
5737          },
5738         {
5739          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5740          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5741          0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5742          0x01d5,
5743          0x01d6,
5744          },
5745         {
5746          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5747          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5748          0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5749          0x01d4,
5750          0x01d5,
5751          },
5752         {
5753          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5754          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5755          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5756          0x01d3,
5757          0x01d4,
5758          },
5759         {
5760          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5761          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5762          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5763          0x01d2,
5764          0x01d3,
5765          },
5766         {
5767          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5768          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5769          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5770          0x01d2,
5771          0x01d2,
5772          },
5773         {
5774          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5775          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5776          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5777          0x01d1,
5778          0x01d2,
5779          },
5780         {
5781          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5782          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5783          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5784          0x01d0,
5785          0x01d1,
5786          },
5787         {
5788          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5789          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5790          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5791          0x01cf,
5792          0x01d0,
5793          },
5794         {
5795          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5796          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5797          0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5798          0x01ce,
5799          0x01cf,
5800          },
5801         {
5802          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5803          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5804          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5805          0x01ce,
5806          0x01ce,
5807          },
5808         {
5809          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5810          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5811          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5812          0x01cd,
5813          0x01ce,
5814          },
5815         {
5816          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5817          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5818          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5819          0x01cc,
5820          0x01cd,
5821          },
5822         {
5823          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5824          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5825          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5826          0x01cb,
5827          0x01cc,
5828          },
5829         {
5830          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5831          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5832          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5833          0x01ca,
5834          0x01cb,
5835          },
5836         {
5837          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5838          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5839          0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5840          0x01ca,
5841          0x01cb,
5842          },
5843         {
5844          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5845          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5846          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5847          0x01c9,
5848          0x01ca,
5849          },
5850         {
5851          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5852          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5853          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5854          0x01c9,
5855          0x01ca,
5856          },
5857         {
5858          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5859          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5860          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5861          0x01c9,
5862          0x01c9,
5863          },
5864         {
5865          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5866          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5867          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5868          0x01c8,
5869          0x01c9,
5870          },
5871         {
5872          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5873          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5874          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5875          0x01c8,
5876          0x01c9,
5877          },
5878         {
5879          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5880          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5881          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5882          0x01c8,
5883          0x01c8,
5884          },
5885         {
5886          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5887          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5888          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5889          0x01c7,
5890          0x01c8,
5891          },
5892         {
5893          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5894          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5895          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5896          0x01c7,
5897          0x01c8,
5898          },
5899         {
5900          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5901          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5902          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5903          0x01c6,
5904          0x01c7,
5905          },
5906         {
5907          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5908          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5909          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5910          0x01c6,
5911          0x01c7,
5912          },
5913         {
5914          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5915          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5916          0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5917          0x01c6,
5918          0x01c6,
5919          },
5920         {
5921          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5922          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5923          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5924          0x01c5,
5925          0x01c6,
5926          },
5927         {
5928          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5929          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5930          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5931          0x01c5,
5932          0x01c6,
5933          },
5934         {
5935          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5936          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5937          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5938          0x01c4,
5939          0x01c5,
5940          },
5941         {
5942          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5943          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5944          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5945          0x01c4,
5946          0x01c5,
5947          },
5948         {
5949          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5950          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5951          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5952          0x01c4,
5953          0x01c4,
5954          },
5955         {
5956          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5957          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5958          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5959          0x01c3,
5960          0x01c4,
5961          },
5962         {
5963          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5964          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5965          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
5966          0x01c3,
5967          0x01c4,
5968          },
5969         {
5970          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
5971          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5972          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
5973          0x01c2,
5974          0x01c3,
5975          },
5976         {
5977          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
5978          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5979          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
5980          0x01c2,
5981          0x01c3,
5982          },
5983         {
5984          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
5985          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5986          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
5987          0x01c2,
5988          0x01c2,
5989          },
5990         {
5991          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
5992          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5993          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
5994          0x01c1,
5995          0x01c2,
5996          },
5997         {
5998          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
5999          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6000          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6001          0x01c0,
6002          0x01c1,
6003          },
6004         {
6005          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6006          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6007          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6008          0x01bf,
6009          0x01c0,
6010          },
6011         {
6012          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6013          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6014          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6015          0x01bf,
6016          0x01bf,
6017          },
6018         {
6019          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6020          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6021          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6022          0x01be,
6023          0x01bf,
6024          },
6025         {
6026          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6027          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6028          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6029          0x01bd,
6030          0x01be,
6031          },
6032         {
6033          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6034          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6035          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6036          0x01bc,
6037          0x01bd,
6038          },
6039         {
6040          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6041          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6042          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6043          0x043f,
6044          0x0443,
6045          },
6046         {
6047          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6048          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6049          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6050          0x043d,
6051          0x0441,
6052          },
6053         {
6054          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6055          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6056          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6057          0x043a,
6058          0x043f,
6059          },
6060         {
6061          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6062          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6063          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6064          0x0438,
6065          0x043d,
6066          },
6067         {
6068          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6069          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6070          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6071          0x0436,
6072          0x043a,
6073          },
6074         {
6075          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6076          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6077          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6078          0x0434,
6079          0x0438,
6080          },
6081         {
6082          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6083          0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6084          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6085          0x0431,
6086          0x0436,
6087          },
6088         {
6089          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6090          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6091          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6092          0x042f,
6093          0x0434,
6094          },
6095         {
6096          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6097          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6098          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6099          0x042d,
6100          0x0431,
6101          },
6102         {
6103          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6104          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6105          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6106          0x042b,
6107          0x042f,
6108          },
6109         {
6110          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6111          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6112          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6113          0x0429,
6114          0x042d,
6115          },
6116         {
6117          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6118          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6119          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6120          0x0427,
6121          0x042b,
6122          },
6123         {
6124          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6125          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6126          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6127          0x0424,
6128          0x0429,
6129          },
6130         {
6131          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6132          0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6133          0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6134          0x041f,
6135          0x0424}
6136 };
6137
6138 static chan_info_nphy_radio2057_rev5_t chan_info_nphyrev8_2057_rev5[] = {
6139         {
6140          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6141          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6142          0x043a, 0x043f, 0x0443},
6143         {
6144          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6145          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6146          0x0438, 0x043d, 0x0441},
6147         {
6148          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6149          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6150          0x0436, 0x043a, 0x043f},
6151         {
6152          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6153          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6154          0x0434, 0x0438, 0x043d},
6155         {
6156          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6157          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6158          0x0431, 0x0436, 0x043a},
6159         {
6160          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6161          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6162          0x042f, 0x0434, 0x0438},
6163         {
6164          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6165          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6166          0x042d, 0x0431, 0x0436},
6167         {
6168          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6169          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6170          0x042b, 0x042f, 0x0434},
6171         {
6172          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6173          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6174          0x0429, 0x042d, 0x0431},
6175         {
6176          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6177          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6178          0x0427, 0x042b, 0x042f},
6179         {
6180          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6181          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6182          0x0424, 0x0429, 0x042d},
6183         {
6184          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6185          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6186          0x0422, 0x0427, 0x042b},
6187         {
6188          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6189          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6190          0x0420, 0x0424, 0x0429},
6191         {
6192          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6193          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6194          0x041b, 0x041f, 0x0424}
6195 };
6196
6197 static chan_info_nphy_radio2057_rev5_t chan_info_nphyrev9_2057_rev5v1[] = {
6198         {
6199          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6200          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6201          0x043a, 0x043f, 0x0443},
6202         {
6203          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6204          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6205          0x0438, 0x043d, 0x0441},
6206         {
6207          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6208          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6209          0x0436, 0x043a, 0x043f},
6210         {
6211          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6212          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6213          0x0434, 0x0438, 0x043d},
6214         {
6215          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6216          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6217          0x0431, 0x0436, 0x043a},
6218         {
6219          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6220          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6221          0x042f, 0x0434, 0x0438},
6222         {
6223          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6224          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6225          0x042d, 0x0431, 0x0436},
6226         {
6227          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6228          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6229          0x042b, 0x042f, 0x0434},
6230         {
6231          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6232          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6233          0x0429, 0x042d, 0x0431},
6234         {
6235          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6236          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6237          0x0427, 0x042b, 0x042f},
6238         {
6239          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6240          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6241          0x0424, 0x0429, 0x042d},
6242         {
6243          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6244          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6245          0x0422, 0x0427, 0x042b},
6246         {
6247          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6248          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6249          0x0420, 0x0424, 0x0429},
6250         {
6251          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6252          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6253          0x041b, 0x041f, 0x0424}
6254 };
6255
6256 static chan_info_nphy_radio2057_t chan_info_nphyrev8_2057_rev7[] = {
6257         {
6258          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6259          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6260          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6261          0x0215,
6262          0x0216},
6263         {
6264          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6265          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6266          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6267          0x0214,
6268          0x0215},
6269         {
6270          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6271          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6272          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6273          0x0213,
6274          0x0214},
6275         {
6276          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6277          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6278          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6279          0x0212,
6280          0x0213},
6281         {
6282          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6283          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6284          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6285          0x0211,
6286          0x0212},
6287         {
6288          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6289          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6290          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6291          0x020f,
6292          0x0211},
6293         {
6294          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6295          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6296          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6297          0x020e,
6298          0x020f},
6299         {
6300          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6301          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6302          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6303          0x020d,
6304          0x020e},
6305         {
6306          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6307          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6308          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6309          0x020c,
6310          0x020d},
6311         {
6312          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6313          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6314          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6315          0x020b,
6316          0x020c},
6317         {
6318          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6319          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6320          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6321          0x020a,
6322          0x020b},
6323         {
6324          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6325          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6326          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6327          0x0209,
6328          0x020a},
6329         {
6330          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6331          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6332          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6333          0x0208,
6334          0x0209},
6335         {
6336          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6337          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6338          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6339          0x0207,
6340          0x0208},
6341         {
6342          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6343          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6344          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6345          0x0206,
6346          0x0207},
6347         {
6348          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6349          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6350          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6351          0x0205,
6352          0x0206},
6353         {
6354          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6355          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6356          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6357          0x0204,
6358          0x0205},
6359         {
6360          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6361          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6362          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6363          0x0203,
6364          0x0204},
6365         {
6366          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6367          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6368          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6369          0x0202,
6370          0x0203},
6371         {
6372          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6373          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6374          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6375          0x0201,
6376          0x0202},
6377         {
6378          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6379          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6380          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6381          0x0200,
6382          0x0201},
6383         {
6384          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6385          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6386          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6387          0x01ff,
6388          0x0200},
6389         {
6390          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6391          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6392          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6393          0x01fe,
6394          0x01ff},
6395         {
6396          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6397          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6398          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6399          0x01fc,
6400          0x01fd},
6401         {
6402          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6403          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6404          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6405          0x01fb,
6406          0x01fc},
6407         {
6408          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6409          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6410          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6411          0x01fa,
6412          0x01fb},
6413         {
6414          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6415          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6416          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6417          0x01f9,
6418          0x01fa},
6419         {
6420          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6421          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6422          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6423          0x01f8,
6424          0x01f9},
6425         {
6426          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6427          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6428          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6429          0x01f7,
6430          0x01f8},
6431         {
6432          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6433          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6434          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6435          0x01f6,
6436          0x01f7},
6437         {
6438          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6439          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6440          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6441          0x01f5,
6442          0x01f6},
6443         {
6444          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6445          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6446          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6447          0x01f4,
6448          0x01f5},
6449         {
6450          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6451          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6452          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6453          0x01f3,
6454          0x01f4},
6455         {
6456          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6457          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6458          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6459          0x01f2,
6460          0x01f3},
6461         {
6462          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6463          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6464          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6465          0x01f1,
6466          0x01f2},
6467         {
6468          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6469          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6470          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6471          0x01f0,
6472          0x01f1},
6473         {
6474          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6475          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6476          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6477          0x01f0,
6478          0x01f0},
6479         {
6480          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6481          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6482          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6483          0x01ef,
6484          0x01f0},
6485         {
6486          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6487          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6488          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6489          0x01ee,
6490          0x01ef},
6491         {
6492          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6493          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6494          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6495          0x01ed,
6496          0x01ee},
6497         {
6498          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6499          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6500          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6501          0x01ec,
6502          0x01ed},
6503         {
6504          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6505          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6506          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6507          0x01eb,
6508          0x01ec},
6509         {
6510          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6511          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6512          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6513          0x01ea,
6514          0x01eb},
6515         {
6516          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6517          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6518          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6519          0x01e9,
6520          0x01ea},
6521         {
6522          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6523          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6524          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6525          0x01e8,
6526          0x01e9},
6527         {
6528          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6529          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6530          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6531          0x01e7,
6532          0x01e8},
6533         {
6534          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6535          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6536          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6537          0x01e6,
6538          0x01e7},
6539         {
6540          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6541          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6542          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6543          0x01e5,
6544          0x01e6},
6545         {
6546          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6547          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6548          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6549          0x01e5,
6550          0x01e5},
6551         {
6552          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6553          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6554          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6555          0x01e4,
6556          0x01e5},
6557         {
6558          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6559          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6560          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6561          0x01e3,
6562          0x01e4},
6563         {
6564          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6565          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6566          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6567          0x01e2,
6568          0x01e3},
6569         {
6570          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6571          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6572          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6573          0x01e1,
6574          0x01e2},
6575         {
6576          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6577          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6578          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6579          0x01e0,
6580          0x01e1},
6581         {
6582          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6583          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6584          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6585          0x01df,
6586          0x01e0},
6587         {
6588          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6589          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6590          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6591          0x01de,
6592          0x01df},
6593         {
6594          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6595          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6596          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6597          0x01dd,
6598          0x01de},
6599         {
6600          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6601          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6602          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6603          0x01dd,
6604          0x01dd},
6605         {
6606          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6607          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6608          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6609          0x01dc,
6610          0x01dd},
6611         {
6612          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6613          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6614          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6615          0x01db,
6616          0x01dc},
6617         {
6618          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6619          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6620          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6621          0x01da,
6622          0x01db},
6623         {
6624          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6625          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6626          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6627          0x01d9,
6628          0x01da},
6629         {
6630          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6631          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6632          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6633          0x01d8,
6634          0x01d9},
6635         {
6636          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6637          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6638          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6639          0x01d7,
6640          0x01d8},
6641         {
6642          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6643          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6644          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6645          0x01d7,
6646          0x01d7},
6647         {
6648          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6649          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6650          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6651          0x01d6,
6652          0x01d7},
6653         {
6654          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6655          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6656          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6657          0x01d5,
6658          0x01d6},
6659         {
6660          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6661          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6662          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6663          0x01d4,
6664          0x01d5},
6665         {
6666          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6667          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6668          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6669          0x01d3,
6670          0x01d4},
6671         {
6672          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6673          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6674          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6675          0x01d2,
6676          0x01d3},
6677         {
6678          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6679          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6680          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6681          0x01d2,
6682          0x01d2},
6683         {
6684          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6685          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6686          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6687          0x01d1,
6688          0x01d2},
6689         {
6690          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6691          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6692          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6693          0x01d0,
6694          0x01d1},
6695         {
6696          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6697          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6698          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6699          0x01cf,
6700          0x01d0},
6701         {
6702          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6703          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6704          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6705          0x01ce,
6706          0x01cf},
6707         {
6708          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6709          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6710          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6711          0x01ce,
6712          0x01ce},
6713         {
6714          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6715          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6716          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6717          0x01cd,
6718          0x01ce},
6719         {
6720          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6721          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6722          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6723          0x01cc,
6724          0x01cd},
6725         {
6726          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6727          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6728          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6729          0x01cb,
6730          0x01cc},
6731         {
6732          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6733          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6734          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6735          0x01ca,
6736          0x01cb},
6737         {
6738          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6739          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6740          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6741          0x01ca,
6742          0x01cb},
6743         {
6744          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6745          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6746          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6747          0x01c9,
6748          0x01ca},
6749         {
6750          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6751          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6752          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6753          0x01c9,
6754          0x01ca},
6755         {
6756          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6757          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6758          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6759          0x01c9,
6760          0x01c9},
6761         {
6762          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6763          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6764          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6765          0x01c8,
6766          0x01c9},
6767         {
6768          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6769          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6770          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6771          0x01c8,
6772          0x01c9},
6773         {
6774          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6775          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6776          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6777          0x01c8,
6778          0x01c8},
6779         {
6780          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6781          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6782          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6783          0x01c7,
6784          0x01c8},
6785         {
6786          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6787          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6788          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6789          0x01c7,
6790          0x01c8},
6791         {
6792          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6793          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6794          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6795          0x01c6,
6796          0x01c7},
6797         {
6798          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6799          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6800          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6801          0x01c6,
6802          0x01c7},
6803         {
6804          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6805          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6806          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6807          0x01c6,
6808          0x01c6},
6809         {
6810          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6811          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6812          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6813          0x01c5,
6814          0x01c6},
6815         {
6816          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6817          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6818          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6819          0x01c5,
6820          0x01c6},
6821         {
6822          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6823          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6824          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6825          0x01c4,
6826          0x01c5},
6827         {
6828          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6829          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6830          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6831          0x01c4,
6832          0x01c5},
6833         {
6834          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6835          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6836          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6837          0x01c4,
6838          0x01c4},
6839         {
6840          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6841          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6842          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6843          0x01c3,
6844          0x01c4},
6845         {
6846          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6847          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6848          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6849          0x01c3,
6850          0x01c4},
6851         {
6852          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6853          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6854          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6855          0x01c2,
6856          0x01c3},
6857         {
6858          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6859          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6860          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6861          0x01c2,
6862          0x01c3},
6863         {
6864          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6865          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6866          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6867          0x01c2,
6868          0x01c2},
6869         {
6870          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6871          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6872          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6873          0x01c1,
6874          0x01c2},
6875         {
6876          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6877          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6878          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6879          0x01c0,
6880          0x01c1},
6881         {
6882          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6883          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6884          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6885          0x01bf,
6886          0x01c0},
6887         {
6888          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6889          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6890          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6891          0x01bf,
6892          0x01bf},
6893         {
6894          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6895          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6896          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6897          0x01be,
6898          0x01bf},
6899         {
6900          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6901          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6902          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6903          0x01bd,
6904          0x01be},
6905         {
6906          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6907          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6908          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6909          0x01bc,
6910          0x01bd},
6911         {
6912          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6913          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6914          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6915          0x043f,
6916          0x0443},
6917         {
6918          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6919          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6920          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6921          0x043d,
6922          0x0441},
6923         {
6924          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6925          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6926          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6927          0x043a,
6928          0x043f},
6929         {
6930          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6931          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6932          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6933          0x0438,
6934          0x043d},
6935         {
6936          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6937          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6938          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6939          0x0436,
6940          0x043a},
6941         {
6942          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6943          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6944          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6945          0x0434,
6946          0x0438},
6947         {
6948          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6949          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6950          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6951          0x0431,
6952          0x0436},
6953         {
6954          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6955          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6956          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6957          0x042f,
6958          0x0434},
6959         {
6960          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6961          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6962          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6963          0x042d,
6964          0x0431},
6965         {
6966          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6967          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6968          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6969          0x042b,
6970          0x042f},
6971         {
6972          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6973          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6974          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6975          0x0429,
6976          0x042d},
6977         {
6978          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6979          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6980          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6981          0x0427,
6982          0x042b},
6983         {
6984          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6985          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6986          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6987          0x0424,
6988          0x0429},
6989         {
6990          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6991          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
6992          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6993          0x041f,
6994          0x0424}
6995 };
6996
6997 static chan_info_nphy_radio2057_t chan_info_nphyrev8_2057_rev8[] = {
6998         {
6999          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7000          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7001          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7002          0x0214,
7003          0x0215},
7004         {
7005          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7006          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7007          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7008          0x0213,
7009          0x0214},
7010         {
7011          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7012          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7013          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7014          0x0212,
7015          0x0213},
7016         {
7017          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7018          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7019          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7020          0x0211,
7021          0x0212},
7022         {
7023          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7024          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7025          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7026          0x020f,
7027          0x0211},
7028         {
7029          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7030          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7031          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7032          0x020e,
7033          0x020f},
7034         {
7035          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7036          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7037          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7038          0x020d,
7039          0x020e},
7040         {
7041          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7042          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7043          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7044          0x020c,
7045          0x020d},
7046         {
7047          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7048          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7049          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7050          0x020b,
7051          0x020c},
7052         {
7053          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7054          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7055          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7056          0x020a,
7057          0x020b},
7058         {
7059          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7060          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7061          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7062          0x0209,
7063          0x020a},
7064         {
7065          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7066          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7067          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7068          0x0208,
7069          0x0209},
7070         {
7071          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7072          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7073          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7074          0x0207,
7075          0x0208},
7076         {
7077          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7078          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7079          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7080          0x0206,
7081          0x0207},
7082         {
7083          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7084          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7085          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7086          0x0205,
7087          0x0206},
7088         {
7089          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7090          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7091          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7092          0x0204,
7093          0x0205},
7094         {
7095          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7096          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7097          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7098          0x0203,
7099          0x0204},
7100         {
7101          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7102          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7103          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7104          0x0202,
7105          0x0203},
7106         {
7107          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7108          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7109          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7110          0x0201,
7111          0x0202},
7112         {
7113          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7114          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7115          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7116          0x0200,
7117          0x0201},
7118         {
7119          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7120          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7121          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7122          0x01ff,
7123          0x0200},
7124         {
7125          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7126          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7127          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7128          0x01fe,
7129          0x01ff},
7130         {
7131          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7132          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7133          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7134          0x01fc,
7135          0x01fd},
7136         {
7137          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7138          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7139          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7140          0x01fb,
7141          0x01fc},
7142         {
7143          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7144          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7145          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7146          0x01fa,
7147          0x01fb},
7148         {
7149          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7150          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7151          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7152          0x01f9,
7153          0x01fa},
7154         {
7155          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7156          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7157          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7158          0x01f8,
7159          0x01f9},
7160         {
7161          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7162          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7163          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7164          0x01f7,
7165          0x01f8},
7166         {
7167          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7168          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7169          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7170          0x01f6,
7171          0x01f7},
7172         {
7173          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7174          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7175          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7176          0x01f5,
7177          0x01f6},
7178         {
7179          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7180          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7181          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7182          0x01f4,
7183          0x01f5},
7184         {
7185          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7186          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7187          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7188          0x01f3,
7189          0x01f4},
7190         {
7191          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7192          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7193          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7194          0x01f2,
7195          0x01f3},
7196         {
7197          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7198          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7199          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7200          0x01f1,
7201          0x01f2},
7202         {
7203          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7204          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7205          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7206          0x01f0,
7207          0x01f1},
7208         {
7209          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7210          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7211          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7212          0x01f0,
7213          0x01f0},
7214         {
7215          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7216          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7217          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7218          0x01ef,
7219          0x01f0},
7220         {
7221          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7222          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7223          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7224          0x01ee,
7225          0x01ef},
7226         {
7227          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7228          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7229          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7230          0x01ed,
7231          0x01ee},
7232         {
7233          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7234          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7235          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7236          0x01ec,
7237          0x01ed},
7238         {
7239          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7240          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7241          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7242          0x01eb,
7243          0x01ec},
7244         {
7245          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7246          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7247          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7248          0x01ea,
7249          0x01eb},
7250         {
7251          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7252          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7253          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7254          0x01e9,
7255          0x01ea},
7256         {
7257          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7258          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7259          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7260          0x01e8,
7261          0x01e9},
7262         {
7263          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7264          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7265          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7266          0x01e7,
7267          0x01e8},
7268         {
7269          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7270          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7271          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7272          0x01e6,
7273          0x01e7},
7274         {
7275          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7276          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7277          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7278          0x01e5,
7279          0x01e6},
7280         {
7281          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7282          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7283          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7284          0x01e5,
7285          0x01e5},
7286         {
7287          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7288          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7289          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7290          0x01e4,
7291          0x01e5},
7292         {
7293          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7294          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7295          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7296          0x01e3,
7297          0x01e4},
7298         {
7299          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7300          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7301          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7302          0x01e2,
7303          0x01e3},
7304         {
7305          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7306          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7307          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7308          0x01e1,
7309          0x01e2},
7310         {
7311          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7312          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7313          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7314          0x01e0,
7315          0x01e1},
7316         {
7317          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7318          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7319          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7320          0x01df,
7321          0x01e0},
7322         {
7323          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7324          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7325          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7326          0x01de,
7327          0x01df},
7328         {
7329          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7330          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7331          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7332          0x01dd,
7333          0x01de},
7334         {
7335          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7336          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7337          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7338          0x01dd,
7339          0x01dd},
7340         {
7341          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7342          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7343          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7344          0x01dc,
7345          0x01dd},
7346         {
7347          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7348          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7349          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7350          0x01db,
7351          0x01dc},
7352         {
7353          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7354          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7355          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7356          0x01da,
7357          0x01db},
7358         {
7359          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7360          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7361          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7362          0x01d9,
7363          0x01da},
7364         {
7365          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7366          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7367          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7368          0x01d8,
7369          0x01d9},
7370         {
7371          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7372          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7373          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7374          0x01d7,
7375          0x01d8},
7376         {
7377          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7378          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7379          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7380          0x01d7,
7381          0x01d7},
7382         {
7383          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7384          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7385          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7386          0x01d6,
7387          0x01d7},
7388         {
7389          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7390          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7391          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7392          0x01d5,
7393          0x01d6},
7394         {
7395          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7396          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7397          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7398          0x01d4,
7399          0x01d5},
7400         {
7401          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7402          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7403          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7404          0x01d3,
7405          0x01d4},
7406         {
7407          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7408          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7409          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7410          0x01d2,
7411          0x01d3},
7412         {
7413          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7414          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7415          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7416          0x01d2,
7417          0x01d2},
7418         {
7419          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7420          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7421          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7422          0x01d1,
7423          0x01d2},
7424         {
7425          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7426          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7427          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7428          0x01d0,
7429          0x01d1},
7430         {
7431          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7432          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7433          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7434          0x01cf,
7435          0x01d0},
7436         {
7437          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7438          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7439          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7440          0x01ce,
7441          0x01cf},
7442         {
7443          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7444          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7445          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7446          0x01ce,
7447          0x01ce},
7448         {
7449          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7450          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7451          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7452          0x01cd,
7453          0x01ce},
7454         {
7455          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7456          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7457          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7458          0x01cc,
7459          0x01cd},
7460         {
7461          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7462          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7463          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7464          0x01cb,
7465          0x01cc},
7466         {
7467          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7468          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7469          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7470          0x01ca,
7471          0x01cb},
7472         {
7473          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7474          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7475          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7476          0x01ca,
7477          0x01cb},
7478         {
7479          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7480          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7481          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7482          0x01c9,
7483          0x01ca},
7484         {
7485          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7486          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7487          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7488          0x01c9,
7489          0x01ca},
7490         {
7491          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7492          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7493          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7494          0x01c9,
7495          0x01c9},
7496         {
7497          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7498          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7499          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7500          0x01c8,
7501          0x01c9},
7502         {
7503          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7504          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7505          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7506          0x01c8,
7507          0x01c9},
7508         {
7509          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7510          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7511          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7512          0x01c8,
7513          0x01c8},
7514         {
7515          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7516          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7517          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7518          0x01c7,
7519          0x01c8},
7520         {
7521          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7522          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7523          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7524          0x01c7,
7525          0x01c8},
7526         {
7527          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7528          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7529          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7530          0x01c6,
7531          0x01c7},
7532         {
7533          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7534          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7535          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7536          0x01c6,
7537          0x01c7},
7538         {
7539          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7540          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7541          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7542          0x01c6,
7543          0x01c6},
7544         {
7545          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7546          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7547          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7548          0x01c5,
7549          0x01c6},
7550         {
7551          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7552          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7553          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7554          0x01c5,
7555          0x01c6},
7556         {
7557          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7558          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7559          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7560          0x01c4,
7561          0x01c5},
7562         {
7563          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7564          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7565          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7566          0x01c4,
7567          0x01c5},
7568         {
7569          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7570          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7571          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7572          0x01c4,
7573          0x01c4},
7574         {
7575          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7576          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7577          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7578          0x01c3,
7579          0x01c4},
7580         {
7581          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7582          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7583          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7584          0x01c3,
7585          0x01c4},
7586         {
7587          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7588          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7589          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7590          0x01c2,
7591          0x01c3},
7592         {
7593          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7594          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7595          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7596          0x01c2,
7597          0x01c3},
7598         {
7599          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7600          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7601          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7602          0x01c2,
7603          0x01c2},
7604         {
7605          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7606          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7607          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7608          0x01c1,
7609          0x01c2},
7610         {
7611          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7612          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7613          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7614          0x01c0,
7615          0x01c1},
7616         {
7617          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7618          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7619          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7620          0x01bf,
7621          0x01c0},
7622         {
7623          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7624          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7625          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7626          0x01bf,
7627          0x01bf},
7628         {
7629          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7630          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7631          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7632          0x01be,
7633          0x01bf},
7634         {
7635          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7636          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7637          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7638          0x01bd,
7639          0x01be},
7640         {
7641          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7642          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7643          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7644          0x01bc,
7645          0x01bd},
7646         {
7647          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7648          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7649          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7650          0x043f,
7651          0x0443},
7652         {
7653          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7654          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7655          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7656          0x043d,
7657          0x0441},
7658         {
7659          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7660          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7661          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7662          0x043a,
7663          0x043f},
7664         {
7665          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7666          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7667          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7668          0x0438,
7669          0x043d},
7670         {
7671          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7672          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7673          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7674          0x0436,
7675          0x043a},
7676         {
7677          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7678          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7679          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7680          0x0434,
7681          0x0438},
7682         {
7683          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7684          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7685          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7686          0x0431,
7687          0x0436},
7688         {
7689          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7690          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7691          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7692          0x042f,
7693          0x0434},
7694         {
7695          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7696          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7697          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7698          0x042d,
7699          0x0431},
7700         {
7701          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7702          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7703          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7704          0x042b,
7705          0x042f},
7706         {
7707          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7708          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7709          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7710          0x0429,
7711          0x042d},
7712         {
7713          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7714          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7715          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7716          0x0427,
7717          0x042b},
7718         {
7719          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7720          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7721          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7722          0x0424,
7723          0x0429},
7724         {
7725          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7726          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7727          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7728          0x041f,
7729          0x0424}
7730 };
7731
7732 radio_regs_t regs_2055[] = {
7733         {0x02, 0x80, 0x80, 0, 0},
7734         {0x03, 0, 0, 0, 0},
7735         {0x04, 0x27, 0x27, 0, 0},
7736         {0x05, 0, 0, 0, 0},
7737         {0x06, 0x27, 0x27, 0, 0},
7738         {0x07, 0x7f, 0x7f, 1, 1},
7739         {0x08, 0x7, 0x7, 1, 1},
7740         {0x09, 0x7f, 0x7f, 1, 1},
7741         {0x0A, 0x7, 0x7, 1, 1},
7742         {0x0B, 0x15, 0x15, 0, 0},
7743         {0x0C, 0x15, 0x15, 0, 0},
7744         {0x0D, 0x4f, 0x4f, 1, 1},
7745         {0x0E, 0x5, 0x5, 1, 1},
7746         {0x0F, 0x4f, 0x4f, 1, 1},
7747         {0x10, 0x5, 0x5, 1, 1},
7748         {0x11, 0xd0, 0xd0, 0, 0},
7749         {0x12, 0x2, 0x2, 0, 0},
7750         {0x13, 0, 0, 0, 0},
7751         {0x14, 0x40, 0x40, 0, 0},
7752         {0x15, 0, 0, 0, 0},
7753         {0x16, 0, 0, 0, 0},
7754         {0x17, 0, 0, 0, 0},
7755         {0x18, 0, 0, 0, 0},
7756         {0x19, 0, 0, 0, 0},
7757         {0x1A, 0, 0, 0, 0},
7758         {0x1B, 0, 0, 0, 0},
7759         {0x1C, 0, 0, 0, 0},
7760         {0x1D, 0xc0, 0xc0, 0, 0},
7761         {0x1E, 0xff, 0xff, 0, 0},
7762         {0x1F, 0xc0, 0xc0, 0, 0},
7763         {0x20, 0xff, 0xff, 0, 0},
7764         {0x21, 0xc0, 0xc0, 0, 0},
7765         {0x22, 0, 0, 0, 0},
7766         {0x23, 0x2c, 0x2c, 0, 0},
7767         {0x24, 0, 0, 0, 0},
7768         {0x25, 0, 0, 0, 0},
7769         {0x26, 0, 0, 0, 0},
7770         {0x27, 0, 0, 0, 0},
7771         {0x28, 0, 0, 0, 0},
7772         {0x29, 0, 0, 0, 0},
7773         {0x2A, 0, 0, 0, 0},
7774         {0x2B, 0, 0, 0, 0},
7775         {0x2C, 0, 0, 0, 0},
7776         {0x2D, 0xa4, 0xa4, 0, 0},
7777         {0x2E, 0x38, 0x38, 0, 0},
7778         {0x2F, 0, 0, 0, 0},
7779         {0x30, 0x4, 0x4, 1, 1},
7780         {0x31, 0, 0, 0, 0},
7781         {0x32, 0xa, 0xa, 0, 0},
7782         {0x33, 0x87, 0x87, 0, 0},
7783         {0x34, 0x9, 0x9, 0, 0},
7784         {0x35, 0x70, 0x70, 0, 0},
7785         {0x36, 0x11, 0x11, 0, 0},
7786         {0x37, 0x18, 0x18, 1, 1},
7787         {0x38, 0x6, 0x6, 0, 0},
7788         {0x39, 0x4, 0x4, 1, 1},
7789         {0x3A, 0x6, 0x6, 0, 0},
7790         {0x3B, 0x9e, 0x9e, 0, 0},
7791         {0x3C, 0x9, 0x9, 0, 0},
7792         {0x3D, 0xc8, 0xc8, 1, 1},
7793         {0x3E, 0x88, 0x88, 0, 0},
7794         {0x3F, 0, 0, 0, 0},
7795         {0x40, 0, 0, 0, 0},
7796         {0x41, 0, 0, 0, 0},
7797         {0x42, 0x1, 0x1, 0, 0},
7798         {0x43, 0x2, 0x2, 0, 0},
7799         {0x44, 0x96, 0x96, 0, 0},
7800         {0x45, 0x3e, 0x3e, 0, 0},
7801         {0x46, 0x3e, 0x3e, 0, 0},
7802         {0x47, 0x13, 0x13, 0, 0},
7803         {0x48, 0x2, 0x2, 0, 0},
7804         {0x49, 0x15, 0x15, 0, 0},
7805         {0x4A, 0x7, 0x7, 0, 0},
7806         {0x4B, 0, 0, 0, 0},
7807         {0x4C, 0, 0, 0, 0},
7808         {0x4D, 0, 0, 0, 0},
7809         {0x4E, 0, 0, 0, 0},
7810         {0x4F, 0, 0, 0, 0},
7811         {0x50, 0x8, 0x8, 0, 0},
7812         {0x51, 0x8, 0x8, 0, 0},
7813         {0x52, 0x6, 0x6, 0, 0},
7814         {0x53, 0x84, 0x84, 1, 1},
7815         {0x54, 0xc3, 0xc3, 0, 0},
7816         {0x55, 0x8f, 0x8f, 0, 0},
7817         {0x56, 0xff, 0xff, 0, 0},
7818         {0x57, 0xff, 0xff, 0, 0},
7819         {0x58, 0x88, 0x88, 0, 0},
7820         {0x59, 0x88, 0x88, 0, 0},
7821         {0x5A, 0, 0, 0, 0},
7822         {0x5B, 0xcc, 0xcc, 0, 0},
7823         {0x5C, 0x6, 0x6, 0, 0},
7824         {0x5D, 0x80, 0x80, 0, 0},
7825         {0x5E, 0x80, 0x80, 0, 0},
7826         {0x5F, 0xf8, 0xf8, 0, 0},
7827         {0x60, 0x88, 0x88, 0, 0},
7828         {0x61, 0x88, 0x88, 0, 0},
7829         {0x62, 0x88, 0x8, 1, 1},
7830         {0x63, 0x88, 0x88, 0, 0},
7831         {0x64, 0, 0, 0, 0},
7832         {0x65, 0x1, 0x1, 1, 1},
7833         {0x66, 0x8a, 0x8a, 0, 0},
7834         {0x67, 0x8, 0x8, 0, 0},
7835         {0x68, 0x83, 0x83, 0, 0},
7836         {0x69, 0x6, 0x6, 0, 0},
7837         {0x6A, 0xa0, 0xa0, 0, 0},
7838         {0x6B, 0xa, 0xa, 0, 0},
7839         {0x6C, 0x87, 0x87, 1, 1},
7840         {0x6D, 0x2a, 0x2a, 0, 0},
7841         {0x6E, 0x2a, 0x2a, 0, 0},
7842         {0x6F, 0x2a, 0x2a, 0, 0},
7843         {0x70, 0x2a, 0x2a, 0, 0},
7844         {0x71, 0x18, 0x18, 0, 0},
7845         {0x72, 0x6a, 0x6a, 1, 1},
7846         {0x73, 0xab, 0xab, 1, 1},
7847         {0x74, 0x13, 0x13, 1, 1},
7848         {0x75, 0xc1, 0xc1, 1, 1},
7849         {0x76, 0xaa, 0xaa, 1, 1},
7850         {0x77, 0x87, 0x87, 1, 1},
7851         {0x78, 0, 0, 0, 0},
7852         {0x79, 0x6, 0x6, 0, 0},
7853         {0x7A, 0x7, 0x7, 0, 0},
7854         {0x7B, 0x7, 0x7, 0, 0},
7855         {0x7C, 0x15, 0x15, 0, 0},
7856         {0x7D, 0x55, 0x55, 0, 0},
7857         {0x7E, 0x97, 0x97, 1, 1},
7858         {0x7F, 0x8, 0x8, 0, 0},
7859         {0x80, 0x14, 0x14, 1, 1},
7860         {0x81, 0x33, 0x33, 0, 0},
7861         {0x82, 0x88, 0x88, 0, 0},
7862         {0x83, 0x6, 0x6, 0, 0},
7863         {0x84, 0x3, 0x3, 1, 1},
7864         {0x85, 0xa, 0xa, 0, 0},
7865         {0x86, 0x3, 0x3, 1, 1},
7866         {0x87, 0x2a, 0x2a, 0, 0},
7867         {0x88, 0xa4, 0xa4, 0, 0},
7868         {0x89, 0x18, 0x18, 0, 0},
7869         {0x8A, 0x28, 0x28, 0, 0},
7870         {0x8B, 0, 0, 0, 0},
7871         {0x8C, 0x4a, 0x4a, 0, 0},
7872         {0x8D, 0, 0, 0, 0},
7873         {0x8E, 0xf8, 0xf8, 0, 0},
7874         {0x8F, 0x88, 0x88, 0, 0},
7875         {0x90, 0x88, 0x88, 0, 0},
7876         {0x91, 0x88, 0x8, 1, 1},
7877         {0x92, 0x88, 0x88, 0, 0},
7878         {0x93, 0, 0, 0, 0},
7879         {0x94, 0x1, 0x1, 1, 1},
7880         {0x95, 0x8a, 0x8a, 0, 0},
7881         {0x96, 0x8, 0x8, 0, 0},
7882         {0x97, 0x83, 0x83, 0, 0},
7883         {0x98, 0x6, 0x6, 0, 0},
7884         {0x99, 0xa0, 0xa0, 0, 0},
7885         {0x9A, 0xa, 0xa, 0, 0},
7886         {0x9B, 0x87, 0x87, 1, 1},
7887         {0x9C, 0x2a, 0x2a, 0, 0},
7888         {0x9D, 0x2a, 0x2a, 0, 0},
7889         {0x9E, 0x2a, 0x2a, 0, 0},
7890         {0x9F, 0x2a, 0x2a, 0, 0},
7891         {0xA0, 0x18, 0x18, 0, 0},
7892         {0xA1, 0x6a, 0x6a, 1, 1},
7893         {0xA2, 0xab, 0xab, 1, 1},
7894         {0xA3, 0x13, 0x13, 1, 1},
7895         {0xA4, 0xc1, 0xc1, 1, 1},
7896         {0xA5, 0xaa, 0xaa, 1, 1},
7897         {0xA6, 0x87, 0x87, 1, 1},
7898         {0xA7, 0, 0, 0, 0},
7899         {0xA8, 0x6, 0x6, 0, 0},
7900         {0xA9, 0x7, 0x7, 0, 0},
7901         {0xAA, 0x7, 0x7, 0, 0},
7902         {0xAB, 0x15, 0x15, 0, 0},
7903         {0xAC, 0x55, 0x55, 0, 0},
7904         {0xAD, 0x97, 0x97, 1, 1},
7905         {0xAE, 0x8, 0x8, 0, 0},
7906         {0xAF, 0x14, 0x14, 1, 1},
7907         {0xB0, 0x33, 0x33, 0, 0},
7908         {0xB1, 0x88, 0x88, 0, 0},
7909         {0xB2, 0x6, 0x6, 0, 0},
7910         {0xB3, 0x3, 0x3, 1, 1},
7911         {0xB4, 0xa, 0xa, 0, 0},
7912         {0xB5, 0x3, 0x3, 1, 1},
7913         {0xB6, 0x2a, 0x2a, 0, 0},
7914         {0xB7, 0xa4, 0xa4, 0, 0},
7915         {0xB8, 0x18, 0x18, 0, 0},
7916         {0xB9, 0x28, 0x28, 0, 0},
7917         {0xBA, 0, 0, 0, 0},
7918         {0xBB, 0x4a, 0x4a, 0, 0},
7919         {0xBC, 0, 0, 0, 0},
7920         {0xBD, 0x71, 0x71, 0, 0},
7921         {0xBE, 0x72, 0x72, 0, 0},
7922         {0xBF, 0x73, 0x73, 0, 0},
7923         {0xC0, 0x74, 0x74, 0, 0},
7924         {0xC1, 0x75, 0x75, 0, 0},
7925         {0xC2, 0x76, 0x76, 0, 0},
7926         {0xC3, 0x77, 0x77, 0, 0},
7927         {0xC4, 0x78, 0x78, 0, 0},
7928         {0xC5, 0x79, 0x79, 0, 0},
7929         {0xC6, 0x7a, 0x7a, 0, 0},
7930         {0xC7, 0, 0, 0, 0},
7931         {0xC8, 0, 0, 0, 0},
7932         {0xC9, 0, 0, 0, 0},
7933         {0xCA, 0, 0, 0, 0},
7934         {0xCB, 0, 0, 0, 0},
7935         {0xCC, 0, 0, 0, 0},
7936         {0xCD, 0, 0, 0, 0},
7937         {0xCE, 0x6, 0x6, 0, 0},
7938         {0xCF, 0, 0, 0, 0},
7939         {0xD0, 0, 0, 0, 0},
7940         {0xD1, 0x18, 0x18, 0, 0},
7941         {0xD2, 0x88, 0x88, 0, 0},
7942         {0xD3, 0, 0, 0, 0},
7943         {0xD4, 0, 0, 0, 0},
7944         {0xD5, 0, 0, 0, 0},
7945         {0xD6, 0, 0, 0, 0},
7946         {0xD7, 0, 0, 0, 0},
7947         {0xD8, 0, 0, 0, 0},
7948         {0xD9, 0, 0, 0, 0},
7949         {0xDA, 0x6, 0x6, 0, 0},
7950         {0xDB, 0, 0, 0, 0},
7951         {0xDC, 0, 0, 0, 0},
7952         {0xDD, 0x18, 0x18, 0, 0},
7953         {0xDE, 0x88, 0x88, 0, 0},
7954         {0xDF, 0, 0, 0, 0},
7955         {0xE0, 0, 0, 0, 0},
7956         {0xE1, 0, 0, 0, 0},
7957         {0xE2, 0, 0, 0, 0},
7958         {0xFFFF, 0, 0, 0, 0},
7959 };
7960
7961 radio_regs_t regs_SYN_2056[] = {
7962         {0x02, 0, 0, 0, 0},
7963         {0x03, 0, 0, 0, 0},
7964         {0x04, 0, 0, 0, 0},
7965         {0x05, 0, 0, 0, 0},
7966         {0x06, 0, 0, 0, 0},
7967         {0x07, 0, 0, 0, 0},
7968         {0x08, 0, 0, 0, 0},
7969         {0x09, 0x1, 0x1, 0, 0},
7970         {0x0A, 0, 0, 0, 0},
7971         {0x0B, 0, 0, 0, 0},
7972         {0x0C, 0, 0, 0, 0},
7973         {0x0D, 0, 0, 0, 0},
7974         {0x0E, 0, 0, 0, 0},
7975         {0x0F, 0, 0, 0, 0},
7976         {0x10, 0, 0, 0, 0},
7977         {0x11, 0, 0, 0, 0},
7978         {0x12, 0, 0, 0, 0},
7979         {0x13, 0, 0, 0, 0},
7980         {0x14, 0, 0, 0, 0},
7981         {0x15, 0, 0, 0, 0},
7982         {0x16, 0, 0, 0, 0},
7983         {0x17, 0, 0, 0, 0},
7984         {0x18, 0, 0, 0, 0},
7985         {0x19, 0, 0, 0, 0},
7986         {0x1A, 0, 0, 0, 0},
7987         {0x1B, 0, 0, 0, 0},
7988         {0x1C, 0, 0, 0, 0},
7989         {0x1D, 0, 0, 0, 0},
7990         {0x1E, 0, 0, 0, 0},
7991         {0x1F, 0, 0, 0, 0},
7992         {0x20, 0, 0, 0, 0},
7993         {0x21, 0, 0, 0, 0},
7994         {0x22, 0x60, 0x60, 0, 0},
7995         {0x23, 0x6, 0x6, 0, 0},
7996         {0x24, 0xc, 0xc, 0, 0},
7997         {0x25, 0, 0, 0, 0},
7998         {0x26, 0, 0, 0, 0},
7999         {0x27, 0, 0, 0, 0},
8000         {0x28, 0x1, 0x1, 0, 0},
8001         {0x29, 0, 0, 0, 0},
8002         {0x2A, 0, 0, 0, 0},
8003         {0x2B, 0, 0, 0, 0},
8004         {0x2C, 0, 0, 0, 0},
8005         {0x2D, 0, 0, 0, 0},
8006         {0x2E, 0xd, 0xd, 0, 0},
8007         {0x2F, 0x1f, 0x1f, 0, 0},
8008         {0x30, 0x15, 0x15, 0, 0},
8009         {0x31, 0xf, 0xf, 0, 0},
8010         {0x32, 0, 0, 0, 0},
8011         {0x33, 0, 0, 0, 0},
8012         {0x34, 0, 0, 0, 0},
8013         {0x35, 0, 0, 0, 0},
8014         {0x36, 0, 0, 0, 0},
8015         {0x37, 0, 0, 0, 0},
8016         {0x38, 0, 0, 0, 0},
8017         {0x39, 0, 0, 0, 0},
8018         {0x3A, 0, 0, 0, 0},
8019         {0x3B, 0, 0, 0, 0},
8020         {0x3C, 0x13, 0x13, 0, 0},
8021         {0x3D, 0xf, 0xf, 0, 0},
8022         {0x3E, 0x18, 0x18, 0, 0},
8023         {0x3F, 0, 0, 0, 0},
8024         {0x40, 0, 0, 0, 0},
8025         {0x41, 0x20, 0x20, 0, 0},
8026         {0x42, 0x20, 0x20, 0, 0},
8027         {0x43, 0, 0, 0, 0},
8028         {0x44, 0x77, 0x77, 0, 0},
8029         {0x45, 0x7, 0x7, 0, 0},
8030         {0x46, 0x1, 0x1, 0, 0},
8031         {0x47, 0x4, 0x4, 0, 0},
8032         {0x48, 0xf, 0xf, 0, 0},
8033         {0x49, 0x30, 0x30, 0, 0},
8034         {0x4A, 0x32, 0x32, 0, 0},
8035         {0x4B, 0xd, 0xd, 0, 0},
8036         {0x4C, 0xd, 0xd, 0, 0},
8037         {0x4D, 0x4, 0x4, 0, 0},
8038         {0x4E, 0x6, 0x6, 0, 0},
8039         {0x4F, 0x1, 0x1, 0, 0},
8040         {0x50, 0x1c, 0x1c, 0, 0},
8041         {0x51, 0x2, 0x2, 0, 0},
8042         {0x52, 0x2, 0x2, 0, 0},
8043         {0x53, 0xf7, 0xf7, 1, 1},
8044         {0x54, 0xb4, 0xb4, 0, 0},
8045         {0x55, 0xd2, 0xd2, 0, 0},
8046         {0x56, 0, 0, 0, 0},
8047         {0x57, 0, 0, 0, 0},
8048         {0x58, 0x4, 0x4, 0, 0},
8049         {0x59, 0x96, 0x96, 0, 0},
8050         {0x5A, 0x3e, 0x3e, 0, 0},
8051         {0x5B, 0x3e, 0x3e, 0, 0},
8052         {0x5C, 0x13, 0x13, 0, 0},
8053         {0x5D, 0x2, 0x2, 0, 0},
8054         {0x5E, 0, 0, 0, 0},
8055         {0x5F, 0x7, 0x7, 0, 0},
8056         {0x60, 0x7, 0x7, 1, 1},
8057         {0x61, 0x8, 0x8, 0, 0},
8058         {0x62, 0x3, 0x3, 0, 0},
8059         {0x63, 0, 0, 0, 0},
8060         {0x64, 0, 0, 0, 0},
8061         {0x65, 0, 0, 0, 0},
8062         {0x66, 0, 0, 0, 0},
8063         {0x67, 0, 0, 0, 0},
8064         {0x68, 0x40, 0x40, 0, 0},
8065         {0x69, 0, 0, 0, 0},
8066         {0x6A, 0, 0, 0, 0},
8067         {0x6B, 0, 0, 0, 0},
8068         {0x6C, 0, 0, 0, 0},
8069         {0x6D, 0x1, 0x1, 0, 0},
8070         {0x6E, 0, 0, 0, 0},
8071         {0x6F, 0, 0, 0, 0},
8072         {0x70, 0x60, 0x60, 0, 0},
8073         {0x71, 0x66, 0x66, 0, 0},
8074         {0x72, 0xc, 0xc, 0, 0},
8075         {0x73, 0x66, 0x66, 0, 0},
8076         {0x74, 0x8f, 0x8f, 1, 1},
8077         {0x75, 0, 0, 0, 0},
8078         {0x76, 0xcc, 0xcc, 0, 0},
8079         {0x77, 0x1, 0x1, 0, 0},
8080         {0x78, 0x66, 0x66, 0, 0},
8081         {0x79, 0x66, 0x66, 0, 0},
8082         {0x7A, 0, 0, 0, 0},
8083         {0x7B, 0, 0, 0, 0},
8084         {0x7C, 0, 0, 0, 0},
8085         {0x7D, 0, 0, 0, 0},
8086         {0x7E, 0, 0, 0, 0},
8087         {0x7F, 0, 0, 0, 0},
8088         {0x80, 0, 0, 0, 0},
8089         {0x81, 0, 0, 0, 0},
8090         {0x82, 0, 0, 0, 0},
8091         {0x83, 0, 0, 0, 0},
8092         {0x84, 0, 0, 0, 0},
8093         {0x85, 0xff, 0xff, 0, 0},
8094         {0x86, 0, 0, 0, 0},
8095         {0x87, 0, 0, 0, 0},
8096         {0x88, 0, 0, 0, 0},
8097         {0x89, 0, 0, 0, 0},
8098         {0x8A, 0, 0, 0, 0},
8099         {0x8B, 0, 0, 0, 0},
8100         {0x8C, 0, 0, 0, 0},
8101         {0x8D, 0, 0, 0, 0},
8102         {0x8E, 0, 0, 0, 0},
8103         {0x8F, 0, 0, 0, 0},
8104         {0x90, 0, 0, 0, 0},
8105         {0x91, 0, 0, 0, 0},
8106         {0x92, 0, 0, 0, 0},
8107         {0x93, 0, 0, 0, 0},
8108         {0x94, 0, 0, 0, 0},
8109         {0x95, 0, 0, 0, 0},
8110         {0x96, 0, 0, 0, 0},
8111         {0x97, 0, 0, 0, 0},
8112         {0x98, 0, 0, 0, 0},
8113         {0x99, 0, 0, 0, 0},
8114         {0x9A, 0, 0, 0, 0},
8115         {0x9B, 0, 0, 0, 0},
8116         {0x9C, 0, 0, 0, 0},
8117         {0x9D, 0, 0, 0, 0},
8118         {0x9E, 0, 0, 0, 0},
8119         {0x9F, 0x6, 0x6, 0, 0},
8120         {0xA0, 0x66, 0x66, 0, 0},
8121         {0xA1, 0x66, 0x66, 0, 0},
8122         {0xA2, 0x66, 0x66, 0, 0},
8123         {0xA3, 0x66, 0x66, 0, 0},
8124         {0xA4, 0x66, 0x66, 0, 0},
8125         {0xA5, 0x66, 0x66, 0, 0},
8126         {0xA6, 0x66, 0x66, 0, 0},
8127         {0xA7, 0x66, 0x66, 0, 0},
8128         {0xA8, 0x66, 0x66, 0, 0},
8129         {0xA9, 0x66, 0x66, 0, 0},
8130         {0xAA, 0x66, 0x66, 0, 0},
8131         {0xAB, 0x66, 0x66, 0, 0},
8132         {0xAC, 0x66, 0x66, 0, 0},
8133         {0xAD, 0x66, 0x66, 0, 0},
8134         {0xAE, 0x66, 0x66, 0, 0},
8135         {0xAF, 0x66, 0x66, 0, 0},
8136         {0xB0, 0x66, 0x66, 0, 0},
8137         {0xB1, 0x66, 0x66, 0, 0},
8138         {0xB2, 0x66, 0x66, 0, 0},
8139         {0xB3, 0xa, 0xa, 0, 0},
8140         {0xB4, 0, 0, 0, 0},
8141         {0xB5, 0, 0, 0, 0},
8142         {0xB6, 0, 0, 0, 0},
8143         {0xFFFF, 0, 0, 0, 0}
8144 };
8145
8146 radio_regs_t regs_TX_2056[] = {
8147         {0x02, 0, 0, 0, 0},
8148         {0x03, 0, 0, 0, 0},
8149         {0x04, 0, 0, 0, 0},
8150         {0x05, 0, 0, 0, 0},
8151         {0x06, 0, 0, 0, 0},
8152         {0x07, 0, 0, 0, 0},
8153         {0x08, 0, 0, 0, 0},
8154         {0x09, 0, 0, 0, 0},
8155         {0x0A, 0, 0, 0, 0},
8156         {0x0B, 0, 0, 0, 0},
8157         {0x0C, 0, 0, 0, 0},
8158         {0x0D, 0, 0, 0, 0},
8159         {0x0E, 0, 0, 0, 0},
8160         {0x0F, 0, 0, 0, 0},
8161         {0x10, 0, 0, 0, 0},
8162         {0x11, 0, 0, 0, 0},
8163         {0x12, 0, 0, 0, 0},
8164         {0x13, 0, 0, 0, 0},
8165         {0x14, 0, 0, 0, 0},
8166         {0x15, 0, 0, 0, 0},
8167         {0x16, 0, 0, 0, 0},
8168         {0x17, 0, 0, 0, 0},
8169         {0x18, 0, 0, 0, 0},
8170         {0x19, 0, 0, 0, 0},
8171         {0x1A, 0, 0, 0, 0},
8172         {0x1B, 0, 0, 0, 0},
8173         {0x1C, 0, 0, 0, 0},
8174         {0x1D, 0, 0, 0, 0},
8175         {0x1E, 0, 0, 0, 0},
8176         {0x1F, 0, 0, 0, 0},
8177         {0x20, 0, 0, 0, 0},
8178         {0x21, 0x88, 0x88, 0, 0},
8179         {0x22, 0x88, 0x88, 0, 0},
8180         {0x23, 0x88, 0x88, 0, 0},
8181         {0x24, 0x88, 0x88, 0, 0},
8182         {0x25, 0xc, 0xc, 0, 0},
8183         {0x26, 0, 0, 0, 0},
8184         {0x27, 0x3, 0x3, 0, 0},
8185         {0x28, 0, 0, 0, 0},
8186         {0x29, 0x3, 0x3, 0, 0},
8187         {0x2A, 0x37, 0x37, 0, 0},
8188         {0x2B, 0x3, 0x3, 0, 0},
8189         {0x2C, 0, 0, 0, 0},
8190         {0x2D, 0, 0, 0, 0},
8191         {0x2E, 0x1, 0x1, 0, 0},
8192         {0x2F, 0x1, 0x1, 0, 0},
8193         {0x30, 0, 0, 0, 0},
8194         {0x31, 0, 0, 0, 0},
8195         {0x32, 0, 0, 0, 0},
8196         {0x33, 0x11, 0x11, 0, 0},
8197         {0x34, 0x11, 0x11, 0, 0},
8198         {0x35, 0, 0, 0, 0},
8199         {0x36, 0, 0, 0, 0},
8200         {0x37, 0x3, 0x3, 0, 0},
8201         {0x38, 0xf, 0xf, 0, 0},
8202         {0x39, 0, 0, 0, 0},
8203         {0x3A, 0x2d, 0x2d, 0, 0},
8204         {0x3B, 0, 0, 0, 0},
8205         {0x3C, 0x6e, 0x6e, 0, 0},
8206         {0x3D, 0xf0, 0xf0, 1, 1},
8207         {0x3E, 0, 0, 0, 0},
8208         {0x3F, 0, 0, 0, 0},
8209         {0x40, 0, 0, 0, 0},
8210         {0x41, 0x3, 0x3, 0, 0},
8211         {0x42, 0x3, 0x3, 0, 0},
8212         {0x43, 0, 0, 0, 0},
8213         {0x44, 0x1e, 0x1e, 0, 0},
8214         {0x45, 0, 0, 0, 0},
8215         {0x46, 0x6e, 0x6e, 0, 0},
8216         {0x47, 0xf0, 0xf0, 1, 1},
8217         {0x48, 0, 0, 0, 0},
8218         {0x49, 0x2, 0x2, 0, 0},
8219         {0x4A, 0xff, 0xff, 1, 1},
8220         {0x4B, 0xc, 0xc, 0, 0},
8221         {0x4C, 0, 0, 0, 0},
8222         {0x4D, 0x38, 0x38, 0, 0},
8223         {0x4E, 0x70, 0x70, 1, 1},
8224         {0x4F, 0x2, 0x2, 0, 0},
8225         {0x50, 0x88, 0x88, 0, 0},
8226         {0x51, 0xc, 0xc, 0, 0},
8227         {0x52, 0, 0, 0, 0},
8228         {0x53, 0x8, 0x8, 0, 0},
8229         {0x54, 0x70, 0x70, 1, 1},
8230         {0x55, 0x2, 0x2, 0, 0},
8231         {0x56, 0xff, 0xff, 1, 1},
8232         {0x57, 0, 0, 0, 0},
8233         {0x58, 0x83, 0x83, 0, 0},
8234         {0x59, 0x77, 0x77, 1, 1},
8235         {0x5A, 0, 0, 0, 0},
8236         {0x5B, 0x2, 0x2, 0, 0},
8237         {0x5C, 0x88, 0x88, 0, 0},
8238         {0x5D, 0, 0, 0, 0},
8239         {0x5E, 0x8, 0x8, 0, 0},
8240         {0x5F, 0x77, 0x77, 1, 1},
8241         {0x60, 0x1, 0x1, 0, 0},
8242         {0x61, 0, 0, 0, 0},
8243         {0x62, 0x7, 0x7, 0, 0},
8244         {0x63, 0, 0, 0, 0},
8245         {0x64, 0x7, 0x7, 0, 0},
8246         {0x65, 0, 0, 0, 0},
8247         {0x66, 0, 0, 0, 0},
8248         {0x67, 0x74, 0x74, 1, 1},
8249         {0x68, 0, 0, 0, 0},
8250         {0x69, 0xa, 0xa, 0, 0},
8251         {0x6A, 0, 0, 0, 0},
8252         {0x6B, 0, 0, 0, 0},
8253         {0x6C, 0, 0, 0, 0},
8254         {0x6D, 0, 0, 0, 0},
8255         {0x6E, 0, 0, 0, 0},
8256         {0x6F, 0, 0, 0, 0},
8257         {0x70, 0, 0, 0, 0},
8258         {0x71, 0x2, 0x2, 0, 0},
8259         {0x72, 0, 0, 0, 0},
8260         {0x73, 0, 0, 0, 0},
8261         {0x74, 0xe, 0xe, 0, 0},
8262         {0x75, 0xe, 0xe, 0, 0},
8263         {0x76, 0xe, 0xe, 0, 0},
8264         {0x77, 0x13, 0x13, 0, 0},
8265         {0x78, 0x13, 0x13, 0, 0},
8266         {0x79, 0x1b, 0x1b, 0, 0},
8267         {0x7A, 0x1b, 0x1b, 0, 0},
8268         {0x7B, 0x55, 0x55, 0, 0},
8269         {0x7C, 0x5b, 0x5b, 0, 0},
8270         {0x7D, 0, 0, 0, 0},
8271         {0x7E, 0, 0, 0, 0},
8272         {0x7F, 0, 0, 0, 0},
8273         {0x80, 0, 0, 0, 0},
8274         {0x81, 0, 0, 0, 0},
8275         {0x82, 0, 0, 0, 0},
8276         {0x83, 0, 0, 0, 0},
8277         {0x84, 0, 0, 0, 0},
8278         {0x85, 0, 0, 0, 0},
8279         {0x86, 0, 0, 0, 0},
8280         {0x87, 0, 0, 0, 0},
8281         {0x88, 0, 0, 0, 0},
8282         {0x89, 0, 0, 0, 0},
8283         {0x8A, 0, 0, 0, 0},
8284         {0x8B, 0, 0, 0, 0},
8285         {0x8C, 0, 0, 0, 0},
8286         {0x8D, 0, 0, 0, 0},
8287         {0x8E, 0, 0, 0, 0},
8288         {0x8F, 0, 0, 0, 0},
8289         {0x90, 0, 0, 0, 0},
8290         {0x91, 0, 0, 0, 0},
8291         {0x92, 0, 0, 0, 0},
8292         {0xFFFF, 0, 0, 0, 0}
8293 };
8294
8295 radio_regs_t regs_RX_2056[] = {
8296         {0x02, 0, 0, 0, 0},
8297         {0x03, 0, 0, 0, 0},
8298         {0x04, 0, 0, 0, 0},
8299         {0x05, 0, 0, 0, 0},
8300         {0x06, 0, 0, 0, 0},
8301         {0x07, 0, 0, 0, 0},
8302         {0x08, 0, 0, 0, 0},
8303         {0x09, 0, 0, 0, 0},
8304         {0x0A, 0, 0, 0, 0},
8305         {0x0B, 0, 0, 0, 0},
8306         {0x0C, 0, 0, 0, 0},
8307         {0x0D, 0, 0, 0, 0},
8308         {0x0E, 0, 0, 0, 0},
8309         {0x0F, 0, 0, 0, 0},
8310         {0x10, 0, 0, 0, 0},
8311         {0x11, 0, 0, 0, 0},
8312         {0x12, 0, 0, 0, 0},
8313         {0x13, 0, 0, 0, 0},
8314         {0x14, 0, 0, 0, 0},
8315         {0x15, 0, 0, 0, 0},
8316         {0x16, 0, 0, 0, 0},
8317         {0x17, 0, 0, 0, 0},
8318         {0x18, 0, 0, 0, 0},
8319         {0x19, 0, 0, 0, 0},
8320         {0x1A, 0, 0, 0, 0},
8321         {0x1B, 0, 0, 0, 0},
8322         {0x1C, 0, 0, 0, 0},
8323         {0x1D, 0, 0, 0, 0},
8324         {0x1E, 0, 0, 0, 0},
8325         {0x1F, 0, 0, 0, 0},
8326         {0x20, 0x3, 0x3, 0, 0},
8327         {0x21, 0, 0, 0, 0},
8328         {0x22, 0, 0, 0, 0},
8329         {0x23, 0x90, 0x90, 0, 0},
8330         {0x24, 0x55, 0x55, 0, 0},
8331         {0x25, 0x15, 0x15, 0, 0},
8332         {0x26, 0x5, 0x5, 0, 0},
8333         {0x27, 0x15, 0x15, 0, 0},
8334         {0x28, 0x5, 0x5, 0, 0},
8335         {0x29, 0x20, 0x20, 0, 0},
8336         {0x2A, 0x11, 0x11, 0, 0},
8337         {0x2B, 0x90, 0x90, 0, 0},
8338         {0x2C, 0, 0, 0, 0},
8339         {0x2D, 0x88, 0x88, 0, 0},
8340         {0x2E, 0x32, 0x32, 0, 0},
8341         {0x2F, 0x77, 0x77, 0, 0},
8342         {0x30, 0x17, 0x17, 1, 1},
8343         {0x31, 0xff, 0xff, 1, 1},
8344         {0x32, 0x20, 0x20, 0, 0},
8345         {0x33, 0, 0, 0, 0},
8346         {0x34, 0x88, 0x88, 0, 0},
8347         {0x35, 0x32, 0x32, 0, 0},
8348         {0x36, 0x77, 0x77, 0, 0},
8349         {0x37, 0x17, 0x17, 1, 1},
8350         {0x38, 0xf0, 0xf0, 1, 1},
8351         {0x39, 0x20, 0x20, 0, 0},
8352         {0x3A, 0x8, 0x8, 0, 0},
8353         {0x3B, 0x99, 0x99, 0, 0},
8354         {0x3C, 0, 0, 0, 0},
8355         {0x3D, 0x44, 0x44, 1, 1},
8356         {0x3E, 0, 0, 0, 0},
8357         {0x3F, 0x44, 0x44, 0, 0},
8358         {0x40, 0xf, 0xf, 1, 1},
8359         {0x41, 0x6, 0x6, 0, 0},
8360         {0x42, 0x4, 0x4, 0, 0},
8361         {0x43, 0x50, 0x50, 1, 1},
8362         {0x44, 0x8, 0x8, 0, 0},
8363         {0x45, 0x99, 0x99, 0, 0},
8364         {0x46, 0, 0, 0, 0},
8365         {0x47, 0x11, 0x11, 0, 0},
8366         {0x48, 0, 0, 0, 0},
8367         {0x49, 0x44, 0x44, 0, 0},
8368         {0x4A, 0x7, 0x7, 0, 0},
8369         {0x4B, 0x6, 0x6, 0, 0},
8370         {0x4C, 0x4, 0x4, 0, 0},
8371         {0x4D, 0, 0, 0, 0},
8372         {0x4E, 0, 0, 0, 0},
8373         {0x4F, 0x66, 0x66, 0, 0},
8374         {0x50, 0x66, 0x66, 0, 0},
8375         {0x51, 0x57, 0x57, 0, 0},
8376         {0x52, 0x57, 0x57, 0, 0},
8377         {0x53, 0x44, 0x44, 0, 0},
8378         {0x54, 0, 0, 0, 0},
8379         {0x55, 0, 0, 0, 0},
8380         {0x56, 0x8, 0x8, 0, 0},
8381         {0x57, 0x8, 0x8, 0, 0},
8382         {0x58, 0x7, 0x7, 0, 0},
8383         {0x59, 0x22, 0x22, 0, 0},
8384         {0x5A, 0x22, 0x22, 0, 0},
8385         {0x5B, 0x2, 0x2, 0, 0},
8386         {0x5C, 0x23, 0x23, 0, 0},
8387         {0x5D, 0x7, 0x7, 0, 0},
8388         {0x5E, 0x55, 0x55, 0, 0},
8389         {0x5F, 0x23, 0x23, 0, 0},
8390         {0x60, 0x41, 0x41, 0, 0},
8391         {0x61, 0x1, 0x1, 0, 0},
8392         {0x62, 0xa, 0xa, 0, 0},
8393         {0x63, 0, 0, 0, 0},
8394         {0x64, 0, 0, 0, 0},
8395         {0x65, 0, 0, 0, 0},
8396         {0x66, 0, 0, 0, 0},
8397         {0x67, 0, 0, 0, 0},
8398         {0x68, 0, 0, 0, 0},
8399         {0x69, 0, 0, 0, 0},
8400         {0x6A, 0, 0, 0, 0},
8401         {0x6B, 0xc, 0xc, 0, 0},
8402         {0x6C, 0, 0, 0, 0},
8403         {0x6D, 0, 0, 0, 0},
8404         {0x6E, 0, 0, 0, 0},
8405         {0x6F, 0, 0, 0, 0},
8406         {0x70, 0, 0, 0, 0},
8407         {0x71, 0, 0, 0, 0},
8408         {0x72, 0x22, 0x22, 0, 0},
8409         {0x73, 0x22, 0x22, 0, 0},
8410         {0x74, 0x2, 0x2, 0, 0},
8411         {0x75, 0xa, 0xa, 0, 0},
8412         {0x76, 0x1, 0x1, 0, 0},
8413         {0x77, 0x22, 0x22, 0, 0},
8414         {0x78, 0x30, 0x30, 0, 0},
8415         {0x79, 0, 0, 0, 0},
8416         {0x7A, 0, 0, 0, 0},
8417         {0x7B, 0, 0, 0, 0},
8418         {0x7C, 0, 0, 0, 0},
8419         {0x7D, 0, 0, 0, 0},
8420         {0x7E, 0, 0, 0, 0},
8421         {0x7F, 0, 0, 0, 0},
8422         {0x80, 0, 0, 0, 0},
8423         {0x81, 0, 0, 0, 0},
8424         {0x82, 0, 0, 0, 0},
8425         {0x83, 0, 0, 0, 0},
8426         {0x84, 0, 0, 0, 0},
8427         {0x85, 0, 0, 0, 0},
8428         {0x86, 0, 0, 0, 0},
8429         {0x87, 0, 0, 0, 0},
8430         {0x88, 0, 0, 0, 0},
8431         {0x89, 0, 0, 0, 0},
8432         {0x8A, 0, 0, 0, 0},
8433         {0x8B, 0, 0, 0, 0},
8434         {0x8C, 0, 0, 0, 0},
8435         {0x8D, 0, 0, 0, 0},
8436         {0x8E, 0, 0, 0, 0},
8437         {0x8F, 0, 0, 0, 0},
8438         {0x90, 0, 0, 0, 0},
8439         {0x91, 0, 0, 0, 0},
8440         {0x92, 0, 0, 0, 0},
8441         {0x93, 0, 0, 0, 0},
8442         {0x94, 0, 0, 0, 0},
8443         {0xFFFF, 0, 0, 0, 0}
8444 };
8445
8446 radio_regs_t regs_SYN_2056_A1[] = {
8447         {0x02, 0, 0, 0, 0},
8448         {0x03, 0, 0, 0, 0},
8449         {0x04, 0, 0, 0, 0},
8450         {0x05, 0, 0, 0, 0},
8451         {0x06, 0, 0, 0, 0},
8452         {0x07, 0, 0, 0, 0},
8453         {0x08, 0, 0, 0, 0},
8454         {0x09, 0x1, 0x1, 0, 0},
8455         {0x0A, 0, 0, 0, 0},
8456         {0x0B, 0, 0, 0, 0},
8457         {0x0C, 0, 0, 0, 0},
8458         {0x0D, 0, 0, 0, 0},
8459         {0x0E, 0, 0, 0, 0},
8460         {0x0F, 0, 0, 0, 0},
8461         {0x10, 0, 0, 0, 0},
8462         {0x11, 0, 0, 0, 0},
8463         {0x12, 0, 0, 0, 0},
8464         {0x13, 0, 0, 0, 0},
8465         {0x14, 0, 0, 0, 0},
8466         {0x15, 0, 0, 0, 0},
8467         {0x16, 0, 0, 0, 0},
8468         {0x17, 0, 0, 0, 0},
8469         {0x18, 0, 0, 0, 0},
8470         {0x19, 0, 0, 0, 0},
8471         {0x1A, 0, 0, 0, 0},
8472         {0x1B, 0, 0, 0, 0},
8473         {0x1C, 0, 0, 0, 0},
8474         {0x1D, 0, 0, 0, 0},
8475         {0x1E, 0, 0, 0, 0},
8476         {0x1F, 0, 0, 0, 0},
8477         {0x20, 0, 0, 0, 0},
8478         {0x21, 0, 0, 0, 0},
8479         {0x22, 0x60, 0x60, 0, 0},
8480         {0x23, 0x6, 0x6, 0, 0},
8481         {0x24, 0xc, 0xc, 0, 0},
8482         {0x25, 0, 0, 0, 0},
8483         {0x26, 0, 0, 0, 0},
8484         {0x27, 0, 0, 0, 0},
8485         {0x28, 0x1, 0x1, 0, 0},
8486         {0x29, 0, 0, 0, 0},
8487         {0x2A, 0, 0, 0, 0},
8488         {0x2B, 0, 0, 0, 0},
8489         {0x2C, 0, 0, 0, 0},
8490         {0x2D, 0, 0, 0, 0},
8491         {0x2E, 0xd, 0xd, 0, 0},
8492         {0x2F, 0x1f, 0x1f, 0, 0},
8493         {0x30, 0x15, 0x15, 0, 0},
8494         {0x31, 0xf, 0xf, 0, 0},
8495         {0x32, 0, 0, 0, 0},
8496         {0x33, 0, 0, 0, 0},
8497         {0x34, 0, 0, 0, 0},
8498         {0x35, 0, 0, 0, 0},
8499         {0x36, 0, 0, 0, 0},
8500         {0x37, 0, 0, 0, 0},
8501         {0x38, 0, 0, 0, 0},
8502         {0x39, 0, 0, 0, 0},
8503         {0x3A, 0, 0, 0, 0},
8504         {0x3B, 0, 0, 0, 0},
8505         {0x3C, 0x13, 0x13, 0, 0},
8506         {0x3D, 0xf, 0xf, 0, 0},
8507         {0x3E, 0x18, 0x18, 0, 0},
8508         {0x3F, 0, 0, 0, 0},
8509         {0x40, 0, 0, 0, 0},
8510         {0x41, 0x20, 0x20, 0, 0},
8511         {0x42, 0x20, 0x20, 0, 0},
8512         {0x43, 0, 0, 0, 0},
8513         {0x44, 0x77, 0x77, 0, 0},
8514         {0x45, 0x7, 0x7, 0, 0},
8515         {0x46, 0x1, 0x1, 0, 0},
8516         {0x47, 0x4, 0x4, 0, 0},
8517         {0x48, 0xf, 0xf, 0, 0},
8518         {0x49, 0x30, 0x30, 0, 0},
8519         {0x4A, 0x32, 0x32, 0, 0},
8520         {0x4B, 0xd, 0xd, 0, 0},
8521         {0x4C, 0xd, 0xd, 0, 0},
8522         {0x4D, 0x4, 0x4, 0, 0},
8523         {0x4E, 0x6, 0x6, 0, 0},
8524         {0x4F, 0x1, 0x1, 0, 0},
8525         {0x50, 0x1c, 0x1c, 0, 0},
8526         {0x51, 0x2, 0x2, 0, 0},
8527         {0x52, 0x2, 0x2, 0, 0},
8528         {0x53, 0xf7, 0xf7, 1, 1},
8529         {0x54, 0xb4, 0xb4, 0, 0},
8530         {0x55, 0xd2, 0xd2, 0, 0},
8531         {0x56, 0, 0, 0, 0},
8532         {0x57, 0, 0, 0, 0},
8533         {0x58, 0x4, 0x4, 0, 0},
8534         {0x59, 0x96, 0x96, 0, 0},
8535         {0x5A, 0x3e, 0x3e, 0, 0},
8536         {0x5B, 0x3e, 0x3e, 0, 0},
8537         {0x5C, 0x13, 0x13, 0, 0},
8538         {0x5D, 0x2, 0x2, 0, 0},
8539         {0x5E, 0, 0, 0, 0},
8540         {0x5F, 0x7, 0x7, 0, 0},
8541         {0x60, 0x7, 0x7, 1, 1},
8542         {0x61, 0x8, 0x8, 0, 0},
8543         {0x62, 0x3, 0x3, 0, 0},
8544         {0x63, 0, 0, 0, 0},
8545         {0x64, 0, 0, 0, 0},
8546         {0x65, 0, 0, 0, 0},
8547         {0x66, 0, 0, 0, 0},
8548         {0x67, 0, 0, 0, 0},
8549         {0x68, 0x40, 0x40, 0, 0},
8550         {0x69, 0, 0, 0, 0},
8551         {0x6A, 0, 0, 0, 0},
8552         {0x6B, 0, 0, 0, 0},
8553         {0x6C, 0, 0, 0, 0},
8554         {0x6D, 0x1, 0x1, 0, 0},
8555         {0x6E, 0, 0, 0, 0},
8556         {0x6F, 0, 0, 0, 0},
8557         {0x70, 0x60, 0x60, 0, 0},
8558         {0x71, 0x66, 0x66, 0, 0},
8559         {0x72, 0xc, 0xc, 0, 0},
8560         {0x73, 0x66, 0x66, 0, 0},
8561         {0x74, 0x8f, 0x8f, 1, 1},
8562         {0x75, 0, 0, 0, 0},
8563         {0x76, 0xcc, 0xcc, 0, 0},
8564         {0x77, 0x1, 0x1, 0, 0},
8565         {0x78, 0x66, 0x66, 0, 0},
8566         {0x79, 0x66, 0x66, 0, 0},
8567         {0x7A, 0, 0, 0, 0},
8568         {0x7B, 0, 0, 0, 0},
8569         {0x7C, 0, 0, 0, 0},
8570         {0x7D, 0, 0, 0, 0},
8571         {0x7E, 0, 0, 0, 0},
8572         {0x7F, 0, 0, 0, 0},
8573         {0x80, 0, 0, 0, 0},
8574         {0x81, 0, 0, 0, 0},
8575         {0x82, 0, 0, 0, 0},
8576         {0x83, 0, 0, 0, 0},
8577         {0x84, 0, 0, 0, 0},
8578         {0x85, 0xff, 0xff, 0, 0},
8579         {0x86, 0, 0, 0, 0},
8580         {0x87, 0, 0, 0, 0},
8581         {0x88, 0, 0, 0, 0},
8582         {0x89, 0, 0, 0, 0},
8583         {0x8A, 0, 0, 0, 0},
8584         {0x8B, 0, 0, 0, 0},
8585         {0x8C, 0, 0, 0, 0},
8586         {0x8D, 0, 0, 0, 0},
8587         {0x8E, 0, 0, 0, 0},
8588         {0x8F, 0, 0, 0, 0},
8589         {0x90, 0, 0, 0, 0},
8590         {0x91, 0, 0, 0, 0},
8591         {0x92, 0, 0, 0, 0},
8592         {0x93, 0, 0, 0, 0},
8593         {0x94, 0, 0, 0, 0},
8594         {0x95, 0, 0, 0, 0},
8595         {0x96, 0, 0, 0, 0},
8596         {0x97, 0, 0, 0, 0},
8597         {0x98, 0, 0, 0, 0},
8598         {0x99, 0, 0, 0, 0},
8599         {0x9A, 0, 0, 0, 0},
8600         {0x9B, 0, 0, 0, 0},
8601         {0x9C, 0, 0, 0, 0},
8602         {0x9D, 0, 0, 0, 0},
8603         {0x9E, 0, 0, 0, 0},
8604         {0x9F, 0x6, 0x6, 0, 0},
8605         {0xA0, 0x66, 0x66, 0, 0},
8606         {0xA1, 0x66, 0x66, 0, 0},
8607         {0xA2, 0x66, 0x66, 0, 0},
8608         {0xA3, 0x66, 0x66, 0, 0},
8609         {0xA4, 0x66, 0x66, 0, 0},
8610         {0xA5, 0x66, 0x66, 0, 0},
8611         {0xA6, 0x66, 0x66, 0, 0},
8612         {0xA7, 0x66, 0x66, 0, 0},
8613         {0xA8, 0x66, 0x66, 0, 0},
8614         {0xA9, 0x66, 0x66, 0, 0},
8615         {0xAA, 0x66, 0x66, 0, 0},
8616         {0xAB, 0x66, 0x66, 0, 0},
8617         {0xAC, 0x66, 0x66, 0, 0},
8618         {0xAD, 0x66, 0x66, 0, 0},
8619         {0xAE, 0x66, 0x66, 0, 0},
8620         {0xAF, 0x66, 0x66, 0, 0},
8621         {0xB0, 0x66, 0x66, 0, 0},
8622         {0xB1, 0x66, 0x66, 0, 0},
8623         {0xB2, 0x66, 0x66, 0, 0},
8624         {0xB3, 0xa, 0xa, 0, 0},
8625         {0xB4, 0, 0, 0, 0},
8626         {0xB5, 0, 0, 0, 0},
8627         {0xB6, 0, 0, 0, 0},
8628         {0xFFFF, 0, 0, 0, 0}
8629 };
8630
8631 radio_regs_t regs_TX_2056_A1[] = {
8632         {0x02, 0, 0, 0, 0},
8633         {0x03, 0, 0, 0, 0},
8634         {0x04, 0, 0, 0, 0},
8635         {0x05, 0, 0, 0, 0},
8636         {0x06, 0, 0, 0, 0},
8637         {0x07, 0, 0, 0, 0},
8638         {0x08, 0, 0, 0, 0},
8639         {0x09, 0, 0, 0, 0},
8640         {0x0A, 0, 0, 0, 0},
8641         {0x0B, 0, 0, 0, 0},
8642         {0x0C, 0, 0, 0, 0},
8643         {0x0D, 0, 0, 0, 0},
8644         {0x0E, 0, 0, 0, 0},
8645         {0x0F, 0, 0, 0, 0},
8646         {0x10, 0, 0, 0, 0},
8647         {0x11, 0, 0, 0, 0},
8648         {0x12, 0, 0, 0, 0},
8649         {0x13, 0, 0, 0, 0},
8650         {0x14, 0, 0, 0, 0},
8651         {0x15, 0, 0, 0, 0},
8652         {0x16, 0, 0, 0, 0},
8653         {0x17, 0, 0, 0, 0},
8654         {0x18, 0, 0, 0, 0},
8655         {0x19, 0, 0, 0, 0},
8656         {0x1A, 0, 0, 0, 0},
8657         {0x1B, 0, 0, 0, 0},
8658         {0x1C, 0, 0, 0, 0},
8659         {0x1D, 0, 0, 0, 0},
8660         {0x1E, 0, 0, 0, 0},
8661         {0x1F, 0, 0, 0, 0},
8662         {0x20, 0, 0, 0, 0},
8663         {0x21, 0x88, 0x88, 0, 0},
8664         {0x22, 0x88, 0x88, 0, 0},
8665         {0x23, 0x88, 0x88, 0, 0},
8666         {0x24, 0x88, 0x88, 0, 0},
8667         {0x25, 0xc, 0xc, 0, 0},
8668         {0x26, 0, 0, 0, 0},
8669         {0x27, 0x3, 0x3, 0, 0},
8670         {0x28, 0, 0, 0, 0},
8671         {0x29, 0x3, 0x3, 0, 0},
8672         {0x2A, 0x37, 0x37, 0, 0},
8673         {0x2B, 0x3, 0x3, 0, 0},
8674         {0x2C, 0, 0, 0, 0},
8675         {0x2D, 0, 0, 0, 0},
8676         {0x2E, 0x1, 0x1, 0, 0},
8677         {0x2F, 0x1, 0x1, 0, 0},
8678         {0x30, 0, 0, 0, 0},
8679         {0x31, 0, 0, 0, 0},
8680         {0x32, 0, 0, 0, 0},
8681         {0x33, 0x11, 0x11, 0, 0},
8682         {0x34, 0x11, 0x11, 0, 0},
8683         {0x35, 0, 0, 0, 0},
8684         {0x36, 0, 0, 0, 0},
8685         {0x37, 0x3, 0x3, 0, 0},
8686         {0x38, 0xf, 0xf, 0, 0},
8687         {0x39, 0, 0, 0, 0},
8688         {0x3A, 0x2d, 0x2d, 0, 0},
8689         {0x3B, 0, 0, 0, 0},
8690         {0x3C, 0x6e, 0x6e, 0, 0},
8691         {0x3D, 0xf0, 0xf0, 1, 1},
8692         {0x3E, 0, 0, 0, 0},
8693         {0x3F, 0, 0, 0, 0},
8694         {0x40, 0, 0, 0, 0},
8695         {0x41, 0x3, 0x3, 0, 0},
8696         {0x42, 0x3, 0x3, 0, 0},
8697         {0x43, 0, 0, 0, 0},
8698         {0x44, 0x1e, 0x1e, 0, 0},
8699         {0x45, 0, 0, 0, 0},
8700         {0x46, 0x6e, 0x6e, 0, 0},
8701         {0x47, 0xf0, 0xf0, 1, 1},
8702         {0x48, 0, 0, 0, 0},
8703         {0x49, 0x2, 0x2, 0, 0},
8704         {0x4A, 0xff, 0xff, 1, 1},
8705         {0x4B, 0xc, 0xc, 0, 0},
8706         {0x4C, 0, 0, 0, 0},
8707         {0x4D, 0x38, 0x38, 0, 0},
8708         {0x4E, 0x70, 0x70, 1, 1},
8709         {0x4F, 0x2, 0x2, 0, 0},
8710         {0x50, 0x88, 0x88, 0, 0},
8711         {0x51, 0xc, 0xc, 0, 0},
8712         {0x52, 0, 0, 0, 0},
8713         {0x53, 0x8, 0x8, 0, 0},
8714         {0x54, 0x70, 0x70, 1, 1},
8715         {0x55, 0x2, 0x2, 0, 0},
8716         {0x56, 0xff, 0xff, 1, 1},
8717         {0x57, 0, 0, 0, 0},
8718         {0x58, 0x83, 0x83, 0, 0},
8719         {0x59, 0x77, 0x77, 1, 1},
8720         {0x5A, 0, 0, 0, 0},
8721         {0x5B, 0x2, 0x2, 0, 0},
8722         {0x5C, 0x88, 0x88, 0, 0},
8723         {0x5D, 0, 0, 0, 0},
8724         {0x5E, 0x8, 0x8, 0, 0},
8725         {0x5F, 0x77, 0x77, 1, 1},
8726         {0x60, 0x1, 0x1, 0, 0},
8727         {0x61, 0, 0, 0, 0},
8728         {0x62, 0x7, 0x7, 0, 0},
8729         {0x63, 0, 0, 0, 0},
8730         {0x64, 0x7, 0x7, 0, 0},
8731         {0x65, 0, 0, 0, 0},
8732         {0x66, 0, 0, 0, 0},
8733         {0x67, 0x72, 0x72, 1, 1},
8734         {0x68, 0, 0, 0, 0},
8735         {0x69, 0xa, 0xa, 0, 0},
8736         {0x6A, 0, 0, 0, 0},
8737         {0x6B, 0, 0, 0, 0},
8738         {0x6C, 0, 0, 0, 0},
8739         {0x6D, 0, 0, 0, 0},
8740         {0x6E, 0, 0, 0, 0},
8741         {0x6F, 0, 0, 0, 0},
8742         {0x70, 0, 0, 0, 0},
8743         {0x71, 0x2, 0x2, 0, 0},
8744         {0x72, 0, 0, 0, 0},
8745         {0x73, 0, 0, 0, 0},
8746         {0x74, 0xe, 0xe, 0, 0},
8747         {0x75, 0xe, 0xe, 0, 0},
8748         {0x76, 0xe, 0xe, 0, 0},
8749         {0x77, 0x13, 0x13, 0, 0},
8750         {0x78, 0x13, 0x13, 0, 0},
8751         {0x79, 0x1b, 0x1b, 0, 0},
8752         {0x7A, 0x1b, 0x1b, 0, 0},
8753         {0x7B, 0x55, 0x55, 0, 0},
8754         {0x7C, 0x5b, 0x5b, 0, 0},
8755         {0x7D, 0, 0, 0, 0},
8756         {0x7E, 0, 0, 0, 0},
8757         {0x7F, 0, 0, 0, 0},
8758         {0x80, 0, 0, 0, 0},
8759         {0x81, 0, 0, 0, 0},
8760         {0x82, 0, 0, 0, 0},
8761         {0x83, 0, 0, 0, 0},
8762         {0x84, 0, 0, 0, 0},
8763         {0x85, 0, 0, 0, 0},
8764         {0x86, 0, 0, 0, 0},
8765         {0x87, 0, 0, 0, 0},
8766         {0x88, 0, 0, 0, 0},
8767         {0x89, 0, 0, 0, 0},
8768         {0x8A, 0, 0, 0, 0},
8769         {0x8B, 0, 0, 0, 0},
8770         {0x8C, 0, 0, 0, 0},
8771         {0x8D, 0, 0, 0, 0},
8772         {0x8E, 0, 0, 0, 0},
8773         {0x8F, 0, 0, 0, 0},
8774         {0x90, 0, 0, 0, 0},
8775         {0x91, 0, 0, 0, 0},
8776         {0x92, 0, 0, 0, 0},
8777         {0xFFFF, 0, 0, 0, 0}
8778 };
8779
8780 radio_regs_t regs_RX_2056_A1[] = {
8781         {0x02, 0, 0, 0, 0},
8782         {0x03, 0, 0, 0, 0},
8783         {0x04, 0, 0, 0, 0},
8784         {0x05, 0, 0, 0, 0},
8785         {0x06, 0, 0, 0, 0},
8786         {0x07, 0, 0, 0, 0},
8787         {0x08, 0, 0, 0, 0},
8788         {0x09, 0, 0, 0, 0},
8789         {0x0A, 0, 0, 0, 0},
8790         {0x0B, 0, 0, 0, 0},
8791         {0x0C, 0, 0, 0, 0},
8792         {0x0D, 0, 0, 0, 0},
8793         {0x0E, 0, 0, 0, 0},
8794         {0x0F, 0, 0, 0, 0},
8795         {0x10, 0, 0, 0, 0},
8796         {0x11, 0, 0, 0, 0},
8797         {0x12, 0, 0, 0, 0},
8798         {0x13, 0, 0, 0, 0},
8799         {0x14, 0, 0, 0, 0},
8800         {0x15, 0, 0, 0, 0},
8801         {0x16, 0, 0, 0, 0},
8802         {0x17, 0, 0, 0, 0},
8803         {0x18, 0, 0, 0, 0},
8804         {0x19, 0, 0, 0, 0},
8805         {0x1A, 0, 0, 0, 0},
8806         {0x1B, 0, 0, 0, 0},
8807         {0x1C, 0, 0, 0, 0},
8808         {0x1D, 0, 0, 0, 0},
8809         {0x1E, 0, 0, 0, 0},
8810         {0x1F, 0, 0, 0, 0},
8811         {0x20, 0x3, 0x3, 0, 0},
8812         {0x21, 0, 0, 0, 0},
8813         {0x22, 0, 0, 0, 0},
8814         {0x23, 0x90, 0x90, 0, 0},
8815         {0x24, 0x55, 0x55, 0, 0},
8816         {0x25, 0x15, 0x15, 0, 0},
8817         {0x26, 0x5, 0x5, 0, 0},
8818         {0x27, 0x15, 0x15, 0, 0},
8819         {0x28, 0x5, 0x5, 0, 0},
8820         {0x29, 0x20, 0x20, 0, 0},
8821         {0x2A, 0x11, 0x11, 0, 0},
8822         {0x2B, 0x90, 0x90, 0, 0},
8823         {0x2C, 0, 0, 0, 0},
8824         {0x2D, 0x88, 0x88, 0, 0},
8825         {0x2E, 0x32, 0x32, 0, 0},
8826         {0x2F, 0x77, 0x77, 0, 0},
8827         {0x30, 0x17, 0x17, 1, 1},
8828         {0x31, 0xff, 0xff, 1, 1},
8829         {0x32, 0x20, 0x20, 0, 0},
8830         {0x33, 0, 0, 0, 0},
8831         {0x34, 0x88, 0x88, 0, 0},
8832         {0x35, 0x32, 0x32, 0, 0},
8833         {0x36, 0x77, 0x77, 0, 0},
8834         {0x37, 0x17, 0x17, 1, 1},
8835         {0x38, 0xf0, 0xf0, 1, 1},
8836         {0x39, 0x20, 0x20, 0, 0},
8837         {0x3A, 0x8, 0x8, 0, 0},
8838         {0x3B, 0x55, 0x55, 1, 1},
8839         {0x3C, 0, 0, 0, 0},
8840         {0x3D, 0x44, 0x44, 1, 1},
8841         {0x3E, 0, 0, 0, 0},
8842         {0x3F, 0x44, 0x44, 0, 0},
8843         {0x40, 0xf, 0xf, 1, 1},
8844         {0x41, 0x6, 0x6, 0, 0},
8845         {0x42, 0x4, 0x4, 0, 0},
8846         {0x43, 0x50, 0x50, 1, 1},
8847         {0x44, 0x8, 0x8, 0, 0},
8848         {0x45, 0x55, 0x55, 1, 1},
8849         {0x46, 0, 0, 0, 0},
8850         {0x47, 0x11, 0x11, 0, 0},
8851         {0x48, 0, 0, 0, 0},
8852         {0x49, 0x44, 0x44, 0, 0},
8853         {0x4A, 0x7, 0x7, 0, 0},
8854         {0x4B, 0x6, 0x6, 0, 0},
8855         {0x4C, 0x4, 0x4, 0, 0},
8856         {0x4D, 0, 0, 0, 0},
8857         {0x4E, 0, 0, 0, 0},
8858         {0x4F, 0x26, 0x26, 1, 1},
8859         {0x50, 0x26, 0x26, 1, 1},
8860         {0x51, 0xf, 0xf, 1, 1},
8861         {0x52, 0xf, 0xf, 1, 1},
8862         {0x53, 0x44, 0x44, 0, 0},
8863         {0x54, 0, 0, 0, 0},
8864         {0x55, 0, 0, 0, 0},
8865         {0x56, 0x8, 0x8, 0, 0},
8866         {0x57, 0x8, 0x8, 0, 0},
8867         {0x58, 0x7, 0x7, 0, 0},
8868         {0x59, 0x22, 0x22, 0, 0},
8869         {0x5A, 0x22, 0x22, 0, 0},
8870         {0x5B, 0x2, 0x2, 0, 0},
8871         {0x5C, 0x2f, 0x2f, 1, 1},
8872         {0x5D, 0x7, 0x7, 0, 0},
8873         {0x5E, 0x55, 0x55, 0, 0},
8874         {0x5F, 0x23, 0x23, 0, 0},
8875         {0x60, 0x41, 0x41, 0, 0},
8876         {0x61, 0x1, 0x1, 0, 0},
8877         {0x62, 0xa, 0xa, 0, 0},
8878         {0x63, 0, 0, 0, 0},
8879         {0x64, 0, 0, 0, 0},
8880         {0x65, 0, 0, 0, 0},
8881         {0x66, 0, 0, 0, 0},
8882         {0x67, 0, 0, 0, 0},
8883         {0x68, 0, 0, 0, 0},
8884         {0x69, 0, 0, 0, 0},
8885         {0x6A, 0, 0, 0, 0},
8886         {0x6B, 0xc, 0xc, 0, 0},
8887         {0x6C, 0, 0, 0, 0},
8888         {0x6D, 0, 0, 0, 0},
8889         {0x6E, 0, 0, 0, 0},
8890         {0x6F, 0, 0, 0, 0},
8891         {0x70, 0, 0, 0, 0},
8892         {0x71, 0, 0, 0, 0},
8893         {0x72, 0x22, 0x22, 0, 0},
8894         {0x73, 0x22, 0x22, 0, 0},
8895         {0x74, 0, 0, 1, 1},
8896         {0x75, 0xa, 0xa, 0, 0},
8897         {0x76, 0x1, 0x1, 0, 0},
8898         {0x77, 0x22, 0x22, 0, 0},
8899         {0x78, 0x30, 0x30, 0, 0},
8900         {0x79, 0, 0, 0, 0},
8901         {0x7A, 0, 0, 0, 0},
8902         {0x7B, 0, 0, 0, 0},
8903         {0x7C, 0, 0, 0, 0},
8904         {0x7D, 0, 0, 0, 0},
8905         {0x7E, 0, 0, 0, 0},
8906         {0x7F, 0, 0, 0, 0},
8907         {0x80, 0, 0, 0, 0},
8908         {0x81, 0, 0, 0, 0},
8909         {0x82, 0, 0, 0, 0},
8910         {0x83, 0, 0, 0, 0},
8911         {0x84, 0, 0, 0, 0},
8912         {0x85, 0, 0, 0, 0},
8913         {0x86, 0, 0, 0, 0},
8914         {0x87, 0, 0, 0, 0},
8915         {0x88, 0, 0, 0, 0},
8916         {0x89, 0, 0, 0, 0},
8917         {0x8A, 0, 0, 0, 0},
8918         {0x8B, 0, 0, 0, 0},
8919         {0x8C, 0, 0, 0, 0},
8920         {0x8D, 0, 0, 0, 0},
8921         {0x8E, 0, 0, 0, 0},
8922         {0x8F, 0, 0, 0, 0},
8923         {0x90, 0, 0, 0, 0},
8924         {0x91, 0, 0, 0, 0},
8925         {0x92, 0, 0, 0, 0},
8926         {0x93, 0, 0, 0, 0},
8927         {0x94, 0, 0, 0, 0},
8928         {0xFFFF, 0, 0, 0, 0}
8929 };
8930
8931 radio_regs_t regs_SYN_2056_rev5[] = {
8932         {0x02, 0, 0, 0, 0},
8933         {0x03, 0, 0, 0, 0},
8934         {0x04, 0, 0, 0, 0},
8935         {0x05, 0, 0, 0, 0},
8936         {0x06, 0, 0, 0, 0},
8937         {0x07, 0, 0, 0, 0},
8938         {0x08, 0, 0, 0, 0},
8939         {0x09, 0x1, 0x1, 0, 0},
8940         {0x0A, 0, 0, 0, 0},
8941         {0x0B, 0, 0, 0, 0},
8942         {0x0C, 0, 0, 0, 0},
8943         {0x0D, 0, 0, 0, 0},
8944         {0x0E, 0, 0, 0, 0},
8945         {0x0F, 0, 0, 0, 0},
8946         {0x10, 0, 0, 0, 0},
8947         {0x11, 0, 0, 0, 0},
8948         {0x12, 0, 0, 0, 0},
8949         {0x13, 0, 0, 0, 0},
8950         {0x14, 0, 0, 0, 0},
8951         {0x15, 0, 0, 0, 0},
8952         {0x16, 0, 0, 0, 0},
8953         {0x17, 0, 0, 0, 0},
8954         {0x18, 0, 0, 0, 0},
8955         {0x19, 0, 0, 0, 0},
8956         {0x1A, 0, 0, 0, 0},
8957         {0x1B, 0, 0, 0, 0},
8958         {0x1C, 0, 0, 0, 0},
8959         {0x1D, 0, 0, 0, 0},
8960         {0x1E, 0, 0, 0, 0},
8961         {0x1F, 0, 0, 0, 0},
8962         {0x20, 0, 0, 0, 0},
8963         {0x21, 0, 0, 0, 0},
8964         {0x22, 0x60, 0x60, 0, 0},
8965         {0x23, 0x6, 0x6, 0, 0},
8966         {0x24, 0xc, 0xc, 0, 0},
8967         {0x25, 0, 0, 0, 0},
8968         {0x26, 0, 0, 0, 0},
8969         {0x27, 0, 0, 0, 0},
8970         {0x28, 0x1, 0x1, 0, 0},
8971         {0x29, 0, 0, 0, 0},
8972         {0x2A, 0, 0, 0, 0},
8973         {0x2B, 0, 0, 0, 0},
8974         {0x2C, 0, 0, 0, 0},
8975         {0x2D, 0, 0, 0, 0},
8976         {0x2E, 0, 0, 0, 0},
8977         {0x2F, 0x1f, 0x1f, 0, 0},
8978         {0x30, 0x15, 0x15, 0, 0},
8979         {0x31, 0xf, 0xf, 0, 0},
8980         {0x32, 0, 0, 0, 0},
8981         {0x33, 0, 0, 0, 0},
8982         {0x34, 0, 0, 0, 0},
8983         {0x35, 0, 0, 0, 0},
8984         {0x36, 0, 0, 0, 0},
8985         {0x37, 0, 0, 0, 0},
8986         {0x38, 0, 0, 0, 0},
8987         {0x39, 0, 0, 0, 0},
8988         {0x3A, 0, 0, 0, 0},
8989         {0x3B, 0, 0, 0, 0},
8990         {0x3C, 0x13, 0x13, 0, 0},
8991         {0x3D, 0xf, 0xf, 0, 0},
8992         {0x3E, 0x18, 0x18, 0, 0},
8993         {0x3F, 0, 0, 0, 0},
8994         {0x40, 0, 0, 0, 0},
8995         {0x41, 0x20, 0x20, 0, 0},
8996         {0x42, 0x20, 0x20, 0, 0},
8997         {0x43, 0, 0, 0, 0},
8998         {0x44, 0x77, 0x77, 0, 0},
8999         {0x45, 0x7, 0x7, 0, 0},
9000         {0x46, 0x1, 0x1, 0, 0},
9001         {0x47, 0x4, 0x4, 0, 0},
9002         {0x48, 0xf, 0xf, 0, 0},
9003         {0x49, 0x30, 0x30, 0, 0},
9004         {0x4A, 0x32, 0x32, 0, 0},
9005         {0x4B, 0xd, 0xd, 0, 0},
9006         {0x4C, 0xd, 0xd, 0, 0},
9007         {0x4D, 0x4, 0x4, 0, 0},
9008         {0x4E, 0x6, 0x6, 0, 0},
9009         {0x4F, 0x1, 0x1, 0, 0},
9010         {0x50, 0x1c, 0x1c, 0, 0},
9011         {0x51, 0x2, 0x2, 0, 0},
9012         {0x52, 0x2, 0x2, 0, 0},
9013         {0x53, 0xf7, 0xf7, 1, 1},
9014         {0x54, 0xb4, 0xb4, 0, 0},
9015         {0x55, 0xd2, 0xd2, 0, 0},
9016         {0x56, 0, 0, 0, 0},
9017         {0x57, 0, 0, 0, 0},
9018         {0x58, 0x4, 0x4, 0, 0},
9019         {0x59, 0x96, 0x96, 0, 0},
9020         {0x5A, 0x3e, 0x3e, 0, 0},
9021         {0x5B, 0x3e, 0x3e, 0, 0},
9022         {0x5C, 0x13, 0x13, 0, 0},
9023         {0x5D, 0x2, 0x2, 0, 0},
9024         {0x5E, 0, 0, 0, 0},
9025         {0x5F, 0x7, 0x7, 0, 0},
9026         {0x60, 0x7, 0x7, 1, 1},
9027         {0x61, 0x8, 0x8, 0, 0},
9028         {0x62, 0x3, 0x3, 0, 0},
9029         {0x63, 0, 0, 0, 0},
9030         {0x64, 0, 0, 0, 0},
9031         {0x65, 0, 0, 0, 0},
9032         {0x66, 0, 0, 0, 0},
9033         {0x67, 0, 0, 0, 0},
9034         {0x68, 0x40, 0x40, 0, 0},
9035         {0x69, 0, 0, 0, 0},
9036         {0x6A, 0, 0, 0, 0},
9037         {0x6B, 0, 0, 0, 0},
9038         {0x6C, 0, 0, 0, 0},
9039         {0x6D, 0x1, 0x1, 0, 0},
9040         {0x6E, 0, 0, 0, 0},
9041         {0x6F, 0, 0, 0, 0},
9042         {0x70, 0x60, 0x60, 0, 0},
9043         {0x71, 0x66, 0x66, 0, 0},
9044         {0x72, 0xc, 0xc, 0, 0},
9045         {0x73, 0x66, 0x66, 0, 0},
9046         {0x74, 0x8f, 0x8f, 1, 1},
9047         {0x75, 0, 0, 0, 0},
9048         {0x76, 0xcc, 0xcc, 0, 0},
9049         {0x77, 0x1, 0x1, 0, 0},
9050         {0x78, 0x66, 0x66, 0, 0},
9051         {0x79, 0x66, 0x66, 0, 0},
9052         {0x7A, 0, 0, 0, 0},
9053         {0x7B, 0, 0, 0, 0},
9054         {0x7C, 0, 0, 0, 0},
9055         {0x7D, 0, 0, 0, 0},
9056         {0x7E, 0, 0, 0, 0},
9057         {0x7F, 0, 0, 0, 0},
9058         {0x80, 0, 0, 0, 0},
9059         {0x81, 0, 0, 0, 0},
9060         {0x82, 0, 0, 0, 0},
9061         {0x83, 0, 0, 0, 0},
9062         {0x84, 0, 0, 0, 0},
9063         {0x85, 0xff, 0xff, 0, 0},
9064         {0x86, 0, 0, 0, 0},
9065         {0x87, 0, 0, 0, 0},
9066         {0x88, 0, 0, 0, 0},
9067         {0x89, 0, 0, 0, 0},
9068         {0x8A, 0, 0, 0, 0},
9069         {0x8B, 0, 0, 0, 0},
9070         {0x8C, 0, 0, 0, 0},
9071         {0x8D, 0, 0, 0, 0},
9072         {0x8E, 0, 0, 0, 0},
9073         {0x8F, 0, 0, 0, 0},
9074         {0x90, 0, 0, 0, 0},
9075         {0x91, 0, 0, 0, 0},
9076         {0x92, 0, 0, 0, 0},
9077         {0x93, 0, 0, 0, 0},
9078         {0x94, 0, 0, 0, 0},
9079         {0x95, 0, 0, 0, 0},
9080         {0x96, 0, 0, 0, 0},
9081         {0x97, 0, 0, 0, 0},
9082         {0x98, 0, 0, 0, 0},
9083         {0x99, 0, 0, 0, 0},
9084         {0x9A, 0, 0, 0, 0},
9085         {0x9B, 0, 0, 0, 0},
9086         {0x9C, 0, 0, 0, 0},
9087         {0x9D, 0, 0, 0, 0},
9088         {0x9E, 0, 0, 0, 0},
9089         {0x9F, 0x6, 0x6, 0, 0},
9090         {0xA0, 0x66, 0x66, 0, 0},
9091         {0xA1, 0x66, 0x66, 0, 0},
9092         {0xA2, 0x66, 0x66, 0, 0},
9093         {0xA3, 0x66, 0x66, 0, 0},
9094         {0xA4, 0x66, 0x66, 0, 0},
9095         {0xA5, 0x66, 0x66, 0, 0},
9096         {0xA6, 0x66, 0x66, 0, 0},
9097         {0xA7, 0x66, 0x66, 0, 0},
9098         {0xA8, 0x66, 0x66, 0, 0},
9099         {0xA9, 0x66, 0x66, 0, 0},
9100         {0xAA, 0x66, 0x66, 0, 0},
9101         {0xAB, 0x66, 0x66, 0, 0},
9102         {0xAC, 0x66, 0x66, 0, 0},
9103         {0xAD, 0x66, 0x66, 0, 0},
9104         {0xAE, 0x66, 0x66, 0, 0},
9105         {0xAF, 0x66, 0x66, 0, 0},
9106         {0xB0, 0x66, 0x66, 0, 0},
9107         {0xB1, 0x66, 0x66, 0, 0},
9108         {0xB2, 0x66, 0x66, 0, 0},
9109         {0xB3, 0xa, 0xa, 0, 0},
9110         {0xB4, 0, 0, 0, 0},
9111         {0xB5, 0, 0, 0, 0},
9112         {0xB6, 0, 0, 0, 0},
9113         {0xFFFF, 0, 0, 0, 0}
9114 };
9115
9116 radio_regs_t regs_TX_2056_rev5[] = {
9117         {0x02, 0, 0, 0, 0},
9118         {0x03, 0, 0, 0, 0},
9119         {0x04, 0, 0, 0, 0},
9120         {0x05, 0, 0, 0, 0},
9121         {0x06, 0, 0, 0, 0},
9122         {0x07, 0, 0, 0, 0},
9123         {0x08, 0, 0, 0, 0},
9124         {0x09, 0, 0, 0, 0},
9125         {0x0A, 0, 0, 0, 0},
9126         {0x0B, 0, 0, 0, 0},
9127         {0x0C, 0, 0, 0, 0},
9128         {0x0D, 0, 0, 0, 0},
9129         {0x0E, 0, 0, 0, 0},
9130         {0x0F, 0, 0, 0, 0},
9131         {0x10, 0, 0, 0, 0},
9132         {0x11, 0, 0, 0, 0},
9133         {0x12, 0, 0, 0, 0},
9134         {0x13, 0, 0, 0, 0},
9135         {0x14, 0, 0, 0, 0},
9136         {0x15, 0, 0, 0, 0},
9137         {0x16, 0, 0, 0, 0},
9138         {0x17, 0, 0, 0, 0},
9139         {0x18, 0, 0, 0, 0},
9140         {0x19, 0, 0, 0, 0},
9141         {0x1A, 0, 0, 0, 0},
9142         {0x1B, 0, 0, 0, 0},
9143         {0x1C, 0, 0, 0, 0},
9144         {0x1D, 0, 0, 0, 0},
9145         {0x1E, 0, 0, 0, 0},
9146         {0x1F, 0, 0, 0, 0},
9147         {0x20, 0, 0, 0, 0},
9148         {0x21, 0x88, 0x88, 0, 0},
9149         {0x22, 0x88, 0x88, 0, 0},
9150         {0x23, 0x88, 0x88, 0, 0},
9151         {0x24, 0x88, 0x88, 0, 0},
9152         {0x25, 0xc, 0xc, 0, 0},
9153         {0x26, 0, 0, 0, 0},
9154         {0x27, 0x3, 0x3, 0, 0},
9155         {0x28, 0, 0, 0, 0},
9156         {0x29, 0x3, 0x3, 0, 0},
9157         {0x2A, 0x37, 0x37, 0, 0},
9158         {0x2B, 0x3, 0x3, 0, 0},
9159         {0x2C, 0, 0, 0, 0},
9160         {0x2D, 0, 0, 0, 0},
9161         {0x2E, 0x1, 0x1, 0, 0},
9162         {0x2F, 0x1, 0x1, 0, 0},
9163         {0x30, 0, 0, 0, 0},
9164         {0x31, 0, 0, 0, 0},
9165         {0x32, 0, 0, 0, 0},
9166         {0x33, 0x11, 0x11, 0, 0},
9167         {0x34, 0x11, 0x11, 0, 0},
9168         {0x35, 0, 0, 0, 0},
9169         {0x36, 0, 0, 0, 0},
9170         {0x37, 0x3, 0x3, 0, 0},
9171         {0x38, 0xf, 0xf, 0, 0},
9172         {0x39, 0, 0, 0, 0},
9173         {0x3A, 0x2d, 0x2d, 0, 0},
9174         {0x3B, 0, 0, 0, 0},
9175         {0x3C, 0x6e, 0x6e, 0, 0},
9176         {0x3D, 0xf0, 0xf0, 1, 1},
9177         {0x3E, 0, 0, 0, 0},
9178         {0x3F, 0, 0, 0, 0},
9179         {0x40, 0, 0, 0, 0},
9180         {0x41, 0x3, 0x3, 0, 0},
9181         {0x42, 0x3, 0x3, 0, 0},
9182         {0x43, 0, 0, 0, 0},
9183         {0x44, 0x1e, 0x1e, 0, 0},
9184         {0x45, 0, 0, 0, 0},
9185         {0x46, 0x6e, 0x6e, 0, 0},
9186         {0x47, 0xf0, 0xf0, 1, 1},
9187         {0x48, 0, 0, 0, 0},
9188         {0x49, 0x2, 0x2, 0, 0},
9189         {0x4A, 0xff, 0xff, 1, 1},
9190         {0x4B, 0xc, 0xc, 0, 0},
9191         {0x4C, 0, 0, 0, 0},
9192         {0x4D, 0x38, 0x38, 0, 0},
9193         {0x4E, 0x70, 0x70, 1, 1},
9194         {0x4F, 0x2, 0x2, 0, 0},
9195         {0x50, 0x88, 0x88, 0, 0},
9196         {0x51, 0xc, 0xc, 0, 0},
9197         {0x52, 0, 0, 0, 0},
9198         {0x53, 0x8, 0x8, 0, 0},
9199         {0x54, 0x70, 0x70, 1, 1},
9200         {0x55, 0x2, 0x2, 0, 0},
9201         {0x56, 0xff, 0xff, 1, 1},
9202         {0x57, 0, 0, 0, 0},
9203         {0x58, 0x83, 0x83, 0, 0},
9204         {0x59, 0x77, 0x77, 1, 1},
9205         {0x5A, 0, 0, 0, 0},
9206         {0x5B, 0x2, 0x2, 0, 0},
9207         {0x5C, 0x88, 0x88, 0, 0},
9208         {0x5D, 0, 0, 0, 0},
9209         {0x5E, 0x8, 0x8, 0, 0},
9210         {0x5F, 0x77, 0x77, 1, 1},
9211         {0x60, 0x1, 0x1, 0, 0},
9212         {0x61, 0, 0, 0, 0},
9213         {0x62, 0x7, 0x7, 0, 0},
9214         {0x63, 0, 0, 0, 0},
9215         {0x64, 0x7, 0x7, 0, 0},
9216         {0x65, 0, 0, 0, 0},
9217         {0x66, 0, 0, 0, 0},
9218         {0x67, 0, 0, 1, 1},
9219         {0x68, 0, 0, 0, 0},
9220         {0x69, 0xa, 0xa, 0, 0},
9221         {0x6A, 0, 0, 0, 0},
9222         {0x6B, 0, 0, 0, 0},
9223         {0x6C, 0, 0, 0, 0},
9224         {0x6D, 0, 0, 0, 0},
9225         {0x6E, 0, 0, 0, 0},
9226         {0x6F, 0, 0, 0, 0},
9227         {0x70, 0, 0, 0, 0},
9228         {0x71, 0x2, 0x2, 0, 0},
9229         {0x72, 0, 0, 0, 0},
9230         {0x73, 0, 0, 0, 0},
9231         {0x74, 0xe, 0xe, 0, 0},
9232         {0x75, 0xe, 0xe, 0, 0},
9233         {0x76, 0xe, 0xe, 0, 0},
9234         {0x77, 0x13, 0x13, 0, 0},
9235         {0x78, 0x13, 0x13, 0, 0},
9236         {0x79, 0x1b, 0x1b, 0, 0},
9237         {0x7A, 0x1b, 0x1b, 0, 0},
9238         {0x7B, 0x55, 0x55, 0, 0},
9239         {0x7C, 0x5b, 0x5b, 0, 0},
9240         {0x7D, 0, 0, 0, 0},
9241         {0x7E, 0, 0, 0, 0},
9242         {0x7F, 0, 0, 0, 0},
9243         {0x80, 0, 0, 0, 0},
9244         {0x81, 0, 0, 0, 0},
9245         {0x82, 0, 0, 0, 0},
9246         {0x83, 0, 0, 0, 0},
9247         {0x84, 0, 0, 0, 0},
9248         {0x85, 0, 0, 0, 0},
9249         {0x86, 0, 0, 0, 0},
9250         {0x87, 0, 0, 0, 0},
9251         {0x88, 0, 0, 0, 0},
9252         {0x89, 0, 0, 0, 0},
9253         {0x8A, 0, 0, 0, 0},
9254         {0x8B, 0, 0, 0, 0},
9255         {0x8C, 0, 0, 0, 0},
9256         {0x8D, 0, 0, 0, 0},
9257         {0x8E, 0, 0, 0, 0},
9258         {0x8F, 0, 0, 0, 0},
9259         {0x90, 0, 0, 0, 0},
9260         {0x91, 0, 0, 0, 0},
9261         {0x92, 0, 0, 0, 0},
9262         {0x93, 0x70, 0x70, 0, 0},
9263         {0x94, 0x70, 0x70, 0, 0},
9264         {0x95, 0x71, 0x71, 1, 1},
9265         {0x96, 0x71, 0x71, 1, 1},
9266         {0x97, 0x72, 0x72, 1, 1},
9267         {0x98, 0x73, 0x73, 1, 1},
9268         {0x99, 0x74, 0x74, 1, 1},
9269         {0x9A, 0x75, 0x75, 1, 1},
9270         {0xFFFF, 0, 0, 0, 0}
9271 };
9272
9273 radio_regs_t regs_RX_2056_rev5[] = {
9274         {0x02, 0, 0, 0, 0},
9275         {0x03, 0, 0, 0, 0},
9276         {0x04, 0, 0, 0, 0},
9277         {0x05, 0, 0, 0, 0},
9278         {0x06, 0, 0, 0, 0},
9279         {0x07, 0, 0, 0, 0},
9280         {0x08, 0, 0, 0, 0},
9281         {0x09, 0, 0, 0, 0},
9282         {0x0A, 0, 0, 0, 0},
9283         {0x0B, 0, 0, 0, 0},
9284         {0x0C, 0, 0, 0, 0},
9285         {0x0D, 0, 0, 0, 0},
9286         {0x0E, 0, 0, 0, 0},
9287         {0x0F, 0, 0, 0, 0},
9288         {0x10, 0, 0, 0, 0},
9289         {0x11, 0, 0, 0, 0},
9290         {0x12, 0, 0, 0, 0},
9291         {0x13, 0, 0, 0, 0},
9292         {0x14, 0, 0, 0, 0},
9293         {0x15, 0, 0, 0, 0},
9294         {0x16, 0, 0, 0, 0},
9295         {0x17, 0, 0, 0, 0},
9296         {0x18, 0, 0, 0, 0},
9297         {0x19, 0, 0, 0, 0},
9298         {0x1A, 0, 0, 0, 0},
9299         {0x1B, 0, 0, 0, 0},
9300         {0x1C, 0, 0, 0, 0},
9301         {0x1D, 0, 0, 0, 0},
9302         {0x1E, 0, 0, 0, 0},
9303         {0x1F, 0, 0, 0, 0},
9304         {0x20, 0x3, 0x3, 0, 0},
9305         {0x21, 0, 0, 0, 0},
9306         {0x22, 0, 0, 0, 0},
9307         {0x23, 0x90, 0x90, 0, 0},
9308         {0x24, 0x55, 0x55, 0, 0},
9309         {0x25, 0x15, 0x15, 0, 0},
9310         {0x26, 0x5, 0x5, 0, 0},
9311         {0x27, 0x15, 0x15, 0, 0},
9312         {0x28, 0x5, 0x5, 0, 0},
9313         {0x29, 0x20, 0x20, 0, 0},
9314         {0x2A, 0x11, 0x11, 0, 0},
9315         {0x2B, 0x90, 0x90, 0, 0},
9316         {0x2C, 0, 0, 0, 0},
9317         {0x2D, 0x88, 0x88, 0, 0},
9318         {0x2E, 0x32, 0x32, 0, 0},
9319         {0x2F, 0x77, 0x77, 0, 0},
9320         {0x30, 0x17, 0x17, 1, 1},
9321         {0x31, 0xff, 0xff, 1, 1},
9322         {0x32, 0x20, 0x20, 0, 0},
9323         {0x33, 0, 0, 0, 0},
9324         {0x34, 0x88, 0x88, 0, 0},
9325         {0x35, 0x32, 0x32, 0, 0},
9326         {0x36, 0x77, 0x77, 0, 0},
9327         {0x37, 0x17, 0x17, 1, 1},
9328         {0x38, 0xf0, 0xf0, 1, 1},
9329         {0x39, 0x20, 0x20, 0, 0},
9330         {0x3A, 0x8, 0x8, 0, 0},
9331         {0x3B, 0x55, 0x55, 1, 1},
9332         {0x3C, 0, 0, 0, 0},
9333         {0x3D, 0x88, 0x88, 1, 1},
9334         {0x3E, 0, 0, 0, 0},
9335         {0x3F, 0, 0, 1, 1},
9336         {0x40, 0x7, 0x7, 1, 1},
9337         {0x41, 0x6, 0x6, 0, 0},
9338         {0x42, 0x4, 0x4, 0, 0},
9339         {0x43, 0, 0, 0, 0},
9340         {0x44, 0x8, 0x8, 0, 0},
9341         {0x45, 0x55, 0x55, 1, 1},
9342         {0x46, 0, 0, 0, 0},
9343         {0x47, 0x11, 0x11, 0, 0},
9344         {0x48, 0, 0, 0, 0},
9345         {0x49, 0, 0, 1, 1},
9346         {0x4A, 0x7, 0x7, 0, 0},
9347         {0x4B, 0x6, 0x6, 0, 0},
9348         {0x4C, 0x4, 0x4, 0, 0},
9349         {0x4D, 0, 0, 0, 0},
9350         {0x4E, 0, 0, 0, 0},
9351         {0x4F, 0x26, 0x26, 1, 1},
9352         {0x50, 0x26, 0x26, 1, 1},
9353         {0x51, 0xf, 0xf, 1, 1},
9354         {0x52, 0xf, 0xf, 1, 1},
9355         {0x53, 0x44, 0x44, 0, 0},
9356         {0x54, 0, 0, 0, 0},
9357         {0x55, 0, 0, 0, 0},
9358         {0x56, 0x8, 0x8, 0, 0},
9359         {0x57, 0x8, 0x8, 0, 0},
9360         {0x58, 0x7, 0x7, 0, 0},
9361         {0x59, 0x22, 0x22, 0, 0},
9362         {0x5A, 0x22, 0x22, 0, 0},
9363         {0x5B, 0x2, 0x2, 0, 0},
9364         {0x5C, 0x4, 0x4, 1, 1},
9365         {0x5D, 0x7, 0x7, 0, 0},
9366         {0x5E, 0x55, 0x55, 0, 0},
9367         {0x5F, 0x23, 0x23, 0, 0},
9368         {0x60, 0x41, 0x41, 0, 0},
9369         {0x61, 0x1, 0x1, 0, 0},
9370         {0x62, 0xa, 0xa, 0, 0},
9371         {0x63, 0, 0, 0, 0},
9372         {0x64, 0, 0, 0, 0},
9373         {0x65, 0, 0, 0, 0},
9374         {0x66, 0, 0, 0, 0},
9375         {0x67, 0, 0, 0, 0},
9376         {0x68, 0, 0, 0, 0},
9377         {0x69, 0, 0, 0, 0},
9378         {0x6A, 0, 0, 0, 0},
9379         {0x6B, 0xc, 0xc, 0, 0},
9380         {0x6C, 0, 0, 0, 0},
9381         {0x6D, 0, 0, 0, 0},
9382         {0x6E, 0, 0, 0, 0},
9383         {0x6F, 0, 0, 0, 0},
9384         {0x70, 0, 0, 0, 0},
9385         {0x71, 0, 0, 0, 0},
9386         {0x72, 0x22, 0x22, 0, 0},
9387         {0x73, 0x22, 0x22, 0, 0},
9388         {0x74, 0, 0, 1, 1},
9389         {0x75, 0xa, 0xa, 0, 0},
9390         {0x76, 0x1, 0x1, 0, 0},
9391         {0x77, 0x22, 0x22, 0, 0},
9392         {0x78, 0x30, 0x30, 0, 0},
9393         {0x79, 0, 0, 0, 0},
9394         {0x7A, 0, 0, 0, 0},
9395         {0x7B, 0, 0, 0, 0},
9396         {0x7C, 0, 0, 0, 0},
9397         {0x7D, 0, 0, 0, 0},
9398         {0x7E, 0, 0, 0, 0},
9399         {0x7F, 0, 0, 0, 0},
9400         {0x80, 0, 0, 0, 0},
9401         {0x81, 0, 0, 0, 0},
9402         {0x82, 0, 0, 0, 0},
9403         {0x83, 0, 0, 0, 0},
9404         {0x84, 0, 0, 0, 0},
9405         {0x85, 0, 0, 0, 0},
9406         {0x86, 0, 0, 0, 0},
9407         {0x87, 0, 0, 0, 0},
9408         {0x88, 0, 0, 0, 0},
9409         {0x89, 0, 0, 0, 0},
9410         {0x8A, 0, 0, 0, 0},
9411         {0x8B, 0, 0, 0, 0},
9412         {0x8C, 0, 0, 0, 0},
9413         {0x8D, 0, 0, 0, 0},
9414         {0x8E, 0, 0, 0, 0},
9415         {0x8F, 0, 0, 0, 0},
9416         {0x90, 0, 0, 0, 0},
9417         {0x91, 0, 0, 0, 0},
9418         {0x92, 0, 0, 0, 0},
9419         {0x93, 0, 0, 0, 0},
9420         {0x94, 0, 0, 0, 0},
9421         {0xFFFF, 0, 0, 0, 0}
9422 };
9423
9424 radio_regs_t regs_SYN_2056_rev6[] = {
9425         {0x02, 0, 0, 0, 0},
9426         {0x03, 0, 0, 0, 0},
9427         {0x04, 0, 0, 0, 0},
9428         {0x05, 0, 0, 0, 0},
9429         {0x06, 0, 0, 0, 0},
9430         {0x07, 0, 0, 0, 0},
9431         {0x08, 0, 0, 0, 0},
9432         {0x09, 0x1, 0x1, 0, 0},
9433         {0x0A, 0, 0, 0, 0},
9434         {0x0B, 0, 0, 0, 0},
9435         {0x0C, 0, 0, 0, 0},
9436         {0x0D, 0, 0, 0, 0},
9437         {0x0E, 0, 0, 0, 0},
9438         {0x0F, 0, 0, 0, 0},
9439         {0x10, 0, 0, 0, 0},
9440         {0x11, 0, 0, 0, 0},
9441         {0x12, 0, 0, 0, 0},
9442         {0x13, 0, 0, 0, 0},
9443         {0x14, 0, 0, 0, 0},
9444         {0x15, 0, 0, 0, 0},
9445         {0x16, 0, 0, 0, 0},
9446         {0x17, 0, 0, 0, 0},
9447         {0x18, 0, 0, 0, 0},
9448         {0x19, 0, 0, 0, 0},
9449         {0x1A, 0, 0, 0, 0},
9450         {0x1B, 0, 0, 0, 0},
9451         {0x1C, 0, 0, 0, 0},
9452         {0x1D, 0, 0, 0, 0},
9453         {0x1E, 0, 0, 0, 0},
9454         {0x1F, 0, 0, 0, 0},
9455         {0x20, 0, 0, 0, 0},
9456         {0x21, 0, 0, 0, 0},
9457         {0x22, 0x60, 0x60, 0, 0},
9458         {0x23, 0x6, 0x6, 0, 0},
9459         {0x24, 0xc, 0xc, 0, 0},
9460         {0x25, 0, 0, 0, 0},
9461         {0x26, 0, 0, 0, 0},
9462         {0x27, 0, 0, 0, 0},
9463         {0x28, 0x1, 0x1, 0, 0},
9464         {0x29, 0, 0, 0, 0},
9465         {0x2A, 0, 0, 0, 0},
9466         {0x2B, 0, 0, 0, 0},
9467         {0x2C, 0, 0, 0, 0},
9468         {0x2D, 0, 0, 0, 0},
9469         {0x2E, 0, 0, 0, 0},
9470         {0x2F, 0x1f, 0x1f, 0, 0},
9471         {0x30, 0x15, 0x15, 0, 0},
9472         {0x31, 0xf, 0xf, 0, 0},
9473         {0x32, 0, 0, 0, 0},
9474         {0x33, 0, 0, 0, 0},
9475         {0x34, 0, 0, 0, 0},
9476         {0x35, 0, 0, 0, 0},
9477         {0x36, 0, 0, 0, 0},
9478         {0x37, 0, 0, 0, 0},
9479         {0x38, 0, 0, 0, 0},
9480         {0x39, 0, 0, 0, 0},
9481         {0x3A, 0, 0, 0, 0},
9482         {0x3B, 0, 0, 0, 0},
9483         {0x3C, 0x13, 0x13, 0, 0},
9484         {0x3D, 0xf, 0xf, 0, 0},
9485         {0x3E, 0x18, 0x18, 0, 0},
9486         {0x3F, 0, 0, 0, 0},
9487         {0x40, 0, 0, 0, 0},
9488         {0x41, 0x20, 0x20, 0, 0},
9489         {0x42, 0x20, 0x20, 0, 0},
9490         {0x43, 0, 0, 0, 0},
9491         {0x44, 0x77, 0x77, 0, 0},
9492         {0x45, 0x7, 0x7, 0, 0},
9493         {0x46, 0x1, 0x1, 0, 0},
9494         {0x47, 0x4, 0x4, 0, 0},
9495         {0x48, 0xf, 0xf, 0, 0},
9496         {0x49, 0x30, 0x30, 0, 0},
9497         {0x4A, 0x32, 0x32, 0, 0},
9498         {0x4B, 0xd, 0xd, 0, 0},
9499         {0x4C, 0xd, 0xd, 0, 0},
9500         {0x4D, 0x4, 0x4, 0, 0},
9501         {0x4E, 0x6, 0x6, 0, 0},
9502         {0x4F, 0x1, 0x1, 0, 0},
9503         {0x50, 0x1c, 0x1c, 0, 0},
9504         {0x51, 0x2, 0x2, 0, 0},
9505         {0x52, 0x2, 0x2, 0, 0},
9506         {0x53, 0xf7, 0xf7, 1, 1},
9507         {0x54, 0xb4, 0xb4, 0, 0},
9508         {0x55, 0xd2, 0xd2, 0, 0},
9509         {0x56, 0, 0, 0, 0},
9510         {0x57, 0, 0, 0, 0},
9511         {0x58, 0x4, 0x4, 0, 0},
9512         {0x59, 0x96, 0x96, 0, 0},
9513         {0x5A, 0x3e, 0x3e, 0, 0},
9514         {0x5B, 0x3e, 0x3e, 0, 0},
9515         {0x5C, 0x13, 0x13, 0, 0},
9516         {0x5D, 0x2, 0x2, 0, 0},
9517         {0x5E, 0, 0, 0, 0},
9518         {0x5F, 0x7, 0x7, 0, 0},
9519         {0x60, 0x7, 0x7, 1, 1},
9520         {0x61, 0x8, 0x8, 0, 0},
9521         {0x62, 0x3, 0x3, 0, 0},
9522         {0x63, 0, 0, 0, 0},
9523         {0x64, 0, 0, 0, 0},
9524         {0x65, 0, 0, 0, 0},
9525         {0x66, 0, 0, 0, 0},
9526         {0x67, 0, 0, 0, 0},
9527         {0x68, 0x40, 0x40, 0, 0},
9528         {0x69, 0, 0, 0, 0},
9529         {0x6A, 0, 0, 0, 0},
9530         {0x6B, 0, 0, 0, 0},
9531         {0x6C, 0, 0, 0, 0},
9532         {0x6D, 0x1, 0x1, 0, 0},
9533         {0x6E, 0, 0, 0, 0},
9534         {0x6F, 0, 0, 0, 0},
9535         {0x70, 0x60, 0x60, 0, 0},
9536         {0x71, 0x66, 0x66, 0, 0},
9537         {0x72, 0xc, 0xc, 0, 0},
9538         {0x73, 0x66, 0x66, 0, 0},
9539         {0x74, 0x8f, 0x8f, 1, 1},
9540         {0x75, 0, 0, 0, 0},
9541         {0x76, 0xcc, 0xcc, 0, 0},
9542         {0x77, 0x1, 0x1, 0, 0},
9543         {0x78, 0x66, 0x66, 0, 0},
9544         {0x79, 0x66, 0x66, 0, 0},
9545         {0x7A, 0, 0, 0, 0},
9546         {0x7B, 0, 0, 0, 0},
9547         {0x7C, 0, 0, 0, 0},
9548         {0x7D, 0, 0, 0, 0},
9549         {0x7E, 0, 0, 0, 0},
9550         {0x7F, 0, 0, 0, 0},
9551         {0x80, 0, 0, 0, 0},
9552         {0x81, 0, 0, 0, 0},
9553         {0x82, 0, 0, 0, 0},
9554         {0x83, 0, 0, 0, 0},
9555         {0x84, 0, 0, 0, 0},
9556         {0x85, 0xff, 0xff, 0, 0},
9557         {0x86, 0, 0, 0, 0},
9558         {0x87, 0, 0, 0, 0},
9559         {0x88, 0, 0, 0, 0},
9560         {0x89, 0, 0, 0, 0},
9561         {0x8A, 0, 0, 0, 0},
9562         {0x8B, 0, 0, 0, 0},
9563         {0x8C, 0, 0, 0, 0},
9564         {0x8D, 0, 0, 0, 0},
9565         {0x8E, 0, 0, 0, 0},
9566         {0x8F, 0, 0, 0, 0},
9567         {0x90, 0, 0, 0, 0},
9568         {0x91, 0, 0, 0, 0},
9569         {0x92, 0, 0, 0, 0},
9570         {0x93, 0, 0, 0, 0},
9571         {0x94, 0, 0, 0, 0},
9572         {0x95, 0, 0, 0, 0},
9573         {0x96, 0, 0, 0, 0},
9574         {0x97, 0, 0, 0, 0},
9575         {0x98, 0, 0, 0, 0},
9576         {0x99, 0, 0, 0, 0},
9577         {0x9A, 0, 0, 0, 0},
9578         {0x9B, 0, 0, 0, 0},
9579         {0x9C, 0, 0, 0, 0},
9580         {0x9D, 0, 0, 0, 0},
9581         {0x9E, 0, 0, 0, 0},
9582         {0x9F, 0x6, 0x6, 0, 0},
9583         {0xA0, 0x66, 0x66, 0, 0},
9584         {0xA1, 0x66, 0x66, 0, 0},
9585         {0xA2, 0x66, 0x66, 0, 0},
9586         {0xA3, 0x66, 0x66, 0, 0},
9587         {0xA4, 0x66, 0x66, 0, 0},
9588         {0xA5, 0x66, 0x66, 0, 0},
9589         {0xA6, 0x66, 0x66, 0, 0},
9590         {0xA7, 0x66, 0x66, 0, 0},
9591         {0xA8, 0x66, 0x66, 0, 0},
9592         {0xA9, 0x66, 0x66, 0, 0},
9593         {0xAA, 0x66, 0x66, 0, 0},
9594         {0xAB, 0x66, 0x66, 0, 0},
9595         {0xAC, 0x66, 0x66, 0, 0},
9596         {0xAD, 0x66, 0x66, 0, 0},
9597         {0xAE, 0x66, 0x66, 0, 0},
9598         {0xAF, 0x66, 0x66, 0, 0},
9599         {0xB0, 0x66, 0x66, 0, 0},
9600         {0xB1, 0x66, 0x66, 0, 0},
9601         {0xB2, 0x66, 0x66, 0, 0},
9602         {0xB3, 0xa, 0xa, 0, 0},
9603         {0xB4, 0, 0, 0, 0},
9604         {0xB5, 0, 0, 0, 0},
9605         {0xB6, 0, 0, 0, 0},
9606         {0xFFFF, 0, 0, 0, 0}
9607 };
9608
9609 radio_regs_t regs_TX_2056_rev6[] = {
9610         {0x02, 0, 0, 0, 0},
9611         {0x03, 0, 0, 0, 0},
9612         {0x04, 0, 0, 0, 0},
9613         {0x05, 0, 0, 0, 0},
9614         {0x06, 0, 0, 0, 0},
9615         {0x07, 0, 0, 0, 0},
9616         {0x08, 0, 0, 0, 0},
9617         {0x09, 0, 0, 0, 0},
9618         {0x0A, 0, 0, 0, 0},
9619         {0x0B, 0, 0, 0, 0},
9620         {0x0C, 0, 0, 0, 0},
9621         {0x0D, 0, 0, 0, 0},
9622         {0x0E, 0, 0, 0, 0},
9623         {0x0F, 0, 0, 0, 0},
9624         {0x10, 0, 0, 0, 0},
9625         {0x11, 0, 0, 0, 0},
9626         {0x12, 0, 0, 0, 0},
9627         {0x13, 0, 0, 0, 0},
9628         {0x14, 0, 0, 0, 0},
9629         {0x15, 0, 0, 0, 0},
9630         {0x16, 0, 0, 0, 0},
9631         {0x17, 0, 0, 0, 0},
9632         {0x18, 0, 0, 0, 0},
9633         {0x19, 0, 0, 0, 0},
9634         {0x1A, 0, 0, 0, 0},
9635         {0x1B, 0, 0, 0, 0},
9636         {0x1C, 0, 0, 0, 0},
9637         {0x1D, 0, 0, 0, 0},
9638         {0x1E, 0, 0, 0, 0},
9639         {0x1F, 0, 0, 0, 0},
9640         {0x20, 0, 0, 0, 0},
9641         {0x21, 0x88, 0x88, 0, 0},
9642         {0x22, 0x88, 0x88, 0, 0},
9643         {0x23, 0x88, 0x88, 0, 0},
9644         {0x24, 0x88, 0x88, 0, 0},
9645         {0x25, 0xc, 0xc, 0, 0},
9646         {0x26, 0, 0, 0, 0},
9647         {0x27, 0x3, 0x3, 0, 0},
9648         {0x28, 0, 0, 0, 0},
9649         {0x29, 0x3, 0x3, 0, 0},
9650         {0x2A, 0x37, 0x37, 0, 0},
9651         {0x2B, 0x3, 0x3, 0, 0},
9652         {0x2C, 0, 0, 0, 0},
9653         {0x2D, 0, 0, 0, 0},
9654         {0x2E, 0x1, 0x1, 0, 0},
9655         {0x2F, 0x1, 0x1, 0, 0},
9656         {0x30, 0, 0, 0, 0},
9657         {0x31, 0, 0, 0, 0},
9658         {0x32, 0, 0, 0, 0},
9659         {0x33, 0x11, 0x11, 0, 0},
9660         {0x34, 0xee, 0xee, 1, 1},
9661         {0x35, 0, 0, 0, 0},
9662         {0x36, 0, 0, 0, 0},
9663         {0x37, 0x3, 0x3, 0, 0},
9664         {0x38, 0x50, 0x50, 1, 1},
9665         {0x39, 0, 0, 0, 0},
9666         {0x3A, 0x50, 0x50, 1, 1},
9667         {0x3B, 0, 0, 0, 0},
9668         {0x3C, 0x6e, 0x6e, 0, 0},
9669         {0x3D, 0xf0, 0xf0, 1, 1},
9670         {0x3E, 0, 0, 0, 0},
9671         {0x3F, 0, 0, 0, 0},
9672         {0x40, 0, 0, 0, 0},
9673         {0x41, 0x3, 0x3, 0, 0},
9674         {0x42, 0x3, 0x3, 0, 0},
9675         {0x43, 0, 0, 0, 0},
9676         {0x44, 0x1e, 0x1e, 0, 0},
9677         {0x45, 0, 0, 0, 0},
9678         {0x46, 0x6e, 0x6e, 0, 0},
9679         {0x47, 0xf0, 0xf0, 1, 1},
9680         {0x48, 0, 0, 0, 0},
9681         {0x49, 0x2, 0x2, 0, 0},
9682         {0x4A, 0xff, 0xff, 1, 1},
9683         {0x4B, 0xc, 0xc, 0, 0},
9684         {0x4C, 0, 0, 0, 0},
9685         {0x4D, 0x38, 0x38, 0, 0},
9686         {0x4E, 0x70, 0x70, 1, 1},
9687         {0x4F, 0x2, 0x2, 0, 0},
9688         {0x50, 0x88, 0x88, 0, 0},
9689         {0x51, 0xc, 0xc, 0, 0},
9690         {0x52, 0, 0, 0, 0},
9691         {0x53, 0x8, 0x8, 0, 0},
9692         {0x54, 0x70, 0x70, 1, 1},
9693         {0x55, 0x2, 0x2, 0, 0},
9694         {0x56, 0xff, 0xff, 1, 1},
9695         {0x57, 0, 0, 0, 0},
9696         {0x58, 0x83, 0x83, 0, 0},
9697         {0x59, 0x77, 0x77, 1, 1},
9698         {0x5A, 0, 0, 0, 0},
9699         {0x5B, 0x2, 0x2, 0, 0},
9700         {0x5C, 0x88, 0x88, 0, 0},
9701         {0x5D, 0, 0, 0, 0},
9702         {0x5E, 0x8, 0x8, 0, 0},
9703         {0x5F, 0x77, 0x77, 1, 1},
9704         {0x60, 0x1, 0x1, 0, 0},
9705         {0x61, 0, 0, 0, 0},
9706         {0x62, 0x7, 0x7, 0, 0},
9707         {0x63, 0, 0, 0, 0},
9708         {0x64, 0x7, 0x7, 0, 0},
9709         {0x65, 0, 0, 0, 0},
9710         {0x66, 0, 0, 0, 0},
9711         {0x67, 0, 0, 1, 1},
9712         {0x68, 0, 0, 0, 0},
9713         {0x69, 0xa, 0xa, 0, 0},
9714         {0x6A, 0, 0, 0, 0},
9715         {0x6B, 0, 0, 0, 0},
9716         {0x6C, 0, 0, 0, 0},
9717         {0x6D, 0, 0, 0, 0},
9718         {0x6E, 0, 0, 0, 0},
9719         {0x6F, 0, 0, 0, 0},
9720         {0x70, 0, 0, 0, 0},
9721         {0x71, 0x2, 0x2, 0, 0},
9722         {0x72, 0, 0, 0, 0},
9723         {0x73, 0, 0, 0, 0},
9724         {0x74, 0xe, 0xe, 0, 0},
9725         {0x75, 0xe, 0xe, 0, 0},
9726         {0x76, 0xe, 0xe, 0, 0},
9727         {0x77, 0x13, 0x13, 0, 0},
9728         {0x78, 0x13, 0x13, 0, 0},
9729         {0x79, 0x1b, 0x1b, 0, 0},
9730         {0x7A, 0x1b, 0x1b, 0, 0},
9731         {0x7B, 0x55, 0x55, 0, 0},
9732         {0x7C, 0x5b, 0x5b, 0, 0},
9733         {0x7D, 0x30, 0x30, 1, 1},
9734         {0x7E, 0, 0, 0, 0},
9735         {0x7F, 0, 0, 0, 0},
9736         {0x80, 0, 0, 0, 0},
9737         {0x81, 0, 0, 0, 0},
9738         {0x82, 0, 0, 0, 0},
9739         {0x83, 0, 0, 0, 0},
9740         {0x84, 0, 0, 0, 0},
9741         {0x85, 0, 0, 0, 0},
9742         {0x86, 0, 0, 0, 0},
9743         {0x87, 0, 0, 0, 0},
9744         {0x88, 0, 0, 0, 0},
9745         {0x89, 0, 0, 0, 0},
9746         {0x8A, 0, 0, 0, 0},
9747         {0x8B, 0, 0, 0, 0},
9748         {0x8C, 0, 0, 0, 0},
9749         {0x8D, 0, 0, 0, 0},
9750         {0x8E, 0, 0, 0, 0},
9751         {0x8F, 0, 0, 0, 0},
9752         {0x90, 0, 0, 0, 0},
9753         {0x91, 0, 0, 0, 0},
9754         {0x92, 0, 0, 0, 0},
9755         {0x93, 0x70, 0x70, 0, 0},
9756         {0x94, 0x70, 0x70, 0, 0},
9757         {0x95, 0x70, 0x70, 0, 0},
9758         {0x96, 0x70, 0x70, 0, 0},
9759         {0x97, 0x70, 0x70, 0, 0},
9760         {0x98, 0x70, 0x70, 0, 0},
9761         {0x99, 0x70, 0x70, 0, 0},
9762         {0x9A, 0x70, 0x70, 0, 0},
9763         {0xFFFF, 0, 0, 0, 0}
9764 };
9765
9766 radio_regs_t regs_RX_2056_rev6[] = {
9767         {0x02, 0, 0, 0, 0},
9768         {0x03, 0, 0, 0, 0},
9769         {0x04, 0, 0, 0, 0},
9770         {0x05, 0, 0, 0, 0},
9771         {0x06, 0, 0, 0, 0},
9772         {0x07, 0, 0, 0, 0},
9773         {0x08, 0, 0, 0, 0},
9774         {0x09, 0, 0, 0, 0},
9775         {0x0A, 0, 0, 0, 0},
9776         {0x0B, 0, 0, 0, 0},
9777         {0x0C, 0, 0, 0, 0},
9778         {0x0D, 0, 0, 0, 0},
9779         {0x0E, 0, 0, 0, 0},
9780         {0x0F, 0, 0, 0, 0},
9781         {0x10, 0, 0, 0, 0},
9782         {0x11, 0, 0, 0, 0},
9783         {0x12, 0, 0, 0, 0},
9784         {0x13, 0, 0, 0, 0},
9785         {0x14, 0, 0, 0, 0},
9786         {0x15, 0, 0, 0, 0},
9787         {0x16, 0, 0, 0, 0},
9788         {0x17, 0, 0, 0, 0},
9789         {0x18, 0, 0, 0, 0},
9790         {0x19, 0, 0, 0, 0},
9791         {0x1A, 0, 0, 0, 0},
9792         {0x1B, 0, 0, 0, 0},
9793         {0x1C, 0, 0, 0, 0},
9794         {0x1D, 0, 0, 0, 0},
9795         {0x1E, 0, 0, 0, 0},
9796         {0x1F, 0, 0, 0, 0},
9797         {0x20, 0x3, 0x3, 0, 0},
9798         {0x21, 0, 0, 0, 0},
9799         {0x22, 0, 0, 0, 0},
9800         {0x23, 0x90, 0x90, 0, 0},
9801         {0x24, 0x55, 0x55, 0, 0},
9802         {0x25, 0x15, 0x15, 0, 0},
9803         {0x26, 0x5, 0x5, 0, 0},
9804         {0x27, 0x15, 0x15, 0, 0},
9805         {0x28, 0x5, 0x5, 0, 0},
9806         {0x29, 0x20, 0x20, 0, 0},
9807         {0x2A, 0x11, 0x11, 0, 0},
9808         {0x2B, 0x90, 0x90, 0, 0},
9809         {0x2C, 0, 0, 0, 0},
9810         {0x2D, 0x88, 0x88, 0, 0},
9811         {0x2E, 0x32, 0x32, 0, 0},
9812         {0x2F, 0x77, 0x77, 0, 0},
9813         {0x30, 0x17, 0x17, 1, 1},
9814         {0x31, 0xff, 0xff, 1, 1},
9815         {0x32, 0x20, 0x20, 0, 0},
9816         {0x33, 0, 0, 0, 0},
9817         {0x34, 0x88, 0x88, 0, 0},
9818         {0x35, 0x32, 0x32, 0, 0},
9819         {0x36, 0x77, 0x77, 0, 0},
9820         {0x37, 0x17, 0x17, 1, 1},
9821         {0x38, 0xf0, 0xf0, 1, 1},
9822         {0x39, 0x20, 0x20, 0, 0},
9823         {0x3A, 0x8, 0x8, 0, 0},
9824         {0x3B, 0x55, 0x55, 1, 1},
9825         {0x3C, 0, 0, 0, 0},
9826         {0x3D, 0x88, 0x88, 1, 1},
9827         {0x3E, 0, 0, 0, 0},
9828         {0x3F, 0x44, 0x44, 0, 0},
9829         {0x40, 0x7, 0x7, 1, 1},
9830         {0x41, 0x6, 0x6, 0, 0},
9831         {0x42, 0x4, 0x4, 0, 0},
9832         {0x43, 0, 0, 0, 0},
9833         {0x44, 0x8, 0x8, 0, 0},
9834         {0x45, 0x55, 0x55, 1, 1},
9835         {0x46, 0, 0, 0, 0},
9836         {0x47, 0x11, 0x11, 0, 0},
9837         {0x48, 0, 0, 0, 0},
9838         {0x49, 0x44, 0x44, 0, 0},
9839         {0x4A, 0x7, 0x7, 0, 0},
9840         {0x4B, 0x6, 0x6, 0, 0},
9841         {0x4C, 0x4, 0x4, 0, 0},
9842         {0x4D, 0, 0, 0, 0},
9843         {0x4E, 0, 0, 0, 0},
9844         {0x4F, 0x26, 0x26, 1, 1},
9845         {0x50, 0x26, 0x26, 1, 1},
9846         {0x51, 0xf, 0xf, 1, 1},
9847         {0x52, 0xf, 0xf, 1, 1},
9848         {0x53, 0x44, 0x44, 0, 0},
9849         {0x54, 0, 0, 0, 0},
9850         {0x55, 0, 0, 0, 0},
9851         {0x56, 0x8, 0x8, 0, 0},
9852         {0x57, 0x8, 0x8, 0, 0},
9853         {0x58, 0x7, 0x7, 0, 0},
9854         {0x59, 0x22, 0x22, 0, 0},
9855         {0x5A, 0x22, 0x22, 0, 0},
9856         {0x5B, 0x2, 0x2, 0, 0},
9857         {0x5C, 0x4, 0x4, 1, 1},
9858         {0x5D, 0x7, 0x7, 0, 0},
9859         {0x5E, 0x55, 0x55, 0, 0},
9860         {0x5F, 0x23, 0x23, 0, 0},
9861         {0x60, 0x41, 0x41, 0, 0},
9862         {0x61, 0x1, 0x1, 0, 0},
9863         {0x62, 0xa, 0xa, 0, 0},
9864         {0x63, 0, 0, 0, 0},
9865         {0x64, 0, 0, 0, 0},
9866         {0x65, 0, 0, 0, 0},
9867         {0x66, 0, 0, 0, 0},
9868         {0x67, 0, 0, 0, 0},
9869         {0x68, 0, 0, 0, 0},
9870         {0x69, 0, 0, 0, 0},
9871         {0x6A, 0, 0, 0, 0},
9872         {0x6B, 0xc, 0xc, 0, 0},
9873         {0x6C, 0, 0, 0, 0},
9874         {0x6D, 0, 0, 0, 0},
9875         {0x6E, 0, 0, 0, 0},
9876         {0x6F, 0, 0, 0, 0},
9877         {0x70, 0, 0, 0, 0},
9878         {0x71, 0, 0, 0, 0},
9879         {0x72, 0x22, 0x22, 0, 0},
9880         {0x73, 0x22, 0x22, 0, 0},
9881         {0x74, 0, 0, 1, 1},
9882         {0x75, 0xa, 0xa, 0, 0},
9883         {0x76, 0x1, 0x1, 0, 0},
9884         {0x77, 0x22, 0x22, 0, 0},
9885         {0x78, 0x30, 0x30, 0, 0},
9886         {0x79, 0, 0, 0, 0},
9887         {0x7A, 0, 0, 0, 0},
9888         {0x7B, 0, 0, 0, 0},
9889         {0x7C, 0, 0, 0, 0},
9890         {0x7D, 0x5, 0x5, 1, 1},
9891         {0x7E, 0, 0, 0, 0},
9892         {0x7F, 0, 0, 0, 0},
9893         {0x80, 0, 0, 0, 0},
9894         {0x81, 0, 0, 0, 0},
9895         {0x82, 0, 0, 0, 0},
9896         {0x83, 0, 0, 0, 0},
9897         {0x84, 0, 0, 0, 0},
9898         {0x85, 0, 0, 0, 0},
9899         {0x86, 0, 0, 0, 0},
9900         {0x87, 0, 0, 0, 0},
9901         {0x88, 0, 0, 0, 0},
9902         {0x89, 0, 0, 0, 0},
9903         {0x8A, 0, 0, 0, 0},
9904         {0x8B, 0, 0, 0, 0},
9905         {0x8C, 0, 0, 0, 0},
9906         {0x8D, 0, 0, 0, 0},
9907         {0x8E, 0, 0, 0, 0},
9908         {0x8F, 0, 0, 0, 0},
9909         {0x90, 0, 0, 0, 0},
9910         {0x91, 0, 0, 0, 0},
9911         {0x92, 0, 0, 0, 0},
9912         {0x93, 0, 0, 0, 0},
9913         {0x94, 0, 0, 0, 0},
9914         {0xFFFF, 0, 0, 0, 0}
9915 };
9916
9917 radio_regs_t regs_SYN_2056_rev7[] = {
9918         {0x02, 0, 0, 0, 0},
9919         {0x03, 0, 0, 0, 0},
9920         {0x04, 0, 0, 0, 0},
9921         {0x05, 0, 0, 0, 0},
9922         {0x06, 0, 0, 0, 0},
9923         {0x07, 0, 0, 0, 0},
9924         {0x08, 0, 0, 0, 0},
9925         {0x09, 0x1, 0x1, 0, 0},
9926         {0x0A, 0, 0, 0, 0},
9927         {0x0B, 0, 0, 0, 0},
9928         {0x0C, 0, 0, 0, 0},
9929         {0x0D, 0, 0, 0, 0},
9930         {0x0E, 0, 0, 0, 0},
9931         {0x0F, 0, 0, 0, 0},
9932         {0x10, 0, 0, 0, 0},
9933         {0x11, 0, 0, 0, 0},
9934         {0x12, 0, 0, 0, 0},
9935         {0x13, 0, 0, 0, 0},
9936         {0x14, 0, 0, 0, 0},
9937         {0x15, 0, 0, 0, 0},
9938         {0x16, 0, 0, 0, 0},
9939         {0x17, 0, 0, 0, 0},
9940         {0x18, 0, 0, 0, 0},
9941         {0x19, 0, 0, 0, 0},
9942         {0x1A, 0, 0, 0, 0},
9943         {0x1B, 0, 0, 0, 0},
9944         {0x1C, 0, 0, 0, 0},
9945         {0x1D, 0, 0, 0, 0},
9946         {0x1E, 0, 0, 0, 0},
9947         {0x1F, 0, 0, 0, 0},
9948         {0x20, 0, 0, 0, 0},
9949         {0x21, 0, 0, 0, 0},
9950         {0x22, 0x60, 0x60, 0, 0},
9951         {0x23, 0x6, 0x6, 0, 0},
9952         {0x24, 0xc, 0xc, 0, 0},
9953         {0x25, 0, 0, 0, 0},
9954         {0x26, 0, 0, 0, 0},
9955         {0x27, 0, 0, 0, 0},
9956         {0x28, 0x1, 0x1, 0, 0},
9957         {0x29, 0, 0, 0, 0},
9958         {0x2A, 0, 0, 0, 0},
9959         {0x2B, 0, 0, 0, 0},
9960         {0x2C, 0, 0, 0, 0},
9961         {0x2D, 0, 0, 0, 0},
9962         {0x2E, 0, 0, 0, 0},
9963         {0x2F, 0x1f, 0x1f, 0, 0},
9964         {0x30, 0x15, 0x15, 0, 0},
9965         {0x31, 0xf, 0xf, 0, 0},
9966         {0x32, 0, 0, 0, 0},
9967         {0x33, 0, 0, 0, 0},
9968         {0x34, 0, 0, 0, 0},
9969         {0x35, 0, 0, 0, 0},
9970         {0x36, 0, 0, 0, 0},
9971         {0x37, 0, 0, 0, 0},
9972         {0x38, 0, 0, 0, 0},
9973         {0x39, 0, 0, 0, 0},
9974         {0x3A, 0, 0, 0, 0},
9975         {0x3B, 0, 0, 0, 0},
9976         {0x3C, 0x13, 0x13, 0, 0},
9977         {0x3D, 0xf, 0xf, 0, 0},
9978         {0x3E, 0x18, 0x18, 0, 0},
9979         {0x3F, 0, 0, 0, 0},
9980         {0x40, 0, 0, 0, 0},
9981         {0x41, 0x20, 0x20, 0, 0},
9982         {0x42, 0x20, 0x20, 0, 0},
9983         {0x43, 0, 0, 0, 0},
9984         {0x44, 0x77, 0x77, 0, 0},
9985         {0x45, 0x7, 0x7, 0, 0},
9986         {0x46, 0x1, 0x1, 0, 0},
9987         {0x47, 0x4, 0x4, 0, 0},
9988         {0x48, 0xf, 0xf, 0, 0},
9989         {0x49, 0x30, 0x30, 0, 0},
9990         {0x4A, 0x32, 0x32, 0, 0},
9991         {0x4B, 0xd, 0xd, 0, 0},
9992         {0x4C, 0xd, 0xd, 0, 0},
9993         {0x4D, 0x4, 0x4, 0, 0},
9994         {0x4E, 0x6, 0x6, 0, 0},
9995         {0x4F, 0x1, 0x1, 0, 0},
9996         {0x50, 0x1c, 0x1c, 0, 0},
9997         {0x51, 0x2, 0x2, 0, 0},
9998         {0x52, 0x2, 0x2, 0, 0},
9999         {0x53, 0xf7, 0xf7, 1, 1},
10000         {0x54, 0xb4, 0xb4, 0, 0},
10001         {0x55, 0xd2, 0xd2, 0, 0},
10002         {0x56, 0, 0, 0, 0},
10003         {0x57, 0, 0, 0, 0},
10004         {0x58, 0x4, 0x4, 0, 0},
10005         {0x59, 0x96, 0x96, 0, 0},
10006         {0x5A, 0x3e, 0x3e, 0, 0},
10007         {0x5B, 0x3e, 0x3e, 0, 0},
10008         {0x5C, 0x13, 0x13, 0, 0},
10009         {0x5D, 0x2, 0x2, 0, 0},
10010         {0x5E, 0, 0, 0, 0},
10011         {0x5F, 0x7, 0x7, 0, 0},
10012         {0x60, 0x7, 0x7, 1, 1},
10013         {0x61, 0x8, 0x8, 0, 0},
10014         {0x62, 0x3, 0x3, 0, 0},
10015         {0x63, 0, 0, 0, 0},
10016         {0x64, 0, 0, 0, 0},
10017         {0x65, 0, 0, 0, 0},
10018         {0x66, 0, 0, 0, 0},
10019         {0x67, 0, 0, 0, 0},
10020         {0x68, 0x40, 0x40, 0, 0},
10021         {0x69, 0, 0, 0, 0},
10022         {0x6A, 0, 0, 0, 0},
10023         {0x6B, 0, 0, 0, 0},
10024         {0x6C, 0, 0, 0, 0},
10025         {0x6D, 0x1, 0x1, 0, 0},
10026         {0x6E, 0, 0, 0, 0},
10027         {0x6F, 0, 0, 0, 0},
10028         {0x70, 0x60, 0x60, 0, 0},
10029         {0x71, 0x66, 0x66, 0, 0},
10030         {0x72, 0xc, 0xc, 0, 0},
10031         {0x73, 0x66, 0x66, 0, 0},
10032         {0x74, 0x8f, 0x8f, 1, 1},
10033         {0x75, 0, 0, 0, 0},
10034         {0x76, 0xcc, 0xcc, 0, 0},
10035         {0x77, 0x1, 0x1, 0, 0},
10036         {0x78, 0x66, 0x66, 0, 0},
10037         {0x79, 0x66, 0x66, 0, 0},
10038         {0x7A, 0, 0, 0, 0},
10039         {0x7B, 0, 0, 0, 0},
10040         {0x7C, 0, 0, 0, 0},
10041         {0x7D, 0, 0, 0, 0},
10042         {0x7E, 0, 0, 0, 0},
10043         {0x7F, 0, 0, 0, 0},
10044         {0x80, 0, 0, 0, 0},
10045         {0x81, 0, 0, 0, 0},
10046         {0x82, 0, 0, 0, 0},
10047         {0x83, 0, 0, 0, 0},
10048         {0x84, 0, 0, 0, 0},
10049         {0x85, 0xff, 0xff, 0, 0},
10050         {0x86, 0, 0, 0, 0},
10051         {0x87, 0, 0, 0, 0},
10052         {0x88, 0, 0, 0, 0},
10053         {0x89, 0, 0, 0, 0},
10054         {0x8A, 0, 0, 0, 0},
10055         {0x8B, 0, 0, 0, 0},
10056         {0x8C, 0, 0, 0, 0},
10057         {0x8D, 0, 0, 0, 0},
10058         {0x8E, 0, 0, 0, 0},
10059         {0x8F, 0, 0, 0, 0},
10060         {0x90, 0, 0, 0, 0},
10061         {0x91, 0, 0, 0, 0},
10062         {0x92, 0, 0, 0, 0},
10063         {0x93, 0, 0, 0, 0},
10064         {0x94, 0, 0, 0, 0},
10065         {0x95, 0, 0, 0, 0},
10066         {0x96, 0, 0, 0, 0},
10067         {0x97, 0, 0, 0, 0},
10068         {0x98, 0, 0, 0, 0},
10069         {0x99, 0, 0, 0, 0},
10070         {0x9A, 0, 0, 0, 0},
10071         {0x9B, 0, 0, 0, 0},
10072         {0x9C, 0, 0, 0, 0},
10073         {0x9D, 0, 0, 0, 0},
10074         {0x9E, 0, 0, 0, 0},
10075         {0x9F, 0x6, 0x6, 0, 0},
10076         {0xA0, 0x66, 0x66, 0, 0},
10077         {0xA1, 0x66, 0x66, 0, 0},
10078         {0xA2, 0x66, 0x66, 0, 0},
10079         {0xA3, 0x66, 0x66, 0, 0},
10080         {0xA4, 0x66, 0x66, 0, 0},
10081         {0xA5, 0x66, 0x66, 0, 0},
10082         {0xA6, 0x66, 0x66, 0, 0},
10083         {0xA7, 0x66, 0x66, 0, 0},
10084         {0xA8, 0x66, 0x66, 0, 0},
10085         {0xA9, 0x66, 0x66, 0, 0},
10086         {0xAA, 0x66, 0x66, 0, 0},
10087         {0xAB, 0x66, 0x66, 0, 0},
10088         {0xAC, 0x66, 0x66, 0, 0},
10089         {0xAD, 0x66, 0x66, 0, 0},
10090         {0xAE, 0x66, 0x66, 0, 0},
10091         {0xAF, 0x66, 0x66, 0, 0},
10092         {0xB0, 0x66, 0x66, 0, 0},
10093         {0xB1, 0x66, 0x66, 0, 0},
10094         {0xB2, 0x66, 0x66, 0, 0},
10095         {0xB3, 0xa, 0xa, 0, 0},
10096         {0xB4, 0, 0, 0, 0},
10097         {0xB5, 0, 0, 0, 0},
10098         {0xB6, 0, 0, 0, 0},
10099         {0xFFFF, 0, 0, 0, 0},
10100 };
10101
10102 radio_regs_t regs_TX_2056_rev7[] = {
10103         {0x02, 0, 0, 0, 0},
10104         {0x03, 0, 0, 0, 0},
10105         {0x04, 0, 0, 0, 0},
10106         {0x05, 0, 0, 0, 0},
10107         {0x06, 0, 0, 0, 0},
10108         {0x07, 0, 0, 0, 0},
10109         {0x08, 0, 0, 0, 0},
10110         {0x09, 0, 0, 0, 0},
10111         {0x0A, 0, 0, 0, 0},
10112         {0x0B, 0, 0, 0, 0},
10113         {0x0C, 0, 0, 0, 0},
10114         {0x0D, 0, 0, 0, 0},
10115         {0x0E, 0, 0, 0, 0},
10116         {0x0F, 0, 0, 0, 0},
10117         {0x10, 0, 0, 0, 0},
10118         {0x11, 0, 0, 0, 0},
10119         {0x12, 0, 0, 0, 0},
10120         {0x13, 0, 0, 0, 0},
10121         {0x14, 0, 0, 0, 0},
10122         {0x15, 0, 0, 0, 0},
10123         {0x16, 0, 0, 0, 0},
10124         {0x17, 0, 0, 0, 0},
10125         {0x18, 0, 0, 0, 0},
10126         {0x19, 0, 0, 0, 0},
10127         {0x1A, 0, 0, 0, 0},
10128         {0x1B, 0, 0, 0, 0},
10129         {0x1C, 0, 0, 0, 0},
10130         {0x1D, 0, 0, 0, 0},
10131         {0x1E, 0, 0, 0, 0},
10132         {0x1F, 0, 0, 0, 0},
10133         {0x20, 0, 0, 0, 0},
10134         {0x21, 0x88, 0x88, 0, 0},
10135         {0x22, 0x88, 0x88, 0, 0},
10136         {0x23, 0x88, 0x88, 0, 0},
10137         {0x24, 0x88, 0x88, 0, 0},
10138         {0x25, 0xc, 0xc, 0, 0},
10139         {0x26, 0, 0, 0, 0},
10140         {0x27, 0x3, 0x3, 0, 0},
10141         {0x28, 0, 0, 0, 0},
10142         {0x29, 0x3, 0x3, 0, 0},
10143         {0x2A, 0x37, 0x37, 0, 0},
10144         {0x2B, 0x3, 0x3, 0, 0},
10145         {0x2C, 0, 0, 0, 0},
10146         {0x2D, 0, 0, 0, 0},
10147         {0x2E, 0x1, 0x1, 0, 0},
10148         {0x2F, 0x1, 0x1, 0, 0},
10149         {0x30, 0, 0, 0, 0},
10150         {0x31, 0, 0, 0, 0},
10151         {0x32, 0, 0, 0, 0},
10152         {0x33, 0x11, 0x11, 0, 0},
10153         {0x34, 0xee, 0xee, 1, 1},
10154         {0x35, 0, 0, 0, 0},
10155         {0x36, 0, 0, 0, 0},
10156         {0x37, 0x3, 0x3, 0, 0},
10157         {0x38, 0x50, 0x50, 1, 1},
10158         {0x39, 0, 0, 0, 0},
10159         {0x3A, 0x50, 0x50, 1, 1},
10160         {0x3B, 0, 0, 0, 0},
10161         {0x3C, 0x6e, 0x6e, 0, 0},
10162         {0x3D, 0xf0, 0xf0, 1, 1},
10163         {0x3E, 0, 0, 0, 0},
10164         {0x3F, 0, 0, 0, 0},
10165         {0x40, 0, 0, 0, 0},
10166         {0x41, 0x3, 0x3, 0, 0},
10167         {0x42, 0x3, 0x3, 0, 0},
10168         {0x43, 0, 0, 0, 0},
10169         {0x44, 0x1e, 0x1e, 0, 0},
10170         {0x45, 0, 0, 0, 0},
10171         {0x46, 0x6e, 0x6e, 0, 0},
10172         {0x47, 0xf0, 0xf0, 1, 1},
10173         {0x48, 0, 0, 0, 0},
10174         {0x49, 0x2, 0x2, 0, 0},
10175         {0x4A, 0xff, 0xff, 1, 1},
10176         {0x4B, 0xc, 0xc, 0, 0},
10177         {0x4C, 0, 0, 0, 0},
10178         {0x4D, 0x38, 0x38, 0, 0},
10179         {0x4E, 0x70, 0x70, 1, 1},
10180         {0x4F, 0x2, 0x2, 0, 0},
10181         {0x50, 0x88, 0x88, 0, 0},
10182         {0x51, 0xc, 0xc, 0, 0},
10183         {0x52, 0, 0, 0, 0},
10184         {0x53, 0x8, 0x8, 0, 0},
10185         {0x54, 0x70, 0x70, 1, 1},
10186         {0x55, 0x2, 0x2, 0, 0},
10187         {0x56, 0xff, 0xff, 1, 1},
10188         {0x57, 0, 0, 0, 0},
10189         {0x58, 0x83, 0x83, 0, 0},
10190         {0x59, 0x77, 0x77, 1, 1},
10191         {0x5A, 0, 0, 0, 0},
10192         {0x5B, 0x2, 0x2, 0, 0},
10193         {0x5C, 0x88, 0x88, 0, 0},
10194         {0x5D, 0, 0, 0, 0},
10195         {0x5E, 0x8, 0x8, 0, 0},
10196         {0x5F, 0x77, 0x77, 1, 1},
10197         {0x60, 0x1, 0x1, 0, 0},
10198         {0x61, 0, 0, 0, 0},
10199         {0x62, 0x7, 0x7, 0, 0},
10200         {0x63, 0, 0, 0, 0},
10201         {0x64, 0x7, 0x7, 0, 0},
10202         {0x65, 0, 0, 0, 0},
10203         {0x66, 0, 0, 0, 0},
10204         {0x67, 0, 0, 1, 1},
10205         {0x68, 0, 0, 0, 0},
10206         {0x69, 0xa, 0xa, 0, 0},
10207         {0x6A, 0, 0, 0, 0},
10208         {0x6B, 0, 0, 0, 0},
10209         {0x6C, 0, 0, 0, 0},
10210         {0x6D, 0, 0, 0, 0},
10211         {0x6E, 0, 0, 0, 0},
10212         {0x6F, 0, 0, 0, 0},
10213         {0x70, 0, 0, 0, 0},
10214         {0x71, 0x2, 0x2, 0, 0},
10215         {0x72, 0, 0, 0, 0},
10216         {0x73, 0, 0, 0, 0},
10217         {0x74, 0xe, 0xe, 0, 0},
10218         {0x75, 0xe, 0xe, 0, 0},
10219         {0x76, 0xe, 0xe, 0, 0},
10220         {0x77, 0x13, 0x13, 0, 0},
10221         {0x78, 0x13, 0x13, 0, 0},
10222         {0x79, 0x1b, 0x1b, 0, 0},
10223         {0x7A, 0x1b, 0x1b, 0, 0},
10224         {0x7B, 0x55, 0x55, 0, 0},
10225         {0x7C, 0x5b, 0x5b, 0, 0},
10226         {0x7D, 0x30, 0x30, 1, 1},
10227         {0x7E, 0, 0, 0, 0},
10228         {0x7F, 0, 0, 0, 0},
10229         {0x80, 0, 0, 0, 0},
10230         {0x81, 0, 0, 0, 0},
10231         {0x82, 0, 0, 0, 0},
10232         {0x83, 0, 0, 0, 0},
10233         {0x84, 0, 0, 0, 0},
10234         {0x85, 0, 0, 0, 0},
10235         {0x86, 0, 0, 0, 0},
10236         {0x87, 0, 0, 0, 0},
10237         {0x88, 0, 0, 0, 0},
10238         {0x89, 0, 0, 0, 0},
10239         {0x8A, 0, 0, 0, 0},
10240         {0x8B, 0, 0, 0, 0},
10241         {0x8C, 0, 0, 0, 0},
10242         {0x8D, 0, 0, 0, 0},
10243         {0x8E, 0, 0, 0, 0},
10244         {0x8F, 0, 0, 0, 0},
10245         {0x90, 0, 0, 0, 0},
10246         {0x91, 0, 0, 0, 0},
10247         {0x92, 0, 0, 0, 0},
10248         {0x93, 0x70, 0x70, 0, 0},
10249         {0x94, 0x70, 0x70, 0, 0},
10250         {0x95, 0x71, 0x71, 1, 1},
10251         {0x96, 0x71, 0x71, 1, 1},
10252         {0x97, 0x72, 0x72, 1, 1},
10253         {0x98, 0x73, 0x73, 1, 1},
10254         {0x99, 0x74, 0x74, 1, 1},
10255         {0x9A, 0x75, 0x75, 1, 1},
10256         {0xFFFF, 0, 0, 0, 0},
10257 };
10258
10259 radio_regs_t regs_RX_2056_rev7[] = {
10260         {0x02, 0, 0, 0, 0},
10261         {0x03, 0, 0, 0, 0},
10262         {0x04, 0, 0, 0, 0},
10263         {0x05, 0, 0, 0, 0},
10264         {0x06, 0, 0, 0, 0},
10265         {0x07, 0, 0, 0, 0},
10266         {0x08, 0, 0, 0, 0},
10267         {0x09, 0, 0, 0, 0},
10268         {0x0A, 0, 0, 0, 0},
10269         {0x0B, 0, 0, 0, 0},
10270         {0x0C, 0, 0, 0, 0},
10271         {0x0D, 0, 0, 0, 0},
10272         {0x0E, 0, 0, 0, 0},
10273         {0x0F, 0, 0, 0, 0},
10274         {0x10, 0, 0, 0, 0},
10275         {0x11, 0, 0, 0, 0},
10276         {0x12, 0, 0, 0, 0},
10277         {0x13, 0, 0, 0, 0},
10278         {0x14, 0, 0, 0, 0},
10279         {0x15, 0, 0, 0, 0},
10280         {0x16, 0, 0, 0, 0},
10281         {0x17, 0, 0, 0, 0},
10282         {0x18, 0, 0, 0, 0},
10283         {0x19, 0, 0, 0, 0},
10284         {0x1A, 0, 0, 0, 0},
10285         {0x1B, 0, 0, 0, 0},
10286         {0x1C, 0, 0, 0, 0},
10287         {0x1D, 0, 0, 0, 0},
10288         {0x1E, 0, 0, 0, 0},
10289         {0x1F, 0, 0, 0, 0},
10290         {0x20, 0x3, 0x3, 0, 0},
10291         {0x21, 0, 0, 0, 0},
10292         {0x22, 0, 0, 0, 0},
10293         {0x23, 0x90, 0x90, 0, 0},
10294         {0x24, 0x55, 0x55, 0, 0},
10295         {0x25, 0x15, 0x15, 0, 0},
10296         {0x26, 0x5, 0x5, 0, 0},
10297         {0x27, 0x15, 0x15, 0, 0},
10298         {0x28, 0x5, 0x5, 0, 0},
10299         {0x29, 0x20, 0x20, 0, 0},
10300         {0x2A, 0x11, 0x11, 0, 0},
10301         {0x2B, 0x90, 0x90, 0, 0},
10302         {0x2C, 0, 0, 0, 0},
10303         {0x2D, 0x88, 0x88, 0, 0},
10304         {0x2E, 0x32, 0x32, 0, 0},
10305         {0x2F, 0x77, 0x77, 0, 0},
10306         {0x30, 0x17, 0x17, 1, 1},
10307         {0x31, 0xff, 0xff, 1, 1},
10308         {0x32, 0x20, 0x20, 0, 0},
10309         {0x33, 0, 0, 0, 0},
10310         {0x34, 0x88, 0x88, 0, 0},
10311         {0x35, 0x32, 0x32, 0, 0},
10312         {0x36, 0x77, 0x77, 0, 0},
10313         {0x37, 0x17, 0x17, 1, 1},
10314         {0x38, 0xf0, 0xf0, 1, 1},
10315         {0x39, 0x20, 0x20, 0, 0},
10316         {0x3A, 0x8, 0x8, 0, 0},
10317         {0x3B, 0x55, 0x55, 1, 1},
10318         {0x3C, 0, 0, 0, 0},
10319         {0x3D, 0x88, 0x88, 1, 1},
10320         {0x3E, 0, 0, 0, 0},
10321         {0x3F, 0, 0, 1, 1},
10322         {0x40, 0x7, 0x7, 1, 1},
10323         {0x41, 0x6, 0x6, 0, 0},
10324         {0x42, 0x4, 0x4, 0, 0},
10325         {0x43, 0, 0, 0, 0},
10326         {0x44, 0x8, 0x8, 0, 0},
10327         {0x45, 0x55, 0x55, 1, 1},
10328         {0x46, 0, 0, 0, 0},
10329         {0x47, 0x11, 0x11, 0, 0},
10330         {0x48, 0, 0, 0, 0},
10331         {0x49, 0, 0, 1, 1},
10332         {0x4A, 0x7, 0x7, 0, 0},
10333         {0x4B, 0x6, 0x6, 0, 0},
10334         {0x4C, 0x4, 0x4, 0, 0},
10335         {0x4D, 0, 0, 0, 0},
10336         {0x4E, 0, 0, 0, 0},
10337         {0x4F, 0x26, 0x26, 1, 1},
10338         {0x50, 0x26, 0x26, 1, 1},
10339         {0x51, 0xf, 0xf, 1, 1},
10340         {0x52, 0xf, 0xf, 1, 1},
10341         {0x53, 0x44, 0x44, 0, 0},
10342         {0x54, 0, 0, 0, 0},
10343         {0x55, 0, 0, 0, 0},
10344         {0x56, 0x8, 0x8, 0, 0},
10345         {0x57, 0x8, 0x8, 0, 0},
10346         {0x58, 0x7, 0x7, 0, 0},
10347         {0x59, 0x22, 0x22, 0, 0},
10348         {0x5A, 0x22, 0x22, 0, 0},
10349         {0x5B, 0x2, 0x2, 0, 0},
10350         {0x5C, 0x4, 0x4, 1, 1},
10351         {0x5D, 0x7, 0x7, 0, 0},
10352         {0x5E, 0x55, 0x55, 0, 0},
10353         {0x5F, 0x23, 0x23, 0, 0},
10354         {0x60, 0x41, 0x41, 0, 0},
10355         {0x61, 0x1, 0x1, 0, 0},
10356         {0x62, 0xa, 0xa, 0, 0},
10357         {0x63, 0, 0, 0, 0},
10358         {0x64, 0, 0, 0, 0},
10359         {0x65, 0, 0, 0, 0},
10360         {0x66, 0, 0, 0, 0},
10361         {0x67, 0, 0, 0, 0},
10362         {0x68, 0, 0, 0, 0},
10363         {0x69, 0, 0, 0, 0},
10364         {0x6A, 0, 0, 0, 0},
10365         {0x6B, 0xc, 0xc, 0, 0},
10366         {0x6C, 0, 0, 0, 0},
10367         {0x6D, 0, 0, 0, 0},
10368         {0x6E, 0, 0, 0, 0},
10369         {0x6F, 0, 0, 0, 0},
10370         {0x70, 0, 0, 0, 0},
10371         {0x71, 0, 0, 0, 0},
10372         {0x72, 0x22, 0x22, 0, 0},
10373         {0x73, 0x22, 0x22, 0, 0},
10374         {0x74, 0, 0, 1, 1},
10375         {0x75, 0xa, 0xa, 0, 0},
10376         {0x76, 0x1, 0x1, 0, 0},
10377         {0x77, 0x22, 0x22, 0, 0},
10378         {0x78, 0x30, 0x30, 0, 0},
10379         {0x79, 0, 0, 0, 0},
10380         {0x7A, 0, 0, 0, 0},
10381         {0x7B, 0, 0, 0, 0},
10382         {0x7C, 0, 0, 0, 0},
10383         {0x7D, 0, 0, 0, 0},
10384         {0x7E, 0, 0, 0, 0},
10385         {0x7F, 0, 0, 0, 0},
10386         {0x80, 0, 0, 0, 0},
10387         {0x81, 0, 0, 0, 0},
10388         {0x82, 0, 0, 0, 0},
10389         {0x83, 0, 0, 0, 0},
10390         {0x84, 0, 0, 0, 0},
10391         {0x85, 0, 0, 0, 0},
10392         {0x86, 0, 0, 0, 0},
10393         {0x87, 0, 0, 0, 0},
10394         {0x88, 0, 0, 0, 0},
10395         {0x89, 0, 0, 0, 0},
10396         {0x8A, 0, 0, 0, 0},
10397         {0x8B, 0, 0, 0, 0},
10398         {0x8C, 0, 0, 0, 0},
10399         {0x8D, 0, 0, 0, 0},
10400         {0x8E, 0, 0, 0, 0},
10401         {0x8F, 0, 0, 0, 0},
10402         {0x90, 0, 0, 0, 0},
10403         {0x91, 0, 0, 0, 0},
10404         {0x92, 0, 0, 0, 0},
10405         {0x93, 0, 0, 0, 0},
10406         {0x94, 0, 0, 0, 0},
10407         {0xFFFF, 0, 0, 0, 0},
10408 };
10409
10410 radio_regs_t regs_SYN_2056_rev8[] = {
10411         {0x02, 0, 0, 0, 0},
10412         {0x03, 0, 0, 0, 0},
10413         {0x04, 0, 0, 0, 0},
10414         {0x05, 0, 0, 0, 0},
10415         {0x06, 0, 0, 0, 0},
10416         {0x07, 0, 0, 0, 0},
10417         {0x08, 0, 0, 0, 0},
10418         {0x09, 0x1, 0x1, 0, 0},
10419         {0x0A, 0, 0, 0, 0},
10420         {0x0B, 0, 0, 0, 0},
10421         {0x0C, 0, 0, 0, 0},
10422         {0x0D, 0, 0, 0, 0},
10423         {0x0E, 0, 0, 0, 0},
10424         {0x0F, 0, 0, 0, 0},
10425         {0x10, 0, 0, 0, 0},
10426         {0x11, 0, 0, 0, 0},
10427         {0x12, 0, 0, 0, 0},
10428         {0x13, 0, 0, 0, 0},
10429         {0x14, 0, 0, 0, 0},
10430         {0x15, 0, 0, 0, 0},
10431         {0x16, 0, 0, 0, 0},
10432         {0x17, 0, 0, 0, 0},
10433         {0x18, 0, 0, 0, 0},
10434         {0x19, 0, 0, 0, 0},
10435         {0x1A, 0, 0, 0, 0},
10436         {0x1B, 0, 0, 0, 0},
10437         {0x1C, 0, 0, 0, 0},
10438         {0x1D, 0, 0, 0, 0},
10439         {0x1E, 0, 0, 0, 0},
10440         {0x1F, 0, 0, 0, 0},
10441         {0x20, 0, 0, 0, 0},
10442         {0x21, 0, 0, 0, 0},
10443         {0x22, 0x60, 0x60, 0, 0},
10444         {0x23, 0x6, 0x6, 0, 0},
10445         {0x24, 0xc, 0xc, 0, 0},
10446         {0x25, 0, 0, 0, 0},
10447         {0x26, 0, 0, 0, 0},
10448         {0x27, 0, 0, 0, 0},
10449         {0x28, 0x1, 0x1, 0, 0},
10450         {0x29, 0, 0, 0, 0},
10451         {0x2A, 0, 0, 0, 0},
10452         {0x2B, 0, 0, 0, 0},
10453         {0x2C, 0, 0, 0, 0},
10454         {0x2D, 0, 0, 0, 0},
10455         {0x2E, 0, 0, 0, 0},
10456         {0x2F, 0x1f, 0x1f, 0, 0},
10457         {0x30, 0x15, 0x15, 0, 0},
10458         {0x31, 0xf, 0xf, 0, 0},
10459         {0x32, 0, 0, 0, 0},
10460         {0x33, 0, 0, 0, 0},
10461         {0x34, 0, 0, 0, 0},
10462         {0x35, 0, 0, 0, 0},
10463         {0x36, 0, 0, 0, 0},
10464         {0x37, 0, 0, 0, 0},
10465         {0x38, 0, 0, 0, 0},
10466         {0x39, 0, 0, 0, 0},
10467         {0x3A, 0, 0, 0, 0},
10468         {0x3B, 0, 0, 0, 0},
10469         {0x3C, 0x13, 0x13, 0, 0},
10470         {0x3D, 0xf, 0xf, 0, 0},
10471         {0x3E, 0x18, 0x18, 0, 0},
10472         {0x3F, 0, 0, 0, 0},
10473         {0x40, 0, 0, 0, 0},
10474         {0x41, 0x20, 0x20, 0, 0},
10475         {0x42, 0x20, 0x20, 0, 0},
10476         {0x43, 0, 0, 0, 0},
10477         {0x44, 0x77, 0x77, 0, 0},
10478         {0x45, 0x7, 0x7, 0, 0},
10479         {0x46, 0x1, 0x1, 0, 0},
10480         {0x47, 0x4, 0x4, 0, 0},
10481         {0x48, 0xf, 0xf, 0, 0},
10482         {0x49, 0x30, 0x30, 0, 0},
10483         {0x4A, 0x32, 0x32, 0, 0},
10484         {0x4B, 0xd, 0xd, 0, 0},
10485         {0x4C, 0xd, 0xd, 0, 0},
10486         {0x4D, 0x4, 0x4, 0, 0},
10487         {0x4E, 0x6, 0x6, 0, 0},
10488         {0x4F, 0x1, 0x1, 0, 0},
10489         {0x50, 0x1c, 0x1c, 0, 0},
10490         {0x51, 0x2, 0x2, 0, 0},
10491         {0x52, 0x2, 0x2, 0, 0},
10492         {0x53, 0xf7, 0xf7, 1, 1},
10493         {0x54, 0xb4, 0xb4, 0, 0},
10494         {0x55, 0xd2, 0xd2, 0, 0},
10495         {0x56, 0, 0, 0, 0},
10496         {0x57, 0, 0, 0, 0},
10497         {0x58, 0x4, 0x4, 0, 0},
10498         {0x59, 0x96, 0x96, 0, 0},
10499         {0x5A, 0x3e, 0x3e, 0, 0},
10500         {0x5B, 0x3e, 0x3e, 0, 0},
10501         {0x5C, 0x13, 0x13, 0, 0},
10502         {0x5D, 0x2, 0x2, 0, 0},
10503         {0x5E, 0, 0, 0, 0},
10504         {0x5F, 0x7, 0x7, 0, 0},
10505         {0x60, 0x7, 0x7, 1, 1},
10506         {0x61, 0x8, 0x8, 0, 0},
10507         {0x62, 0x3, 0x3, 0, 0},
10508         {0x63, 0, 0, 0, 0},
10509         {0x64, 0, 0, 0, 0},
10510         {0x65, 0, 0, 0, 0},
10511         {0x66, 0, 0, 0, 0},
10512         {0x67, 0, 0, 0, 0},
10513         {0x68, 0x40, 0x40, 0, 0},
10514         {0x69, 0, 0, 0, 0},
10515         {0x6A, 0, 0, 0, 0},
10516         {0x6B, 0, 0, 0, 0},
10517         {0x6C, 0, 0, 0, 0},
10518         {0x6D, 0x1, 0x1, 0, 0},
10519         {0x6E, 0, 0, 0, 0},
10520         {0x6F, 0, 0, 0, 0},
10521         {0x70, 0x60, 0x60, 0, 0},
10522         {0x71, 0x66, 0x66, 0, 0},
10523         {0x72, 0xc, 0xc, 0, 0},
10524         {0x73, 0x66, 0x66, 0, 0},
10525         {0x74, 0x8f, 0x8f, 1, 1},
10526         {0x75, 0, 0, 0, 0},
10527         {0x76, 0xcc, 0xcc, 0, 0},
10528         {0x77, 0x1, 0x1, 0, 0},
10529         {0x78, 0x66, 0x66, 0, 0},
10530         {0x79, 0x66, 0x66, 0, 0},
10531         {0x7A, 0, 0, 0, 0},
10532         {0x7B, 0, 0, 0, 0},
10533         {0x7C, 0, 0, 0, 0},
10534         {0x7D, 0, 0, 0, 0},
10535         {0x7E, 0, 0, 0, 0},
10536         {0x7F, 0, 0, 0, 0},
10537         {0x80, 0, 0, 0, 0},
10538         {0x81, 0, 0, 0, 0},
10539         {0x82, 0, 0, 0, 0},
10540         {0x83, 0, 0, 0, 0},
10541         {0x84, 0, 0, 0, 0},
10542         {0x85, 0xff, 0xff, 0, 0},
10543         {0x86, 0, 0, 0, 0},
10544         {0x87, 0, 0, 0, 0},
10545         {0x88, 0, 0, 0, 0},
10546         {0x89, 0, 0, 0, 0},
10547         {0x8A, 0, 0, 0, 0},
10548         {0x8B, 0, 0, 0, 0},
10549         {0x8C, 0, 0, 0, 0},
10550         {0x8D, 0, 0, 0, 0},
10551         {0x8E, 0, 0, 0, 0},
10552         {0x8F, 0, 0, 0, 0},
10553         {0x90, 0, 0, 0, 0},
10554         {0x91, 0, 0, 0, 0},
10555         {0x92, 0, 0, 0, 0},
10556         {0x93, 0, 0, 0, 0},
10557         {0x94, 0, 0, 0, 0},
10558         {0x95, 0, 0, 0, 0},
10559         {0x96, 0, 0, 0, 0},
10560         {0x97, 0, 0, 0, 0},
10561         {0x98, 0, 0, 0, 0},
10562         {0x99, 0, 0, 0, 0},
10563         {0x9A, 0, 0, 0, 0},
10564         {0x9B, 0, 0, 0, 0},
10565         {0x9C, 0, 0, 0, 0},
10566         {0x9D, 0, 0, 0, 0},
10567         {0x9E, 0, 0, 0, 0},
10568         {0x9F, 0x6, 0x6, 0, 0},
10569         {0xA0, 0x66, 0x66, 0, 0},
10570         {0xA1, 0x66, 0x66, 0, 0},
10571         {0xA2, 0x66, 0x66, 0, 0},
10572         {0xA3, 0x66, 0x66, 0, 0},
10573         {0xA4, 0x66, 0x66, 0, 0},
10574         {0xA5, 0x66, 0x66, 0, 0},
10575         {0xA6, 0x66, 0x66, 0, 0},
10576         {0xA7, 0x66, 0x66, 0, 0},
10577         {0xA8, 0x66, 0x66, 0, 0},
10578         {0xA9, 0x66, 0x66, 0, 0},
10579         {0xAA, 0x66, 0x66, 0, 0},
10580         {0xAB, 0x66, 0x66, 0, 0},
10581         {0xAC, 0x66, 0x66, 0, 0},
10582         {0xAD, 0x66, 0x66, 0, 0},
10583         {0xAE, 0x66, 0x66, 0, 0},
10584         {0xAF, 0x66, 0x66, 0, 0},
10585         {0xB0, 0x66, 0x66, 0, 0},
10586         {0xB1, 0x66, 0x66, 0, 0},
10587         {0xB2, 0x66, 0x66, 0, 0},
10588         {0xB3, 0xa, 0xa, 0, 0},
10589         {0xB4, 0, 0, 0, 0},
10590         {0xB5, 0, 0, 0, 0},
10591         {0xB6, 0, 0, 0, 0},
10592         {0xFFFF, 0, 0, 0, 0},
10593 };
10594
10595 radio_regs_t regs_TX_2056_rev8[] = {
10596         {0x02, 0, 0, 0, 0},
10597         {0x03, 0, 0, 0, 0},
10598         {0x04, 0, 0, 0, 0},
10599         {0x05, 0, 0, 0, 0},
10600         {0x06, 0, 0, 0, 0},
10601         {0x07, 0, 0, 0, 0},
10602         {0x08, 0, 0, 0, 0},
10603         {0x09, 0, 0, 0, 0},
10604         {0x0A, 0, 0, 0, 0},
10605         {0x0B, 0, 0, 0, 0},
10606         {0x0C, 0, 0, 0, 0},
10607         {0x0D, 0, 0, 0, 0},
10608         {0x0E, 0, 0, 0, 0},
10609         {0x0F, 0, 0, 0, 0},
10610         {0x10, 0, 0, 0, 0},
10611         {0x11, 0, 0, 0, 0},
10612         {0x12, 0, 0, 0, 0},
10613         {0x13, 0, 0, 0, 0},
10614         {0x14, 0, 0, 0, 0},
10615         {0x15, 0, 0, 0, 0},
10616         {0x16, 0, 0, 0, 0},
10617         {0x17, 0, 0, 0, 0},
10618         {0x18, 0, 0, 0, 0},
10619         {0x19, 0, 0, 0, 0},
10620         {0x1A, 0, 0, 0, 0},
10621         {0x1B, 0, 0, 0, 0},
10622         {0x1C, 0, 0, 0, 0},
10623         {0x1D, 0, 0, 0, 0},
10624         {0x1E, 0, 0, 0, 0},
10625         {0x1F, 0, 0, 0, 0},
10626         {0x20, 0, 0, 0, 0},
10627         {0x21, 0x88, 0x88, 0, 0},
10628         {0x22, 0x88, 0x88, 0, 0},
10629         {0x23, 0x88, 0x88, 0, 0},
10630         {0x24, 0x88, 0x88, 0, 0},
10631         {0x25, 0xc, 0xc, 0, 0},
10632         {0x26, 0, 0, 0, 0},
10633         {0x27, 0x3, 0x3, 0, 0},
10634         {0x28, 0, 0, 0, 0},
10635         {0x29, 0x3, 0x3, 0, 0},
10636         {0x2A, 0x37, 0x37, 0, 0},
10637         {0x2B, 0x3, 0x3, 0, 0},
10638         {0x2C, 0, 0, 0, 0},
10639         {0x2D, 0, 0, 0, 0},
10640         {0x2E, 0x1, 0x1, 0, 0},
10641         {0x2F, 0x1, 0x1, 0, 0},
10642         {0x30, 0, 0, 0, 0},
10643         {0x31, 0, 0, 0, 0},
10644         {0x32, 0, 0, 0, 0},
10645         {0x33, 0x11, 0x11, 0, 0},
10646         {0x34, 0xee, 0xee, 1, 1},
10647         {0x35, 0, 0, 0, 0},
10648         {0x36, 0, 0, 0, 0},
10649         {0x37, 0x3, 0x3, 0, 0},
10650         {0x38, 0x50, 0x50, 1, 1},
10651         {0x39, 0, 0, 0, 0},
10652         {0x3A, 0x50, 0x50, 1, 1},
10653         {0x3B, 0, 0, 0, 0},
10654         {0x3C, 0x6e, 0x6e, 0, 0},
10655         {0x3D, 0xf0, 0xf0, 1, 1},
10656         {0x3E, 0, 0, 0, 0},
10657         {0x3F, 0, 0, 0, 0},
10658         {0x40, 0, 0, 0, 0},
10659         {0x41, 0x3, 0x3, 0, 0},
10660         {0x42, 0x3, 0x3, 0, 0},
10661         {0x43, 0, 0, 0, 0},
10662         {0x44, 0x1e, 0x1e, 0, 0},
10663         {0x45, 0, 0, 0, 0},
10664         {0x46, 0x6e, 0x6e, 0, 0},
10665         {0x47, 0xf0, 0xf0, 1, 1},
10666         {0x48, 0, 0, 0, 0},
10667         {0x49, 0x2, 0x2, 0, 0},
10668         {0x4A, 0xff, 0xff, 1, 1},
10669         {0x4B, 0xc, 0xc, 0, 0},
10670         {0x4C, 0, 0, 0, 0},
10671         {0x4D, 0x38, 0x38, 0, 0},
10672         {0x4E, 0x70, 0x70, 1, 1},
10673         {0x4F, 0x2, 0x2, 0, 0},
10674         {0x50, 0x88, 0x88, 0, 0},
10675         {0x51, 0xc, 0xc, 0, 0},
10676         {0x52, 0, 0, 0, 0},
10677         {0x53, 0x8, 0x8, 0, 0},
10678         {0x54, 0x70, 0x70, 1, 1},
10679         {0x55, 0x2, 0x2, 0, 0},
10680         {0x56, 0xff, 0xff, 1, 1},
10681         {0x57, 0, 0, 0, 0},
10682         {0x58, 0x83, 0x83, 0, 0},
10683         {0x59, 0x77, 0x77, 1, 1},
10684         {0x5A, 0, 0, 0, 0},
10685         {0x5B, 0x2, 0x2, 0, 0},
10686         {0x5C, 0x88, 0x88, 0, 0},
10687         {0x5D, 0, 0, 0, 0},
10688         {0x5E, 0x8, 0x8, 0, 0},
10689         {0x5F, 0x77, 0x77, 1, 1},
10690         {0x60, 0x1, 0x1, 0, 0},
10691         {0x61, 0, 0, 0, 0},
10692         {0x62, 0x7, 0x7, 0, 0},
10693         {0x63, 0, 0, 0, 0},
10694         {0x64, 0x7, 0x7, 0, 0},
10695         {0x65, 0, 0, 0, 0},
10696         {0x66, 0, 0, 0, 0},
10697         {0x67, 0, 0, 1, 1},
10698         {0x68, 0, 0, 0, 0},
10699         {0x69, 0xa, 0xa, 0, 0},
10700         {0x6A, 0, 0, 0, 0},
10701         {0x6B, 0, 0, 0, 0},
10702         {0x6C, 0, 0, 0, 0},
10703         {0x6D, 0, 0, 0, 0},
10704         {0x6E, 0, 0, 0, 0},
10705         {0x6F, 0, 0, 0, 0},
10706         {0x70, 0, 0, 0, 0},
10707         {0x71, 0x2, 0x2, 0, 0},
10708         {0x72, 0, 0, 0, 0},
10709         {0x73, 0, 0, 0, 0},
10710         {0x74, 0xe, 0xe, 0, 0},
10711         {0x75, 0xe, 0xe, 0, 0},
10712         {0x76, 0xe, 0xe, 0, 0},
10713         {0x77, 0x13, 0x13, 0, 0},
10714         {0x78, 0x13, 0x13, 0, 0},
10715         {0x79, 0x1b, 0x1b, 0, 0},
10716         {0x7A, 0x1b, 0x1b, 0, 0},
10717         {0x7B, 0x55, 0x55, 0, 0},
10718         {0x7C, 0x5b, 0x5b, 0, 0},
10719         {0x7D, 0x30, 0x30, 1, 1},
10720         {0x7E, 0, 0, 0, 0},
10721         {0x7F, 0, 0, 0, 0},
10722         {0x80, 0, 0, 0, 0},
10723         {0x81, 0, 0, 0, 0},
10724         {0x82, 0, 0, 0, 0},
10725         {0x83, 0, 0, 0, 0},
10726         {0x84, 0, 0, 0, 0},
10727         {0x85, 0, 0, 0, 0},
10728         {0x86, 0, 0, 0, 0},
10729         {0x87, 0, 0, 0, 0},
10730         {0x88, 0, 0, 0, 0},
10731         {0x89, 0, 0, 0, 0},
10732         {0x8A, 0, 0, 0, 0},
10733         {0x8B, 0, 0, 0, 0},
10734         {0x8C, 0, 0, 0, 0},
10735         {0x8D, 0, 0, 0, 0},
10736         {0x8E, 0, 0, 0, 0},
10737         {0x8F, 0, 0, 0, 0},
10738         {0x90, 0, 0, 0, 0},
10739         {0x91, 0, 0, 0, 0},
10740         {0x92, 0, 0, 0, 0},
10741         {0x93, 0x70, 0x70, 0, 0},
10742         {0x94, 0x70, 0x70, 0, 0},
10743         {0x95, 0x70, 0x70, 0, 0},
10744         {0x96, 0x70, 0x70, 0, 0},
10745         {0x97, 0x70, 0x70, 0, 0},
10746         {0x98, 0x70, 0x70, 0, 0},
10747         {0x99, 0x70, 0x70, 0, 0},
10748         {0x9A, 0x70, 0x70, 0, 0},
10749         {0xFFFF, 0, 0, 0, 0},
10750 };
10751
10752 radio_regs_t regs_RX_2056_rev8[] = {
10753         {0x02, 0, 0, 0, 0},
10754         {0x03, 0, 0, 0, 0},
10755         {0x04, 0, 0, 0, 0},
10756         {0x05, 0, 0, 0, 0},
10757         {0x06, 0, 0, 0, 0},
10758         {0x07, 0, 0, 0, 0},
10759         {0x08, 0, 0, 0, 0},
10760         {0x09, 0, 0, 0, 0},
10761         {0x0A, 0, 0, 0, 0},
10762         {0x0B, 0, 0, 0, 0},
10763         {0x0C, 0, 0, 0, 0},
10764         {0x0D, 0, 0, 0, 0},
10765         {0x0E, 0, 0, 0, 0},
10766         {0x0F, 0, 0, 0, 0},
10767         {0x10, 0, 0, 0, 0},
10768         {0x11, 0, 0, 0, 0},
10769         {0x12, 0, 0, 0, 0},
10770         {0x13, 0, 0, 0, 0},
10771         {0x14, 0, 0, 0, 0},
10772         {0x15, 0, 0, 0, 0},
10773         {0x16, 0, 0, 0, 0},
10774         {0x17, 0, 0, 0, 0},
10775         {0x18, 0, 0, 0, 0},
10776         {0x19, 0, 0, 0, 0},
10777         {0x1A, 0, 0, 0, 0},
10778         {0x1B, 0, 0, 0, 0},
10779         {0x1C, 0, 0, 0, 0},
10780         {0x1D, 0, 0, 0, 0},
10781         {0x1E, 0, 0, 0, 0},
10782         {0x1F, 0, 0, 0, 0},
10783         {0x20, 0x3, 0x3, 0, 0},
10784         {0x21, 0, 0, 0, 0},
10785         {0x22, 0, 0, 0, 0},
10786         {0x23, 0x90, 0x90, 0, 0},
10787         {0x24, 0x55, 0x55, 0, 0},
10788         {0x25, 0x15, 0x15, 0, 0},
10789         {0x26, 0x5, 0x5, 0, 0},
10790         {0x27, 0x15, 0x15, 0, 0},
10791         {0x28, 0x5, 0x5, 0, 0},
10792         {0x29, 0x20, 0x20, 0, 0},
10793         {0x2A, 0x11, 0x11, 0, 0},
10794         {0x2B, 0x90, 0x90, 0, 0},
10795         {0x2C, 0, 0, 0, 0},
10796         {0x2D, 0x88, 0x88, 0, 0},
10797         {0x2E, 0x32, 0x32, 0, 0},
10798         {0x2F, 0x77, 0x77, 0, 0},
10799         {0x30, 0x17, 0x17, 1, 1},
10800         {0x31, 0xff, 0xff, 1, 1},
10801         {0x32, 0x20, 0x20, 0, 0},
10802         {0x33, 0, 0, 0, 0},
10803         {0x34, 0x88, 0x88, 0, 0},
10804         {0x35, 0x32, 0x32, 0, 0},
10805         {0x36, 0x77, 0x77, 0, 0},
10806         {0x37, 0x17, 0x17, 1, 1},
10807         {0x38, 0xf0, 0xf0, 1, 1},
10808         {0x39, 0x20, 0x20, 0, 0},
10809         {0x3A, 0x8, 0x8, 0, 0},
10810         {0x3B, 0x55, 0x55, 1, 1},
10811         {0x3C, 0, 0, 0, 0},
10812         {0x3D, 0x88, 0x88, 1, 1},
10813         {0x3E, 0, 0, 0, 0},
10814         {0x3F, 0x44, 0x44, 0, 0},
10815         {0x40, 0x7, 0x7, 1, 1},
10816         {0x41, 0x6, 0x6, 0, 0},
10817         {0x42, 0x4, 0x4, 0, 0},
10818         {0x43, 0, 0, 0, 0},
10819         {0x44, 0x8, 0x8, 0, 0},
10820         {0x45, 0x55, 0x55, 1, 1},
10821         {0x46, 0, 0, 0, 0},
10822         {0x47, 0x11, 0x11, 0, 0},
10823         {0x48, 0, 0, 0, 0},
10824         {0x49, 0x44, 0x44, 0, 0},
10825         {0x4A, 0x7, 0x7, 0, 0},
10826         {0x4B, 0x6, 0x6, 0, 0},
10827         {0x4C, 0x4, 0x4, 0, 0},
10828         {0x4D, 0, 0, 0, 0},
10829         {0x4E, 0, 0, 0, 0},
10830         {0x4F, 0x26, 0x26, 1, 1},
10831         {0x50, 0x26, 0x26, 1, 1},
10832         {0x51, 0xf, 0xf, 1, 1},
10833         {0x52, 0xf, 0xf, 1, 1},
10834         {0x53, 0x44, 0x44, 0, 0},
10835         {0x54, 0, 0, 0, 0},
10836         {0x55, 0, 0, 0, 0},
10837         {0x56, 0x8, 0x8, 0, 0},
10838         {0x57, 0x8, 0x8, 0, 0},
10839         {0x58, 0x7, 0x7, 0, 0},
10840         {0x59, 0x22, 0x22, 0, 0},
10841         {0x5A, 0x22, 0x22, 0, 0},
10842         {0x5B, 0x2, 0x2, 0, 0},
10843         {0x5C, 0x4, 0x4, 1, 1},
10844         {0x5D, 0x7, 0x7, 0, 0},
10845         {0x5E, 0x55, 0x55, 0, 0},
10846         {0x5F, 0x23, 0x23, 0, 0},
10847         {0x60, 0x41, 0x41, 0, 0},
10848         {0x61, 0x1, 0x1, 0, 0},
10849         {0x62, 0xa, 0xa, 0, 0},
10850         {0x63, 0, 0, 0, 0},
10851         {0x64, 0, 0, 0, 0},
10852         {0x65, 0, 0, 0, 0},
10853         {0x66, 0, 0, 0, 0},
10854         {0x67, 0, 0, 0, 0},
10855         {0x68, 0, 0, 0, 0},
10856         {0x69, 0, 0, 0, 0},
10857         {0x6A, 0, 0, 0, 0},
10858         {0x6B, 0xc, 0xc, 0, 0},
10859         {0x6C, 0, 0, 0, 0},
10860         {0x6D, 0, 0, 0, 0},
10861         {0x6E, 0, 0, 0, 0},
10862         {0x6F, 0, 0, 0, 0},
10863         {0x70, 0, 0, 0, 0},
10864         {0x71, 0, 0, 0, 0},
10865         {0x72, 0x22, 0x22, 0, 0},
10866         {0x73, 0x22, 0x22, 0, 0},
10867         {0x74, 0, 0, 1, 1},
10868         {0x75, 0xa, 0xa, 0, 0},
10869         {0x76, 0x1, 0x1, 0, 0},
10870         {0x77, 0x22, 0x22, 0, 0},
10871         {0x78, 0x30, 0x30, 0, 0},
10872         {0x79, 0, 0, 0, 0},
10873         {0x7A, 0, 0, 0, 0},
10874         {0x7B, 0, 0, 0, 0},
10875         {0x7C, 0, 0, 0, 0},
10876         {0x7D, 0x5, 0x5, 1, 1},
10877         {0x7E, 0, 0, 0, 0},
10878         {0x7F, 0, 0, 0, 0},
10879         {0x80, 0, 0, 0, 0},
10880         {0x81, 0, 0, 0, 0},
10881         {0x82, 0, 0, 0, 0},
10882         {0x83, 0, 0, 0, 0},
10883         {0x84, 0, 0, 0, 0},
10884         {0x85, 0, 0, 0, 0},
10885         {0x86, 0, 0, 0, 0},
10886         {0x87, 0, 0, 0, 0},
10887         {0x88, 0, 0, 0, 0},
10888         {0x89, 0, 0, 0, 0},
10889         {0x8A, 0, 0, 0, 0},
10890         {0x8B, 0, 0, 0, 0},
10891         {0x8C, 0, 0, 0, 0},
10892         {0x8D, 0, 0, 0, 0},
10893         {0x8E, 0, 0, 0, 0},
10894         {0x8F, 0, 0, 0, 0},
10895         {0x90, 0, 0, 0, 0},
10896         {0x91, 0, 0, 0, 0},
10897         {0x92, 0, 0, 0, 0},
10898         {0x93, 0, 0, 0, 0},
10899         {0x94, 0, 0, 0, 0},
10900         {0xFFFF, 0, 0, 0, 0},
10901 };
10902
10903 radio_regs_t regs_SYN_2056_rev11[] = {
10904         {0x02, 0, 0, 0, 0},
10905         {0x03, 0, 0, 0, 0},
10906         {0x04, 0, 0, 0, 0},
10907         {0x05, 0, 0, 0, 0},
10908         {0x06, 0, 0, 0, 0},
10909         {0x07, 0, 0, 0, 0},
10910         {0x08, 0, 0, 0, 0},
10911         {0x09, 0x1, 0x1, 0, 0},
10912         {0x0A, 0, 0, 0, 0},
10913         {0x0B, 0, 0, 0, 0},
10914         {0x0C, 0, 0, 0, 0},
10915         {0x0D, 0, 0, 0, 0},
10916         {0x0E, 0, 0, 0, 0},
10917         {0x0F, 0, 0, 0, 0},
10918         {0x10, 0, 0, 0, 0},
10919         {0x11, 0, 0, 0, 0},
10920         {0x12, 0, 0, 0, 0},
10921         {0x13, 0, 0, 0, 0},
10922         {0x14, 0, 0, 0, 0},
10923         {0x15, 0, 0, 0, 0},
10924         {0x16, 0, 0, 0, 0},
10925         {0x17, 0, 0, 0, 0},
10926         {0x18, 0, 0, 0, 0},
10927         {0x19, 0, 0, 0, 0},
10928         {0x1A, 0, 0, 0, 0},
10929         {0x1B, 0, 0, 0, 0},
10930         {0x1C, 0, 0, 0, 0},
10931         {0x1D, 0, 0, 0, 0},
10932         {0x1E, 0, 0, 0, 0},
10933         {0x1F, 0, 0, 0, 0},
10934         {0x20, 0, 0, 0, 0},
10935         {0x21, 0, 0, 0, 0},
10936         {0x22, 0x60, 0x60, 0, 0},
10937         {0x23, 0x6, 0x6, 0, 0},
10938         {0x24, 0xc, 0xc, 0, 0},
10939         {0x25, 0, 0, 0, 0},
10940         {0x26, 0, 0, 0, 0},
10941         {0x27, 0, 0, 0, 0},
10942         {0x28, 0x1, 0x1, 0, 0},
10943         {0x29, 0, 0, 0, 0},
10944         {0x2A, 0, 0, 0, 0},
10945         {0x2B, 0, 0, 0, 0},
10946         {0x2C, 0, 0, 0, 0},
10947         {0x2D, 0, 0, 0, 0},
10948         {0x2E, 0, 0, 0, 0},
10949         {0x2F, 0x1f, 0x1f, 0, 0},
10950         {0x30, 0x15, 0x15, 0, 0},
10951         {0x31, 0xf, 0xf, 0, 0},
10952         {0x32, 0, 0, 0, 0},
10953         {0x33, 0, 0, 0, 0},
10954         {0x34, 0, 0, 0, 0},
10955         {0x35, 0, 0, 0, 0},
10956         {0x36, 0, 0, 0, 0},
10957         {0x37, 0, 0, 0, 0},
10958         {0x38, 0, 0, 0, 0},
10959         {0x39, 0, 0, 0, 0},
10960         {0x3A, 0, 0, 0, 0},
10961         {0x3B, 0, 0, 0, 0},
10962         {0x3C, 0x13, 0x13, 0, 0},
10963         {0x3D, 0xf, 0xf, 0, 0},
10964         {0x3E, 0x18, 0x18, 0, 0},
10965         {0x3F, 0, 0, 0, 0},
10966         {0x40, 0, 0, 0, 0},
10967         {0x41, 0x20, 0x20, 0, 0},
10968         {0x42, 0x20, 0x20, 0, 0},
10969         {0x43, 0, 0, 0, 0},
10970         {0x44, 0x77, 0x77, 0, 0},
10971         {0x45, 0x7, 0x7, 0, 0},
10972         {0x46, 0x1, 0x1, 0, 0},
10973         {0x47, 0x6, 0x6, 1, 1},
10974         {0x48, 0xf, 0xf, 0, 0},
10975         {0x49, 0x3f, 0x3f, 1, 1},
10976         {0x4A, 0x32, 0x32, 0, 0},
10977         {0x4B, 0x6, 0x6, 1, 1},
10978         {0x4C, 0x6, 0x6, 1, 1},
10979         {0x4D, 0x4, 0x4, 0, 0},
10980         {0x4E, 0x2b, 0x2b, 1, 1},
10981         {0x4F, 0x1, 0x1, 0, 0},
10982         {0x50, 0x1c, 0x1c, 0, 0},
10983         {0x51, 0x2, 0x2, 0, 0},
10984         {0x52, 0x2, 0x2, 0, 0},
10985         {0x53, 0xf7, 0xf7, 1, 1},
10986         {0x54, 0xb4, 0xb4, 0, 0},
10987         {0x55, 0xd2, 0xd2, 0, 0},
10988         {0x56, 0, 0, 0, 0},
10989         {0x57, 0, 0, 0, 0},
10990         {0x58, 0x4, 0x4, 0, 0},
10991         {0x59, 0x96, 0x96, 0, 0},
10992         {0x5A, 0x3e, 0x3e, 0, 0},
10993         {0x5B, 0x3e, 0x3e, 0, 0},
10994         {0x5C, 0x13, 0x13, 0, 0},
10995         {0x5D, 0x2, 0x2, 0, 0},
10996         {0x5E, 0, 0, 0, 0},
10997         {0x5F, 0x7, 0x7, 0, 0},
10998         {0x60, 0x7, 0x7, 1, 1},
10999         {0x61, 0x8, 0x8, 0, 0},
11000         {0x62, 0x3, 0x3, 0, 0},
11001         {0x63, 0, 0, 0, 0},
11002         {0x64, 0, 0, 0, 0},
11003         {0x65, 0, 0, 0, 0},
11004         {0x66, 0, 0, 0, 0},
11005         {0x67, 0, 0, 0, 0},
11006         {0x68, 0x40, 0x40, 0, 0},
11007         {0x69, 0, 0, 0, 0},
11008         {0x6A, 0, 0, 0, 0},
11009         {0x6B, 0, 0, 0, 0},
11010         {0x6C, 0, 0, 0, 0},
11011         {0x6D, 0x1, 0x1, 0, 0},
11012         {0x6E, 0, 0, 0, 0},
11013         {0x6F, 0, 0, 0, 0},
11014         {0x70, 0x60, 0x60, 0, 0},
11015         {0x71, 0x66, 0x66, 0, 0},
11016         {0x72, 0xc, 0xc, 0, 0},
11017         {0x73, 0x66, 0x66, 0, 0},
11018         {0x74, 0x8f, 0x8f, 1, 1},
11019         {0x75, 0, 0, 0, 0},
11020         {0x76, 0xcc, 0xcc, 0, 0},
11021         {0x77, 0x1, 0x1, 0, 0},
11022         {0x78, 0x66, 0x66, 0, 0},
11023         {0x79, 0x66, 0x66, 0, 0},
11024         {0x7A, 0, 0, 0, 0},
11025         {0x7B, 0, 0, 0, 0},
11026         {0x7C, 0, 0, 0, 0},
11027         {0x7D, 0, 0, 0, 0},
11028         {0x7E, 0, 0, 0, 0},
11029         {0x7F, 0, 0, 0, 0},
11030         {0x80, 0, 0, 0, 0},
11031         {0x81, 0, 0, 0, 0},
11032         {0x82, 0, 0, 0, 0},
11033         {0x83, 0, 0, 0, 0},
11034         {0x84, 0, 0, 0, 0},
11035         {0x85, 0xff, 0xff, 0, 0},
11036         {0x86, 0, 0, 0, 0},
11037         {0x87, 0, 0, 0, 0},
11038         {0x88, 0, 0, 0, 0},
11039         {0x89, 0, 0, 0, 0},
11040         {0x8A, 0, 0, 0, 0},
11041         {0x8B, 0, 0, 0, 0},
11042         {0x8C, 0, 0, 0, 0},
11043         {0x8D, 0, 0, 0, 0},
11044         {0x8E, 0, 0, 0, 0},
11045         {0x8F, 0, 0, 0, 0},
11046         {0x90, 0, 0, 0, 0},
11047         {0x91, 0, 0, 0, 0},
11048         {0x92, 0, 0, 0, 0},
11049         {0x93, 0, 0, 0, 0},
11050         {0x94, 0, 0, 0, 0},
11051         {0x95, 0, 0, 0, 0},
11052         {0x96, 0, 0, 0, 0},
11053         {0x97, 0, 0, 0, 0},
11054         {0x98, 0, 0, 0, 0},
11055         {0x99, 0, 0, 0, 0},
11056         {0x9A, 0, 0, 0, 0},
11057         {0x9B, 0, 0, 0, 0},
11058         {0x9C, 0, 0, 0, 0},
11059         {0x9D, 0, 0, 0, 0},
11060         {0x9E, 0, 0, 0, 0},
11061         {0x9F, 0x6, 0x6, 0, 0},
11062         {0xA0, 0x66, 0x66, 0, 0},
11063         {0xA1, 0x66, 0x66, 0, 0},
11064         {0xA2, 0x66, 0x66, 0, 0},
11065         {0xA3, 0x66, 0x66, 0, 0},
11066         {0xA4, 0x66, 0x66, 0, 0},
11067         {0xA5, 0x66, 0x66, 0, 0},
11068         {0xA6, 0x66, 0x66, 0, 0},
11069         {0xA7, 0x66, 0x66, 0, 0},
11070         {0xA8, 0x66, 0x66, 0, 0},
11071         {0xA9, 0x66, 0x66, 0, 0},
11072         {0xAA, 0x66, 0x66, 0, 0},
11073         {0xAB, 0x66, 0x66, 0, 0},
11074         {0xAC, 0x66, 0x66, 0, 0},
11075         {0xAD, 0x66, 0x66, 0, 0},
11076         {0xAE, 0x66, 0x66, 0, 0},
11077         {0xAF, 0x66, 0x66, 0, 0},
11078         {0xB0, 0x66, 0x66, 0, 0},
11079         {0xB1, 0x66, 0x66, 0, 0},
11080         {0xB2, 0x66, 0x66, 0, 0},
11081         {0xB3, 0xa, 0xa, 0, 0},
11082         {0xB4, 0, 0, 0, 0},
11083         {0xB5, 0, 0, 0, 0},
11084         {0xB6, 0, 0, 0, 0},
11085         {0xFFFF, 0, 0, 0, 0},
11086 };
11087
11088 radio_regs_t regs_TX_2056_rev11[] = {
11089         {0x02, 0, 0, 0, 0},
11090         {0x03, 0, 0, 0, 0},
11091         {0x04, 0, 0, 0, 0},
11092         {0x05, 0, 0, 0, 0},
11093         {0x06, 0, 0, 0, 0},
11094         {0x07, 0, 0, 0, 0},
11095         {0x08, 0, 0, 0, 0},
11096         {0x09, 0, 0, 0, 0},
11097         {0x0A, 0, 0, 0, 0},
11098         {0x0B, 0, 0, 0, 0},
11099         {0x0C, 0, 0, 0, 0},
11100         {0x0D, 0, 0, 0, 0},
11101         {0x0E, 0, 0, 0, 0},
11102         {0x0F, 0, 0, 0, 0},
11103         {0x10, 0, 0, 0, 0},
11104         {0x11, 0, 0, 0, 0},
11105         {0x12, 0, 0, 0, 0},
11106         {0x13, 0, 0, 0, 0},
11107         {0x14, 0, 0, 0, 0},
11108         {0x15, 0, 0, 0, 0},
11109         {0x16, 0, 0, 0, 0},
11110         {0x17, 0, 0, 0, 0},
11111         {0x18, 0, 0, 0, 0},
11112         {0x19, 0, 0, 0, 0},
11113         {0x1A, 0, 0, 0, 0},
11114         {0x1B, 0, 0, 0, 0},
11115         {0x1C, 0, 0, 0, 0},
11116         {0x1D, 0, 0, 0, 0},
11117         {0x1E, 0, 0, 0, 0},
11118         {0x1F, 0, 0, 0, 0},
11119         {0x20, 0, 0, 0, 0},
11120         {0x21, 0x88, 0x88, 0, 0},
11121         {0x22, 0x88, 0x88, 0, 0},
11122         {0x23, 0x88, 0x88, 0, 0},
11123         {0x24, 0x88, 0x88, 0, 0},
11124         {0x25, 0xc, 0xc, 0, 0},
11125         {0x26, 0, 0, 0, 0},
11126         {0x27, 0x3, 0x3, 0, 0},
11127         {0x28, 0, 0, 0, 0},
11128         {0x29, 0x3, 0x3, 0, 0},
11129         {0x2A, 0x37, 0x37, 0, 0},
11130         {0x2B, 0x3, 0x3, 0, 0},
11131         {0x2C, 0, 0, 0, 0},
11132         {0x2D, 0, 0, 0, 0},
11133         {0x2E, 0x1, 0x1, 0, 0},
11134         {0x2F, 0x1, 0x1, 0, 0},
11135         {0x30, 0, 0, 0, 0},
11136         {0x31, 0, 0, 0, 0},
11137         {0x32, 0, 0, 0, 0},
11138         {0x33, 0x11, 0x11, 0, 0},
11139         {0x34, 0xee, 0xee, 1, 1},
11140         {0x35, 0, 0, 0, 0},
11141         {0x36, 0, 0, 0, 0},
11142         {0x37, 0x3, 0x3, 0, 0},
11143         {0x38, 0x50, 0x50, 1, 1},
11144         {0x39, 0, 0, 0, 0},
11145         {0x3A, 0x50, 0x50, 1, 1},
11146         {0x3B, 0, 0, 0, 0},
11147         {0x3C, 0x6e, 0x6e, 0, 0},
11148         {0x3D, 0xf0, 0xf0, 1, 1},
11149         {0x3E, 0, 0, 0, 0},
11150         {0x3F, 0, 0, 0, 0},
11151         {0x40, 0, 0, 0, 0},
11152         {0x41, 0x3, 0x3, 0, 0},
11153         {0x42, 0x3, 0x3, 0, 0},
11154         {0x43, 0, 0, 0, 0},
11155         {0x44, 0x1e, 0x1e, 0, 0},
11156         {0x45, 0, 0, 0, 0},
11157         {0x46, 0x6e, 0x6e, 0, 0},
11158         {0x47, 0xf0, 0xf0, 1, 1},
11159         {0x48, 0, 0, 0, 0},
11160         {0x49, 0x2, 0x2, 0, 0},
11161         {0x4A, 0xff, 0xff, 1, 1},
11162         {0x4B, 0xc, 0xc, 0, 0},
11163         {0x4C, 0, 0, 0, 0},
11164         {0x4D, 0x38, 0x38, 0, 0},
11165         {0x4E, 0x70, 0x70, 1, 1},
11166         {0x4F, 0x2, 0x2, 0, 0},
11167         {0x50, 0x88, 0x88, 0, 0},
11168         {0x51, 0xc, 0xc, 0, 0},
11169         {0x52, 0, 0, 0, 0},
11170         {0x53, 0x8, 0x8, 0, 0},
11171         {0x54, 0x70, 0x70, 1, 1},
11172         {0x55, 0x2, 0x2, 0, 0},
11173         {0x56, 0xff, 0xff, 1, 1},
11174         {0x57, 0, 0, 0, 0},
11175         {0x58, 0x83, 0x83, 0, 0},
11176         {0x59, 0x77, 0x77, 1, 1},
11177         {0x5A, 0, 0, 0, 0},
11178         {0x5B, 0x2, 0x2, 0, 0},
11179         {0x5C, 0x88, 0x88, 0, 0},
11180         {0x5D, 0, 0, 0, 0},
11181         {0x5E, 0x8, 0x8, 0, 0},
11182         {0x5F, 0x77, 0x77, 1, 1},
11183         {0x60, 0x1, 0x1, 0, 0},
11184         {0x61, 0, 0, 0, 0},
11185         {0x62, 0x7, 0x7, 0, 0},
11186         {0x63, 0, 0, 0, 0},
11187         {0x64, 0x7, 0x7, 0, 0},
11188         {0x65, 0, 0, 0, 0},
11189         {0x66, 0, 0, 0, 0},
11190         {0x67, 0, 0, 1, 1},
11191         {0x68, 0, 0, 0, 0},
11192         {0x69, 0xa, 0xa, 0, 0},
11193         {0x6A, 0, 0, 0, 0},
11194         {0x6B, 0, 0, 0, 0},
11195         {0x6C, 0, 0, 0, 0},
11196         {0x6D, 0, 0, 0, 0},
11197         {0x6E, 0, 0, 0, 0},
11198         {0x6F, 0, 0, 0, 0},
11199         {0x70, 0, 0, 0, 0},
11200         {0x71, 0x2, 0x2, 0, 0},
11201         {0x72, 0, 0, 0, 0},
11202         {0x73, 0, 0, 0, 0},
11203         {0x74, 0xe, 0xe, 0, 0},
11204         {0x75, 0xe, 0xe, 0, 0},
11205         {0x76, 0xe, 0xe, 0, 0},
11206         {0x77, 0x13, 0x13, 0, 0},
11207         {0x78, 0x13, 0x13, 0, 0},
11208         {0x79, 0x1b, 0x1b, 0, 0},
11209         {0x7A, 0x1b, 0x1b, 0, 0},
11210         {0x7B, 0x55, 0x55, 0, 0},
11211         {0x7C, 0x5b, 0x5b, 0, 0},
11212         {0x7D, 0x30, 0x30, 1, 1},
11213         {0x7E, 0, 0, 0, 0},
11214         {0x7F, 0, 0, 0, 0},
11215         {0x80, 0, 0, 0, 0},
11216         {0x81, 0, 0, 0, 0},
11217         {0x82, 0, 0, 0, 0},
11218         {0x83, 0, 0, 0, 0},
11219         {0x84, 0, 0, 0, 0},
11220         {0x85, 0, 0, 0, 0},
11221         {0x86, 0, 0, 0, 0},
11222         {0x87, 0, 0, 0, 0},
11223         {0x88, 0, 0, 0, 0},
11224         {0x89, 0, 0, 0, 0},
11225         {0x8A, 0, 0, 0, 0},
11226         {0x8B, 0, 0, 0, 0},
11227         {0x8C, 0, 0, 0, 0},
11228         {0x8D, 0, 0, 0, 0},
11229         {0x8E, 0, 0, 0, 0},
11230         {0x8F, 0, 0, 0, 0},
11231         {0x90, 0, 0, 0, 0},
11232         {0x91, 0, 0, 0, 0},
11233         {0x92, 0, 0, 0, 0},
11234         {0x93, 0x70, 0x70, 0, 0},
11235         {0x94, 0x70, 0x70, 0, 0},
11236         {0x95, 0x70, 0x70, 0, 0},
11237         {0x96, 0x70, 0x70, 0, 0},
11238         {0x97, 0x70, 0x70, 0, 0},
11239         {0x98, 0x70, 0x70, 0, 0},
11240         {0x99, 0x70, 0x70, 0, 0},
11241         {0x9A, 0x70, 0x70, 0, 0},
11242         {0xFFFF, 0, 0, 0, 0},
11243 };
11244
11245 radio_regs_t regs_RX_2056_rev11[] = {
11246         {0x02, 0, 0, 0, 0},
11247         {0x03, 0, 0, 0, 0},
11248         {0x04, 0, 0, 0, 0},
11249         {0x05, 0, 0, 0, 0},
11250         {0x06, 0, 0, 0, 0},
11251         {0x07, 0, 0, 0, 0},
11252         {0x08, 0, 0, 0, 0},
11253         {0x09, 0, 0, 0, 0},
11254         {0x0A, 0, 0, 0, 0},
11255         {0x0B, 0, 0, 0, 0},
11256         {0x0C, 0, 0, 0, 0},
11257         {0x0D, 0, 0, 0, 0},
11258         {0x0E, 0, 0, 0, 0},
11259         {0x0F, 0, 0, 0, 0},
11260         {0x10, 0, 0, 0, 0},
11261         {0x11, 0, 0, 0, 0},
11262         {0x12, 0, 0, 0, 0},
11263         {0x13, 0, 0, 0, 0},
11264         {0x14, 0, 0, 0, 0},
11265         {0x15, 0, 0, 0, 0},
11266         {0x16, 0, 0, 0, 0},
11267         {0x17, 0, 0, 0, 0},
11268         {0x18, 0, 0, 0, 0},
11269         {0x19, 0, 0, 0, 0},
11270         {0x1A, 0, 0, 0, 0},
11271         {0x1B, 0, 0, 0, 0},
11272         {0x1C, 0, 0, 0, 0},
11273         {0x1D, 0, 0, 0, 0},
11274         {0x1E, 0, 0, 0, 0},
11275         {0x1F, 0, 0, 0, 0},
11276         {0x20, 0x3, 0x3, 0, 0},
11277         {0x21, 0, 0, 0, 0},
11278         {0x22, 0, 0, 0, 0},
11279         {0x23, 0x90, 0x90, 0, 0},
11280         {0x24, 0x55, 0x55, 0, 0},
11281         {0x25, 0x15, 0x15, 0, 0},
11282         {0x26, 0x5, 0x5, 0, 0},
11283         {0x27, 0x15, 0x15, 0, 0},
11284         {0x28, 0x5, 0x5, 0, 0},
11285         {0x29, 0x20, 0x20, 0, 0},
11286         {0x2A, 0x11, 0x11, 0, 0},
11287         {0x2B, 0x90, 0x90, 0, 0},
11288         {0x2C, 0, 0, 0, 0},
11289         {0x2D, 0x88, 0x88, 0, 0},
11290         {0x2E, 0x32, 0x32, 0, 0},
11291         {0x2F, 0x77, 0x77, 0, 0},
11292         {0x30, 0x17, 0x17, 1, 1},
11293         {0x31, 0xff, 0xff, 1, 1},
11294         {0x32, 0x20, 0x20, 0, 0},
11295         {0x33, 0, 0, 0, 0},
11296         {0x34, 0x88, 0x88, 0, 0},
11297         {0x35, 0x32, 0x32, 0, 0},
11298         {0x36, 0x77, 0x77, 0, 0},
11299         {0x37, 0x17, 0x17, 1, 1},
11300         {0x38, 0xf0, 0xf0, 1, 1},
11301         {0x39, 0x20, 0x20, 0, 0},
11302         {0x3A, 0x8, 0x8, 0, 0},
11303         {0x3B, 0x55, 0x55, 1, 1},
11304         {0x3C, 0, 0, 0, 0},
11305         {0x3D, 0x88, 0x88, 1, 1},
11306         {0x3E, 0, 0, 0, 0},
11307         {0x3F, 0x44, 0x44, 0, 0},
11308         {0x40, 0x7, 0x7, 1, 1},
11309         {0x41, 0x6, 0x6, 0, 0},
11310         {0x42, 0x4, 0x4, 0, 0},
11311         {0x43, 0, 0, 0, 0},
11312         {0x44, 0x8, 0x8, 0, 0},
11313         {0x45, 0x55, 0x55, 1, 1},
11314         {0x46, 0, 0, 0, 0},
11315         {0x47, 0x11, 0x11, 0, 0},
11316         {0x48, 0, 0, 0, 0},
11317         {0x49, 0x44, 0x44, 0, 0},
11318         {0x4A, 0x7, 0x7, 0, 0},
11319         {0x4B, 0x6, 0x6, 0, 0},
11320         {0x4C, 0x4, 0x4, 0, 0},
11321         {0x4D, 0, 0, 0, 0},
11322         {0x4E, 0, 0, 0, 0},
11323         {0x4F, 0x26, 0x26, 1, 1},
11324         {0x50, 0x26, 0x26, 1, 1},
11325         {0x51, 0xf, 0xf, 1, 1},
11326         {0x52, 0xf, 0xf, 1, 1},
11327         {0x53, 0x44, 0x44, 0, 0},
11328         {0x54, 0, 0, 0, 0},
11329         {0x55, 0, 0, 0, 0},
11330         {0x56, 0x8, 0x8, 0, 0},
11331         {0x57, 0x8, 0x8, 0, 0},
11332         {0x58, 0x7, 0x7, 0, 0},
11333         {0x59, 0x22, 0x22, 0, 0},
11334         {0x5A, 0x22, 0x22, 0, 0},
11335         {0x5B, 0x2, 0x2, 0, 0},
11336         {0x5C, 0x4, 0x4, 1, 1},
11337         {0x5D, 0x7, 0x7, 0, 0},
11338         {0x5E, 0x55, 0x55, 0, 0},
11339         {0x5F, 0x23, 0x23, 0, 0},
11340         {0x60, 0x41, 0x41, 0, 0},
11341         {0x61, 0x1, 0x1, 0, 0},
11342         {0x62, 0xa, 0xa, 0, 0},
11343         {0x63, 0, 0, 0, 0},
11344         {0x64, 0, 0, 0, 0},
11345         {0x65, 0, 0, 0, 0},
11346         {0x66, 0, 0, 0, 0},
11347         {0x67, 0, 0, 0, 0},
11348         {0x68, 0, 0, 0, 0},
11349         {0x69, 0, 0, 0, 0},
11350         {0x6A, 0, 0, 0, 0},
11351         {0x6B, 0xc, 0xc, 0, 0},
11352         {0x6C, 0, 0, 0, 0},
11353         {0x6D, 0, 0, 0, 0},
11354         {0x6E, 0, 0, 0, 0},
11355         {0x6F, 0, 0, 0, 0},
11356         {0x70, 0, 0, 0, 0},
11357         {0x71, 0, 0, 0, 0},
11358         {0x72, 0x22, 0x22, 0, 0},
11359         {0x73, 0x22, 0x22, 0, 0},
11360         {0x74, 0, 0, 1, 1},
11361         {0x75, 0xa, 0xa, 0, 0},
11362         {0x76, 0x1, 0x1, 0, 0},
11363         {0x77, 0x22, 0x22, 0, 0},
11364         {0x78, 0x30, 0x30, 0, 0},
11365         {0x79, 0, 0, 0, 0},
11366         {0x7A, 0, 0, 0, 0},
11367         {0x7B, 0, 0, 0, 0},
11368         {0x7C, 0, 0, 0, 0},
11369         {0x7D, 0x5, 0x5, 1, 1},
11370         {0x7E, 0, 0, 0, 0},
11371         {0x7F, 0, 0, 0, 0},
11372         {0x80, 0, 0, 0, 0},
11373         {0x81, 0, 0, 0, 0},
11374         {0x82, 0, 0, 0, 0},
11375         {0x83, 0, 0, 0, 0},
11376         {0x84, 0, 0, 0, 0},
11377         {0x85, 0, 0, 0, 0},
11378         {0x86, 0, 0, 0, 0},
11379         {0x87, 0, 0, 0, 0},
11380         {0x88, 0, 0, 0, 0},
11381         {0x89, 0, 0, 0, 0},
11382         {0x8A, 0, 0, 0, 0},
11383         {0x8B, 0, 0, 0, 0},
11384         {0x8C, 0, 0, 0, 0},
11385         {0x8D, 0, 0, 0, 0},
11386         {0x8E, 0, 0, 0, 0},
11387         {0x8F, 0, 0, 0, 0},
11388         {0x90, 0, 0, 0, 0},
11389         {0x91, 0, 0, 0, 0},
11390         {0x92, 0, 0, 0, 0},
11391         {0x93, 0, 0, 0, 0},
11392         {0x94, 0, 0, 0, 0},
11393         {0xFFFF, 0, 0, 0, 0},
11394 };
11395
11396 radio_20xx_regs_t regs_2057_rev4[] = {
11397         {0x00, 0x84, 0},
11398         {0x01, 0, 0},
11399         {0x02, 0x60, 0},
11400         {0x03, 0x1f, 0},
11401         {0x04, 0x4, 0},
11402         {0x05, 0x2, 0},
11403         {0x06, 0x1, 0},
11404         {0x07, 0x1, 0},
11405         {0x08, 0x1, 0},
11406         {0x09, 0x69, 0},
11407         {0x0A, 0x66, 0},
11408         {0x0B, 0x6, 0},
11409         {0x0C, 0x18, 0},
11410         {0x0D, 0x3, 0},
11411         {0x0E, 0x20, 1},
11412         {0x0F, 0x20, 0},
11413         {0x10, 0, 0},
11414         {0x11, 0x7c, 0},
11415         {0x12, 0x42, 0},
11416         {0x13, 0xbd, 0},
11417         {0x14, 0x7, 0},
11418         {0x15, 0xf7, 0},
11419         {0x16, 0x8, 0},
11420         {0x17, 0x17, 0},
11421         {0x18, 0x7, 0},
11422         {0x19, 0, 0},
11423         {0x1A, 0x2, 0},
11424         {0x1B, 0x13, 0},
11425         {0x1C, 0x3e, 0},
11426         {0x1D, 0x3e, 0},
11427         {0x1E, 0x96, 0},
11428         {0x1F, 0x4, 0},
11429         {0x20, 0, 0},
11430         {0x21, 0, 0},
11431         {0x22, 0x17, 0},
11432         {0x23, 0x4, 0},
11433         {0x24, 0x1, 0},
11434         {0x25, 0x6, 0},
11435         {0x26, 0x4, 0},
11436         {0x27, 0xd, 0},
11437         {0x28, 0xd, 0},
11438         {0x29, 0x30, 0},
11439         {0x2A, 0x32, 0},
11440         {0x2B, 0x8, 0},
11441         {0x2C, 0x1c, 0},
11442         {0x2D, 0x2, 0},
11443         {0x2E, 0x4, 0},
11444         {0x2F, 0x7f, 0},
11445         {0x30, 0x27, 0},
11446         {0x31, 0, 1},
11447         {0x32, 0, 1},
11448         {0x33, 0, 1},
11449         {0x34, 0, 0},
11450         {0x35, 0x26, 1},
11451         {0x36, 0x18, 0},
11452         {0x37, 0x7, 0},
11453         {0x38, 0x66, 0},
11454         {0x39, 0x66, 0},
11455         {0x3A, 0x66, 0},
11456         {0x3B, 0x66, 0},
11457         {0x3C, 0xff, 1},
11458         {0x3D, 0xff, 1},
11459         {0x3E, 0xff, 1},
11460         {0x3F, 0xff, 1},
11461         {0x40, 0x16, 0},
11462         {0x41, 0x7, 0},
11463         {0x42, 0x19, 0},
11464         {0x43, 0x7, 0},
11465         {0x44, 0x6, 0},
11466         {0x45, 0x3, 0},
11467         {0x46, 0x1, 0},
11468         {0x47, 0x7, 0},
11469         {0x48, 0x33, 0},
11470         {0x49, 0x5, 0},
11471         {0x4A, 0x77, 0},
11472         {0x4B, 0x66, 0},
11473         {0x4C, 0x66, 0},
11474         {0x4D, 0, 0},
11475         {0x4E, 0x4, 0},
11476         {0x4F, 0xc, 0},
11477         {0x50, 0, 0},
11478         {0x51, 0x75, 0},
11479         {0x56, 0x7, 0},
11480         {0x57, 0, 0},
11481         {0x58, 0, 0},
11482         {0x59, 0xa8, 0},
11483         {0x5A, 0, 0},
11484         {0x5B, 0x1f, 0},
11485         {0x5C, 0x30, 0},
11486         {0x5D, 0x1, 0},
11487         {0x5E, 0x30, 0},
11488         {0x5F, 0x70, 0},
11489         {0x60, 0, 0},
11490         {0x61, 0, 0},
11491         {0x62, 0x33, 1},
11492         {0x63, 0x19, 0},
11493         {0x64, 0x62, 0},
11494         {0x65, 0, 0},
11495         {0x66, 0x11, 0},
11496         {0x69, 0, 0},
11497         {0x6A, 0x7e, 0},
11498         {0x6B, 0x3f, 0},
11499         {0x6C, 0x7f, 0},
11500         {0x6D, 0x78, 0},
11501         {0x6E, 0xc8, 0},
11502         {0x6F, 0x88, 0},
11503         {0x70, 0x8, 0},
11504         {0x71, 0xf, 0},
11505         {0x72, 0xbc, 0},
11506         {0x73, 0x8, 0},
11507         {0x74, 0x60, 0},
11508         {0x75, 0x1e, 0},
11509         {0x76, 0x70, 0},
11510         {0x77, 0, 0},
11511         {0x78, 0, 0},
11512         {0x79, 0, 0},
11513         {0x7A, 0x33, 0},
11514         {0x7B, 0x1e, 0},
11515         {0x7C, 0x62, 0},
11516         {0x7D, 0x11, 0},
11517         {0x80, 0x3c, 0},
11518         {0x81, 0x9c, 0},
11519         {0x82, 0xa, 0},
11520         {0x83, 0x9d, 0},
11521         {0x84, 0xa, 0},
11522         {0x85, 0, 0},
11523         {0x86, 0x40, 0},
11524         {0x87, 0x40, 0},
11525         {0x88, 0x88, 0},
11526         {0x89, 0x10, 0},
11527         {0x8A, 0xf0, 1},
11528         {0x8B, 0x10, 1},
11529         {0x8C, 0xf0, 1},
11530         {0x8D, 0, 0},
11531         {0x8E, 0, 0},
11532         {0x8F, 0x10, 0},
11533         {0x90, 0x55, 0},
11534         {0x91, 0x3f, 1},
11535         {0x92, 0x36, 1},
11536         {0x93, 0, 0},
11537         {0x94, 0, 0},
11538         {0x95, 0, 0},
11539         {0x96, 0x87, 0},
11540         {0x97, 0x11, 0},
11541         {0x98, 0, 0},
11542         {0x99, 0x33, 0},
11543         {0x9A, 0x88, 0},
11544         {0x9B, 0, 0},
11545         {0x9C, 0x87, 0},
11546         {0x9D, 0x11, 0},
11547         {0x9E, 0, 0},
11548         {0x9F, 0x33, 0},
11549         {0xA0, 0x88, 0},
11550         {0xA1, 0xe1, 0},
11551         {0xA2, 0x3f, 0},
11552         {0xA3, 0x44, 0},
11553         {0xA4, 0x8c, 1},
11554         {0xA5, 0x6d, 0},
11555         {0xA6, 0x22, 0},
11556         {0xA7, 0xbe, 0},
11557         {0xA8, 0x55, 1},
11558         {0xA9, 0xc, 0},
11559         {0xAA, 0xc, 0},
11560         {0xAB, 0xaa, 0},
11561         {0xAC, 0x2, 0},
11562         {0xAD, 0, 0},
11563         {0xAE, 0x10, 0},
11564         {0xAF, 0x1, 1},
11565         {0xB0, 0, 0},
11566         {0xB1, 0, 0},
11567         {0xB2, 0x80, 0},
11568         {0xB3, 0x60, 0},
11569         {0xB4, 0x44, 0},
11570         {0xB5, 0x55, 0},
11571         {0xB6, 0x1, 0},
11572         {0xB7, 0x55, 0},
11573         {0xB8, 0x1, 0},
11574         {0xB9, 0x5, 0},
11575         {0xBA, 0x55, 0},
11576         {0xBB, 0x55, 0},
11577         {0xC1, 0, 0},
11578         {0xC2, 0, 0},
11579         {0xC3, 0, 0},
11580         {0xC4, 0, 0},
11581         {0xC5, 0, 0},
11582         {0xC6, 0, 0},
11583         {0xC7, 0, 0},
11584         {0xC8, 0, 0},
11585         {0xC9, 0, 0},
11586         {0xCA, 0, 0},
11587         {0xCB, 0, 0},
11588         {0xCC, 0, 0},
11589         {0xCD, 0, 0},
11590         {0xCE, 0x5e, 0},
11591         {0xCF, 0xc, 0},
11592         {0xD0, 0xc, 0},
11593         {0xD1, 0xc, 0},
11594         {0xD2, 0, 0},
11595         {0xD3, 0x2b, 0},
11596         {0xD4, 0xc, 0},
11597         {0xD5, 0, 0},
11598         {0xD6, 0x75, 0},
11599         {0xDB, 0x7, 0},
11600         {0xDC, 0, 0},
11601         {0xDD, 0, 0},
11602         {0xDE, 0xa8, 0},
11603         {0xDF, 0, 0},
11604         {0xE0, 0x1f, 0},
11605         {0xE1, 0x30, 0},
11606         {0xE2, 0x1, 0},
11607         {0xE3, 0x30, 0},
11608         {0xE4, 0x70, 0},
11609         {0xE5, 0, 0},
11610         {0xE6, 0, 0},
11611         {0xE7, 0x33, 0},
11612         {0xE8, 0x19, 0},
11613         {0xE9, 0x62, 0},
11614         {0xEA, 0, 0},
11615         {0xEB, 0x11, 0},
11616         {0xEE, 0, 0},
11617         {0xEF, 0x7e, 0},
11618         {0xF0, 0x3f, 0},
11619         {0xF1, 0x7f, 0},
11620         {0xF2, 0x78, 0},
11621         {0xF3, 0xc8, 0},
11622         {0xF4, 0x88, 0},
11623         {0xF5, 0x8, 0},
11624         {0xF6, 0xf, 0},
11625         {0xF7, 0xbc, 0},
11626         {0xF8, 0x8, 0},
11627         {0xF9, 0x60, 0},
11628         {0xFA, 0x1e, 0},
11629         {0xFB, 0x70, 0},
11630         {0xFC, 0, 0},
11631         {0xFD, 0, 0},
11632         {0xFE, 0, 0},
11633         {0xFF, 0x33, 0},
11634         {0x100, 0x1e, 0},
11635         {0x101, 0x62, 0},
11636         {0x102, 0x11, 0},
11637         {0x105, 0x3c, 0},
11638         {0x106, 0x9c, 0},
11639         {0x107, 0xa, 0},
11640         {0x108, 0x9d, 0},
11641         {0x109, 0xa, 0},
11642         {0x10A, 0, 0},
11643         {0x10B, 0x40, 0},
11644         {0x10C, 0x40, 0},
11645         {0x10D, 0x88, 0},
11646         {0x10E, 0x10, 0},
11647         {0x10F, 0xf0, 1},
11648         {0x110, 0x10, 1},
11649         {0x111, 0xf0, 1},
11650         {0x112, 0, 0},
11651         {0x113, 0, 0},
11652         {0x114, 0x10, 0},
11653         {0x115, 0x55, 0},
11654         {0x116, 0x3f, 1},
11655         {0x117, 0x36, 1},
11656         {0x118, 0, 0},
11657         {0x119, 0, 0},
11658         {0x11A, 0, 0},
11659         {0x11B, 0x87, 0},
11660         {0x11C, 0x11, 0},
11661         {0x11D, 0, 0},
11662         {0x11E, 0x33, 0},
11663         {0x11F, 0x88, 0},
11664         {0x120, 0, 0},
11665         {0x121, 0x87, 0},
11666         {0x122, 0x11, 0},
11667         {0x123, 0, 0},
11668         {0x124, 0x33, 0},
11669         {0x125, 0x88, 0},
11670         {0x126, 0xe1, 0},
11671         {0x127, 0x3f, 0},
11672         {0x128, 0x44, 0},
11673         {0x129, 0x8c, 1},
11674         {0x12A, 0x6d, 0},
11675         {0x12B, 0x22, 0},
11676         {0x12C, 0xbe, 0},
11677         {0x12D, 0x55, 1},
11678         {0x12E, 0xc, 0},
11679         {0x12F, 0xc, 0},
11680         {0x130, 0xaa, 0},
11681         {0x131, 0x2, 0},
11682         {0x132, 0, 0},
11683         {0x133, 0x10, 0},
11684         {0x134, 0x1, 1},
11685         {0x135, 0, 0},
11686         {0x136, 0, 0},
11687         {0x137, 0x80, 0},
11688         {0x138, 0x60, 0},
11689         {0x139, 0x44, 0},
11690         {0x13A, 0x55, 0},
11691         {0x13B, 0x1, 0},
11692         {0x13C, 0x55, 0},
11693         {0x13D, 0x1, 0},
11694         {0x13E, 0x5, 0},
11695         {0x13F, 0x55, 0},
11696         {0x140, 0x55, 0},
11697         {0x146, 0, 0},
11698         {0x147, 0, 0},
11699         {0x148, 0, 0},
11700         {0x149, 0, 0},
11701         {0x14A, 0, 0},
11702         {0x14B, 0, 0},
11703         {0x14C, 0, 0},
11704         {0x14D, 0, 0},
11705         {0x14E, 0, 0},
11706         {0x14F, 0, 0},
11707         {0x150, 0, 0},
11708         {0x151, 0, 0},
11709         {0x152, 0, 0},
11710         {0x153, 0, 0},
11711         {0x154, 0xc, 0},
11712         {0x155, 0xc, 0},
11713         {0x156, 0xc, 0},
11714         {0x157, 0, 0},
11715         {0x158, 0x2b, 0},
11716         {0x159, 0x84, 0},
11717         {0x15A, 0x15, 0},
11718         {0x15B, 0xf, 0},
11719         {0x15C, 0, 0},
11720         {0x15D, 0, 0},
11721         {0x15E, 0, 1},
11722         {0x15F, 0, 1},
11723         {0x160, 0, 1},
11724         {0x161, 0, 1},
11725         {0x162, 0, 1},
11726         {0x163, 0, 1},
11727         {0x164, 0, 0},
11728         {0x165, 0, 0},
11729         {0x166, 0, 0},
11730         {0x167, 0, 0},
11731         {0x168, 0, 0},
11732         {0x169, 0x2, 1},
11733         {0x16A, 0, 1},
11734         {0x16B, 0, 1},
11735         {0x16C, 0, 1},
11736         {0x16D, 0, 0},
11737         {0x170, 0, 0},
11738         {0x171, 0x77, 0},
11739         {0x172, 0x77, 0},
11740         {0x173, 0x77, 0},
11741         {0x174, 0x77, 0},
11742         {0x175, 0, 0},
11743         {0x176, 0x3, 0},
11744         {0x177, 0x37, 0},
11745         {0x178, 0x3, 0},
11746         {0x179, 0, 0},
11747         {0x17A, 0x21, 0},
11748         {0x17B, 0x21, 0},
11749         {0x17C, 0, 0},
11750         {0x17D, 0xaa, 0},
11751         {0x17E, 0, 0},
11752         {0x17F, 0xaa, 0},
11753         {0x180, 0, 0},
11754         {0x190, 0, 0},
11755         {0x191, 0x77, 0},
11756         {0x192, 0x77, 0},
11757         {0x193, 0x77, 0},
11758         {0x194, 0x77, 0},
11759         {0x195, 0, 0},
11760         {0x196, 0x3, 0},
11761         {0x197, 0x37, 0},
11762         {0x198, 0x3, 0},
11763         {0x199, 0, 0},
11764         {0x19A, 0x21, 0},
11765         {0x19B, 0x21, 0},
11766         {0x19C, 0, 0},
11767         {0x19D, 0xaa, 0},
11768         {0x19E, 0, 0},
11769         {0x19F, 0xaa, 0},
11770         {0x1A0, 0, 0},
11771         {0x1A1, 0x2, 0},
11772         {0x1A2, 0xf, 0},
11773         {0x1A3, 0xf, 0},
11774         {0x1A4, 0, 1},
11775         {0x1A5, 0, 1},
11776         {0x1A6, 0, 1},
11777         {0x1A7, 0x2, 0},
11778         {0x1A8, 0xf, 0},
11779         {0x1A9, 0xf, 0},
11780         {0x1AA, 0, 1},
11781         {0x1AB, 0, 1},
11782         {0x1AC, 0, 1},
11783         {0xFFFF, 0, 0},
11784 };
11785
11786 radio_20xx_regs_t regs_2057_rev5[] = {
11787         {0x00, 0, 1},
11788         {0x01, 0x57, 1},
11789         {0x02, 0x20, 1},
11790         {0x03, 0x1f, 0},
11791         {0x04, 0x4, 0},
11792         {0x05, 0x2, 0},
11793         {0x06, 0x1, 0},
11794         {0x07, 0x1, 0},
11795         {0x08, 0x1, 0},
11796         {0x09, 0x69, 0},
11797         {0x0A, 0x66, 0},
11798         {0x0B, 0x6, 0},
11799         {0x0C, 0x18, 0},
11800         {0x0D, 0x3, 0},
11801         {0x0E, 0x20, 0},
11802         {0x0F, 0x20, 0},
11803         {0x10, 0, 0},
11804         {0x11, 0x7c, 0},
11805         {0x12, 0x42, 0},
11806         {0x13, 0xbd, 0},
11807         {0x14, 0x7, 0},
11808         {0x15, 0x87, 0},
11809         {0x16, 0x8, 0},
11810         {0x17, 0x17, 0},
11811         {0x18, 0x7, 0},
11812         {0x19, 0, 0},
11813         {0x1A, 0x2, 0},
11814         {0x1B, 0x13, 0},
11815         {0x1C, 0x3e, 0},
11816         {0x1D, 0x3e, 0},
11817         {0x1E, 0x96, 0},
11818         {0x1F, 0x4, 0},
11819         {0x20, 0, 0},
11820         {0x21, 0, 0},
11821         {0x22, 0x17, 0},
11822         {0x23, 0x6, 1},
11823         {0x24, 0x1, 0},
11824         {0x25, 0x6, 0},
11825         {0x26, 0x4, 0},
11826         {0x27, 0xd, 0},
11827         {0x28, 0xd, 0},
11828         {0x29, 0x30, 0},
11829         {0x2A, 0x32, 0},
11830         {0x2B, 0x8, 0},
11831         {0x2C, 0x1c, 0},
11832         {0x2D, 0x2, 0},
11833         {0x2E, 0x4, 0},
11834         {0x2F, 0x7f, 0},
11835         {0x30, 0x27, 0},
11836         {0x31, 0, 1},
11837         {0x32, 0, 1},
11838         {0x33, 0, 1},
11839         {0x34, 0, 0},
11840         {0x35, 0x20, 0},
11841         {0x36, 0x18, 0},
11842         {0x37, 0x7, 0},
11843         {0x38, 0x66, 0},
11844         {0x39, 0x66, 0},
11845         {0x3C, 0xff, 0},
11846         {0x3D, 0xff, 0},
11847         {0x40, 0x16, 0},
11848         {0x41, 0x7, 0},
11849         {0x45, 0x3, 0},
11850         {0x46, 0x1, 0},
11851         {0x47, 0x7, 0},
11852         {0x4B, 0x66, 0},
11853         {0x4C, 0x66, 0},
11854         {0x4D, 0, 0},
11855         {0x4E, 0x4, 0},
11856         {0x4F, 0xc, 0},
11857         {0x50, 0, 0},
11858         {0x51, 0x70, 1},
11859         {0x56, 0x7, 0},
11860         {0x57, 0, 0},
11861         {0x58, 0, 0},
11862         {0x59, 0x88, 1},
11863         {0x5A, 0, 0},
11864         {0x5B, 0x1f, 0},
11865         {0x5C, 0x20, 1},
11866         {0x5D, 0x1, 0},
11867         {0x5E, 0x30, 0},
11868         {0x5F, 0x70, 0},
11869         {0x60, 0, 0},
11870         {0x61, 0, 0},
11871         {0x62, 0x33, 1},
11872         {0x63, 0xf, 1},
11873         {0x64, 0xf, 1},
11874         {0x65, 0, 0},
11875         {0x66, 0x11, 0},
11876         {0x80, 0x3c, 0},
11877         {0x81, 0x1, 1},
11878         {0x82, 0xa, 0},
11879         {0x85, 0, 0},
11880         {0x86, 0x40, 0},
11881         {0x87, 0x40, 0},
11882         {0x88, 0x88, 0},
11883         {0x89, 0x10, 0},
11884         {0x8A, 0xf0, 0},
11885         {0x8B, 0x10, 0},
11886         {0x8C, 0xf0, 0},
11887         {0x8F, 0x10, 0},
11888         {0x90, 0x55, 0},
11889         {0x91, 0x3f, 1},
11890         {0x92, 0x36, 1},
11891         {0x93, 0, 0},
11892         {0x94, 0, 0},
11893         {0x95, 0, 0},
11894         {0x96, 0x87, 0},
11895         {0x97, 0x11, 0},
11896         {0x98, 0, 0},
11897         {0x99, 0x33, 0},
11898         {0x9A, 0x88, 0},
11899         {0xA1, 0x20, 1},
11900         {0xA2, 0x3f, 0},
11901         {0xA3, 0x44, 0},
11902         {0xA4, 0x8c, 0},
11903         {0xA5, 0x6c, 0},
11904         {0xA6, 0x22, 0},
11905         {0xA7, 0xbe, 0},
11906         {0xA8, 0x55, 0},
11907         {0xAA, 0xc, 0},
11908         {0xAB, 0xaa, 0},
11909         {0xAC, 0x2, 0},
11910         {0xAD, 0, 0},
11911         {0xAE, 0x10, 0},
11912         {0xAF, 0x1, 0},
11913         {0xB0, 0, 0},
11914         {0xB1, 0, 0},
11915         {0xB2, 0x80, 0},
11916         {0xB3, 0x60, 0},
11917         {0xB4, 0x44, 0},
11918         {0xB5, 0x55, 0},
11919         {0xB6, 0x1, 0},
11920         {0xB7, 0x55, 0},
11921         {0xB8, 0x1, 0},
11922         {0xB9, 0x5, 0},
11923         {0xBA, 0x55, 0},
11924         {0xBB, 0x55, 0},
11925         {0xC3, 0, 0},
11926         {0xC4, 0, 0},
11927         {0xC5, 0, 0},
11928         {0xC6, 0, 0},
11929         {0xC7, 0, 0},
11930         {0xC8, 0, 0},
11931         {0xC9, 0, 0},
11932         {0xCA, 0, 0},
11933         {0xCB, 0, 0},
11934         {0xCD, 0, 0},
11935         {0xCE, 0x5e, 0},
11936         {0xCF, 0xc, 0},
11937         {0xD0, 0xc, 0},
11938         {0xD1, 0xc, 0},
11939         {0xD2, 0, 0},
11940         {0xD3, 0x2b, 0},
11941         {0xD4, 0xc, 0},
11942         {0xD5, 0, 0},
11943         {0xD6, 0x70, 1},
11944         {0xDB, 0x7, 0},
11945         {0xDC, 0, 0},
11946         {0xDD, 0, 0},
11947         {0xDE, 0x88, 1},
11948         {0xDF, 0, 0},
11949         {0xE0, 0x1f, 0},
11950         {0xE1, 0x20, 1},
11951         {0xE2, 0x1, 0},
11952         {0xE3, 0x30, 0},
11953         {0xE4, 0x70, 0},
11954         {0xE5, 0, 0},
11955         {0xE6, 0, 0},
11956         {0xE7, 0x33, 0},
11957         {0xE8, 0xf, 1},
11958         {0xE9, 0xf, 1},
11959         {0xEA, 0, 0},
11960         {0xEB, 0x11, 0},
11961         {0x105, 0x3c, 0},
11962         {0x106, 0x1, 1},
11963         {0x107, 0xa, 0},
11964         {0x10A, 0, 0},
11965         {0x10B, 0x40, 0},
11966         {0x10C, 0x40, 0},
11967         {0x10D, 0x88, 0},
11968         {0x10E, 0x10, 0},
11969         {0x10F, 0xf0, 0},
11970         {0x110, 0x10, 0},
11971         {0x111, 0xf0, 0},
11972         {0x114, 0x10, 0},
11973         {0x115, 0x55, 0},
11974         {0x116, 0x3f, 1},
11975         {0x117, 0x36, 1},
11976         {0x118, 0, 0},
11977         {0x119, 0, 0},
11978         {0x11A, 0, 0},
11979         {0x11B, 0x87, 0},
11980         {0x11C, 0x11, 0},
11981         {0x11D, 0, 0},
11982         {0x11E, 0x33, 0},
11983         {0x11F, 0x88, 0},
11984         {0x126, 0x20, 1},
11985         {0x127, 0x3f, 0},
11986         {0x128, 0x44, 0},
11987         {0x129, 0x8c, 0},
11988         {0x12A, 0x6c, 0},
11989         {0x12B, 0x22, 0},
11990         {0x12C, 0xbe, 0},
11991         {0x12D, 0x55, 0},
11992         {0x12F, 0xc, 0},
11993         {0x130, 0xaa, 0},
11994         {0x131, 0x2, 0},
11995         {0x132, 0, 0},
11996         {0x133, 0x10, 0},
11997         {0x134, 0x1, 0},
11998         {0x135, 0, 0},
11999         {0x136, 0, 0},
12000         {0x137, 0x80, 0},
12001         {0x138, 0x60, 0},
12002         {0x139, 0x44, 0},
12003         {0x13A, 0x55, 0},
12004         {0x13B, 0x1, 0},
12005         {0x13C, 0x55, 0},
12006         {0x13D, 0x1, 0},
12007         {0x13E, 0x5, 0},
12008         {0x13F, 0x55, 0},
12009         {0x140, 0x55, 0},
12010         {0x148, 0, 0},
12011         {0x149, 0, 0},
12012         {0x14A, 0, 0},
12013         {0x14B, 0, 0},
12014         {0x14C, 0, 0},
12015         {0x14D, 0, 0},
12016         {0x14E, 0, 0},
12017         {0x14F, 0, 0},
12018         {0x150, 0, 0},
12019         {0x154, 0xc, 0},
12020         {0x155, 0xc, 0},
12021         {0x156, 0xc, 0},
12022         {0x157, 0, 0},
12023         {0x158, 0x2b, 0},
12024         {0x159, 0x84, 0},
12025         {0x15A, 0x15, 0},
12026         {0x15B, 0xf, 0},
12027         {0x15C, 0, 0},
12028         {0x15D, 0, 0},
12029         {0x15E, 0, 1},
12030         {0x15F, 0, 1},
12031         {0x160, 0, 1},
12032         {0x161, 0, 1},
12033         {0x162, 0, 1},
12034         {0x163, 0, 1},
12035         {0x164, 0, 0},
12036         {0x165, 0, 0},
12037         {0x166, 0, 0},
12038         {0x167, 0, 0},
12039         {0x168, 0, 0},
12040         {0x169, 0, 0},
12041         {0x16A, 0, 1},
12042         {0x16B, 0, 1},
12043         {0x16C, 0, 1},
12044         {0x16D, 0, 0},
12045         {0x170, 0, 0},
12046         {0x171, 0x77, 0},
12047         {0x172, 0x77, 0},
12048         {0x173, 0x77, 0},
12049         {0x174, 0x77, 0},
12050         {0x175, 0, 0},
12051         {0x176, 0x3, 0},
12052         {0x177, 0x37, 0},
12053         {0x178, 0x3, 0},
12054         {0x179, 0, 0},
12055         {0x17B, 0x21, 0},
12056         {0x17C, 0, 0},
12057         {0x17D, 0xaa, 0},
12058         {0x17E, 0, 0},
12059         {0x190, 0, 0},
12060         {0x191, 0x77, 0},
12061         {0x192, 0x77, 0},
12062         {0x193, 0x77, 0},
12063         {0x194, 0x77, 0},
12064         {0x195, 0, 0},
12065         {0x196, 0x3, 0},
12066         {0x197, 0x37, 0},
12067         {0x198, 0x3, 0},
12068         {0x199, 0, 0},
12069         {0x19B, 0x21, 0},
12070         {0x19C, 0, 0},
12071         {0x19D, 0xaa, 0},
12072         {0x19E, 0, 0},
12073         {0x1A1, 0x2, 0},
12074         {0x1A2, 0xf, 0},
12075         {0x1A3, 0xf, 0},
12076         {0x1A4, 0, 1},
12077         {0x1A5, 0, 1},
12078         {0x1A6, 0, 1},
12079         {0x1A7, 0x2, 0},
12080         {0x1A8, 0xf, 0},
12081         {0x1A9, 0xf, 0},
12082         {0x1AA, 0, 1},
12083         {0x1AB, 0, 1},
12084         {0x1AC, 0, 1},
12085         {0x1AD, 0x84, 0},
12086         {0x1AE, 0x60, 0},
12087         {0x1AF, 0x47, 0},
12088         {0x1B0, 0x47, 0},
12089         {0x1B1, 0, 0},
12090         {0x1B2, 0, 0},
12091         {0x1B3, 0, 0},
12092         {0x1B4, 0, 0},
12093         {0x1B5, 0, 0},
12094         {0x1B6, 0, 0},
12095         {0x1B7, 0xc, 1},
12096         {0x1B8, 0, 0},
12097         {0x1B9, 0, 0},
12098         {0x1BA, 0, 0},
12099         {0x1BB, 0, 0},
12100         {0x1BC, 0, 0},
12101         {0x1BD, 0, 0},
12102         {0x1BE, 0, 0},
12103         {0x1BF, 0, 0},
12104         {0x1C0, 0, 0},
12105         {0x1C1, 0x1, 1},
12106         {0x1C2, 0x80, 1},
12107         {0x1C3, 0, 0},
12108         {0x1C4, 0, 0},
12109         {0x1C5, 0, 0},
12110         {0x1C6, 0, 0},
12111         {0x1C7, 0, 0},
12112         {0x1C8, 0, 0},
12113         {0x1C9, 0, 0},
12114         {0x1CA, 0, 0},
12115         {0xFFFF, 0, 0}
12116 };
12117
12118 radio_20xx_regs_t regs_2057_rev5v1[] = {
12119         {0x00, 0x15, 1},
12120         {0x01, 0x57, 1},
12121         {0x02, 0x20, 1},
12122         {0x03, 0x1f, 0},
12123         {0x04, 0x4, 0},
12124         {0x05, 0x2, 0},
12125         {0x06, 0x1, 0},
12126         {0x07, 0x1, 0},
12127         {0x08, 0x1, 0},
12128         {0x09, 0x69, 0},
12129         {0x0A, 0x66, 0},
12130         {0x0B, 0x6, 0},
12131         {0x0C, 0x18, 0},
12132         {0x0D, 0x3, 0},
12133         {0x0E, 0x20, 0},
12134         {0x0F, 0x20, 0},
12135         {0x10, 0, 0},
12136         {0x11, 0x7c, 0},
12137         {0x12, 0x42, 0},
12138         {0x13, 0xbd, 0},
12139         {0x14, 0x7, 0},
12140         {0x15, 0x87, 0},
12141         {0x16, 0x8, 0},
12142         {0x17, 0x17, 0},
12143         {0x18, 0x7, 0},
12144         {0x19, 0, 0},
12145         {0x1A, 0x2, 0},
12146         {0x1B, 0x13, 0},
12147         {0x1C, 0x3e, 0},
12148         {0x1D, 0x3e, 0},
12149         {0x1E, 0x96, 0},
12150         {0x1F, 0x4, 0},
12151         {0x20, 0, 0},
12152         {0x21, 0, 0},
12153         {0x22, 0x17, 0},
12154         {0x23, 0x6, 1},
12155         {0x24, 0x1, 0},
12156         {0x25, 0x6, 0},
12157         {0x26, 0x4, 0},
12158         {0x27, 0xd, 0},
12159         {0x28, 0xd, 0},
12160         {0x29, 0x30, 0},
12161         {0x2A, 0x32, 0},
12162         {0x2B, 0x8, 0},
12163         {0x2C, 0x1c, 0},
12164         {0x2D, 0x2, 0},
12165         {0x2E, 0x4, 0},
12166         {0x2F, 0x7f, 0},
12167         {0x30, 0x27, 0},
12168         {0x31, 0, 1},
12169         {0x32, 0, 1},
12170         {0x33, 0, 1},
12171         {0x34, 0, 0},
12172         {0x35, 0x20, 0},
12173         {0x36, 0x18, 0},
12174         {0x37, 0x7, 0},
12175         {0x38, 0x66, 0},
12176         {0x39, 0x66, 0},
12177         {0x3C, 0xff, 0},
12178         {0x3D, 0xff, 0},
12179         {0x40, 0x16, 0},
12180         {0x41, 0x7, 0},
12181         {0x45, 0x3, 0},
12182         {0x46, 0x1, 0},
12183         {0x47, 0x7, 0},
12184         {0x4B, 0x66, 0},
12185         {0x4C, 0x66, 0},
12186         {0x4D, 0, 0},
12187         {0x4E, 0x4, 0},
12188         {0x4F, 0xc, 0},
12189         {0x50, 0, 0},
12190         {0x51, 0x70, 1},
12191         {0x56, 0x7, 0},
12192         {0x57, 0, 0},
12193         {0x58, 0, 0},
12194         {0x59, 0x88, 1},
12195         {0x5A, 0, 0},
12196         {0x5B, 0x1f, 0},
12197         {0x5C, 0x20, 1},
12198         {0x5D, 0x1, 0},
12199         {0x5E, 0x30, 0},
12200         {0x5F, 0x70, 0},
12201         {0x60, 0, 0},
12202         {0x61, 0, 0},
12203         {0x62, 0x33, 1},
12204         {0x63, 0xf, 1},
12205         {0x64, 0xf, 1},
12206         {0x65, 0, 0},
12207         {0x66, 0x11, 0},
12208         {0x80, 0x3c, 0},
12209         {0x81, 0x1, 1},
12210         {0x82, 0xa, 0},
12211         {0x85, 0, 0},
12212         {0x86, 0x40, 0},
12213         {0x87, 0x40, 0},
12214         {0x88, 0x88, 0},
12215         {0x89, 0x10, 0},
12216         {0x8A, 0xf0, 0},
12217         {0x8B, 0x10, 0},
12218         {0x8C, 0xf0, 0},
12219         {0x8F, 0x10, 0},
12220         {0x90, 0x55, 0},
12221         {0x91, 0x3f, 1},
12222         {0x92, 0x36, 1},
12223         {0x93, 0, 0},
12224         {0x94, 0, 0},
12225         {0x95, 0, 0},
12226         {0x96, 0x87, 0},
12227         {0x97, 0x11, 0},
12228         {0x98, 0, 0},
12229         {0x99, 0x33, 0},
12230         {0x9A, 0x88, 0},
12231         {0xA1, 0x20, 1},
12232         {0xA2, 0x3f, 0},
12233         {0xA3, 0x44, 0},
12234         {0xA4, 0x8c, 0},
12235         {0xA5, 0x6c, 0},
12236         {0xA6, 0x22, 0},
12237         {0xA7, 0xbe, 0},
12238         {0xA8, 0x55, 0},
12239         {0xAA, 0xc, 0},
12240         {0xAB, 0xaa, 0},
12241         {0xAC, 0x2, 0},
12242         {0xAD, 0, 0},
12243         {0xAE, 0x10, 0},
12244         {0xAF, 0x1, 0},
12245         {0xB0, 0, 0},
12246         {0xB1, 0, 0},
12247         {0xB2, 0x80, 0},
12248         {0xB3, 0x60, 0},
12249         {0xB4, 0x44, 0},
12250         {0xB5, 0x55, 0},
12251         {0xB6, 0x1, 0},
12252         {0xB7, 0x55, 0},
12253         {0xB8, 0x1, 0},
12254         {0xB9, 0x5, 0},
12255         {0xBA, 0x55, 0},
12256         {0xBB, 0x55, 0},
12257         {0xC3, 0, 0},
12258         {0xC4, 0, 0},
12259         {0xC5, 0, 0},
12260         {0xC6, 0, 0},
12261         {0xC7, 0, 0},
12262         {0xC8, 0, 0},
12263         {0xC9, 0x1, 1},
12264         {0xCA, 0, 0},
12265         {0xCB, 0, 0},
12266         {0xCD, 0, 0},
12267         {0xCE, 0x5e, 0},
12268         {0xCF, 0xc, 0},
12269         {0xD0, 0xc, 0},
12270         {0xD1, 0xc, 0},
12271         {0xD2, 0, 0},
12272         {0xD3, 0x2b, 0},
12273         {0xD4, 0xc, 0},
12274         {0xD5, 0, 0},
12275         {0xD6, 0x70, 1},
12276         {0xDB, 0x7, 0},
12277         {0xDC, 0, 0},
12278         {0xDD, 0, 0},
12279         {0xDE, 0x88, 1},
12280         {0xDF, 0, 0},
12281         {0xE0, 0x1f, 0},
12282         {0xE1, 0x20, 1},
12283         {0xE2, 0x1, 0},
12284         {0xE3, 0x30, 0},
12285         {0xE4, 0x70, 0},
12286         {0xE5, 0, 0},
12287         {0xE6, 0, 0},
12288         {0xE7, 0x33, 0},
12289         {0xE8, 0xf, 1},
12290         {0xE9, 0xf, 1},
12291         {0xEA, 0, 0},
12292         {0xEB, 0x11, 0},
12293         {0x105, 0x3c, 0},
12294         {0x106, 0x1, 1},
12295         {0x107, 0xa, 0},
12296         {0x10A, 0, 0},
12297         {0x10B, 0x40, 0},
12298         {0x10C, 0x40, 0},
12299         {0x10D, 0x88, 0},
12300         {0x10E, 0x10, 0},
12301         {0x10F, 0xf0, 0},
12302         {0x110, 0x10, 0},
12303         {0x111, 0xf0, 0},
12304         {0x114, 0x10, 0},
12305         {0x115, 0x55, 0},
12306         {0x116, 0x3f, 1},
12307         {0x117, 0x36, 1},
12308         {0x118, 0, 0},
12309         {0x119, 0, 0},
12310         {0x11A, 0, 0},
12311         {0x11B, 0x87, 0},
12312         {0x11C, 0x11, 0},
12313         {0x11D, 0, 0},
12314         {0x11E, 0x33, 0},
12315         {0x11F, 0x88, 0},
12316         {0x126, 0x20, 1},
12317         {0x127, 0x3f, 0},
12318         {0x128, 0x44, 0},
12319         {0x129, 0x8c, 0},
12320         {0x12A, 0x6c, 0},
12321         {0x12B, 0x22, 0},
12322         {0x12C, 0xbe, 0},
12323         {0x12D, 0x55, 0},
12324         {0x12F, 0xc, 0},
12325         {0x130, 0xaa, 0},
12326         {0x131, 0x2, 0},
12327         {0x132, 0, 0},
12328         {0x133, 0x10, 0},
12329         {0x134, 0x1, 0},
12330         {0x135, 0, 0},
12331         {0x136, 0, 0},
12332         {0x137, 0x80, 0},
12333         {0x138, 0x60, 0},
12334         {0x139, 0x44, 0},
12335         {0x13A, 0x55, 0},
12336         {0x13B, 0x1, 0},
12337         {0x13C, 0x55, 0},
12338         {0x13D, 0x1, 0},
12339         {0x13E, 0x5, 0},
12340         {0x13F, 0x55, 0},
12341         {0x140, 0x55, 0},
12342         {0x148, 0, 0},
12343         {0x149, 0, 0},
12344         {0x14A, 0, 0},
12345         {0x14B, 0, 0},
12346         {0x14C, 0, 0},
12347         {0x14D, 0, 0},
12348         {0x14E, 0x1, 1},
12349         {0x14F, 0, 0},
12350         {0x150, 0, 0},
12351         {0x154, 0xc, 0},
12352         {0x155, 0xc, 0},
12353         {0x156, 0xc, 0},
12354         {0x157, 0, 0},
12355         {0x158, 0x2b, 0},
12356         {0x159, 0x84, 0},
12357         {0x15A, 0x15, 0},
12358         {0x15B, 0xf, 0},
12359         {0x15C, 0, 0},
12360         {0x15D, 0, 0},
12361         {0x15E, 0, 1},
12362         {0x15F, 0, 1},
12363         {0x160, 0, 1},
12364         {0x161, 0, 1},
12365         {0x162, 0, 1},
12366         {0x163, 0, 1},
12367         {0x164, 0, 0},
12368         {0x165, 0, 0},
12369         {0x166, 0, 0},
12370         {0x167, 0, 0},
12371         {0x168, 0, 0},
12372         {0x169, 0, 0},
12373         {0x16A, 0, 1},
12374         {0x16B, 0, 1},
12375         {0x16C, 0, 1},
12376         {0x16D, 0, 0},
12377         {0x170, 0, 0},
12378         {0x171, 0x77, 0},
12379         {0x172, 0x77, 0},
12380         {0x173, 0x77, 0},
12381         {0x174, 0x77, 0},
12382         {0x175, 0, 0},
12383         {0x176, 0x3, 0},
12384         {0x177, 0x37, 0},
12385         {0x178, 0x3, 0},
12386         {0x179, 0, 0},
12387         {0x17B, 0x21, 0},
12388         {0x17C, 0, 0},
12389         {0x17D, 0xaa, 0},
12390         {0x17E, 0, 0},
12391         {0x190, 0, 0},
12392         {0x191, 0x77, 0},
12393         {0x192, 0x77, 0},
12394         {0x193, 0x77, 0},
12395         {0x194, 0x77, 0},
12396         {0x195, 0, 0},
12397         {0x196, 0x3, 0},
12398         {0x197, 0x37, 0},
12399         {0x198, 0x3, 0},
12400         {0x199, 0, 0},
12401         {0x19B, 0x21, 0},
12402         {0x19C, 0, 0},
12403         {0x19D, 0xaa, 0},
12404         {0x19E, 0, 0},
12405         {0x1A1, 0x2, 0},
12406         {0x1A2, 0xf, 0},
12407         {0x1A3, 0xf, 0},
12408         {0x1A4, 0, 1},
12409         {0x1A5, 0, 1},
12410         {0x1A6, 0, 1},
12411         {0x1A7, 0x2, 0},
12412         {0x1A8, 0xf, 0},
12413         {0x1A9, 0xf, 0},
12414         {0x1AA, 0, 1},
12415         {0x1AB, 0, 1},
12416         {0x1AC, 0, 1},
12417         {0x1AD, 0x84, 0},
12418         {0x1AE, 0x60, 0},
12419         {0x1AF, 0x47, 0},
12420         {0x1B0, 0x47, 0},
12421         {0x1B1, 0, 0},
12422         {0x1B2, 0, 0},
12423         {0x1B3, 0, 0},
12424         {0x1B4, 0, 0},
12425         {0x1B5, 0, 0},
12426         {0x1B6, 0, 0},
12427         {0x1B7, 0xc, 1},
12428         {0x1B8, 0, 0},
12429         {0x1B9, 0, 0},
12430         {0x1BA, 0, 0},
12431         {0x1BB, 0, 0},
12432         {0x1BC, 0, 0},
12433         {0x1BD, 0, 0},
12434         {0x1BE, 0, 0},
12435         {0x1BF, 0, 0},
12436         {0x1C0, 0, 0},
12437         {0x1C1, 0x1, 1},
12438         {0x1C2, 0x80, 1},
12439         {0x1C3, 0, 0},
12440         {0x1C4, 0, 0},
12441         {0x1C5, 0, 0},
12442         {0x1C6, 0, 0},
12443         {0x1C7, 0, 0},
12444         {0x1C8, 0, 0},
12445         {0x1C9, 0, 0},
12446         {0x1CA, 0, 0},
12447         {0xFFFF, 0, 0}
12448 };
12449
12450 radio_20xx_regs_t regs_2057_rev7[] = {
12451         {0x00, 0, 1},
12452         {0x01, 0x57, 1},
12453         {0x02, 0x20, 1},
12454         {0x03, 0x1f, 0},
12455         {0x04, 0x4, 0},
12456         {0x05, 0x2, 0},
12457         {0x06, 0x1, 0},
12458         {0x07, 0x1, 0},
12459         {0x08, 0x1, 0},
12460         {0x09, 0x69, 0},
12461         {0x0A, 0x66, 0},
12462         {0x0B, 0x6, 0},
12463         {0x0C, 0x18, 0},
12464         {0x0D, 0x3, 0},
12465         {0x0E, 0x20, 0},
12466         {0x0F, 0x20, 0},
12467         {0x10, 0, 0},
12468         {0x11, 0x7c, 0},
12469         {0x12, 0x42, 0},
12470         {0x13, 0xbd, 0},
12471         {0x14, 0x7, 0},
12472         {0x15, 0x87, 0},
12473         {0x16, 0x8, 0},
12474         {0x17, 0x17, 0},
12475         {0x18, 0x7, 0},
12476         {0x19, 0, 0},
12477         {0x1A, 0x2, 0},
12478         {0x1B, 0x13, 0},
12479         {0x1C, 0x3e, 0},
12480         {0x1D, 0x3e, 0},
12481         {0x1E, 0x96, 0},
12482         {0x1F, 0x4, 0},
12483         {0x20, 0, 0},
12484         {0x21, 0, 0},
12485         {0x22, 0x17, 0},
12486         {0x23, 0x6, 0},
12487         {0x24, 0x1, 0},
12488         {0x25, 0x6, 0},
12489         {0x26, 0x4, 0},
12490         {0x27, 0xd, 0},
12491         {0x28, 0xd, 0},
12492         {0x29, 0x30, 0},
12493         {0x2A, 0x32, 0},
12494         {0x2B, 0x8, 0},
12495         {0x2C, 0x1c, 0},
12496         {0x2D, 0x2, 0},
12497         {0x2E, 0x4, 0},
12498         {0x2F, 0x7f, 0},
12499         {0x30, 0x27, 0},
12500         {0x31, 0, 1},
12501         {0x32, 0, 1},
12502         {0x33, 0, 1},
12503         {0x34, 0, 0},
12504         {0x35, 0x20, 0},
12505         {0x36, 0x18, 0},
12506         {0x37, 0x7, 0},
12507         {0x38, 0x66, 0},
12508         {0x39, 0x66, 0},
12509         {0x3A, 0x66, 0},
12510         {0x3B, 0x66, 0},
12511         {0x3C, 0xff, 0},
12512         {0x3D, 0xff, 0},
12513         {0x3E, 0xff, 0},
12514         {0x3F, 0xff, 0},
12515         {0x40, 0x16, 0},
12516         {0x41, 0x7, 0},
12517         {0x42, 0x19, 0},
12518         {0x43, 0x7, 0},
12519         {0x44, 0x6, 0},
12520         {0x45, 0x3, 0},
12521         {0x46, 0x1, 0},
12522         {0x47, 0x7, 0},
12523         {0x48, 0x33, 0},
12524         {0x49, 0x5, 0},
12525         {0x4A, 0x77, 0},
12526         {0x4B, 0x66, 0},
12527         {0x4C, 0x66, 0},
12528         {0x4D, 0, 0},
12529         {0x4E, 0x4, 0},
12530         {0x4F, 0xc, 0},
12531         {0x50, 0, 0},
12532         {0x51, 0x70, 1},
12533         {0x56, 0x7, 0},
12534         {0x57, 0, 0},
12535         {0x58, 0, 0},
12536         {0x59, 0x88, 1},
12537         {0x5A, 0, 0},
12538         {0x5B, 0x1f, 0},
12539         {0x5C, 0x20, 1},
12540         {0x5D, 0x1, 0},
12541         {0x5E, 0x30, 0},
12542         {0x5F, 0x70, 0},
12543         {0x60, 0, 0},
12544         {0x61, 0, 0},
12545         {0x62, 0x33, 1},
12546         {0x63, 0xf, 1},
12547         {0x64, 0x13, 1},
12548         {0x65, 0, 0},
12549         {0x66, 0xee, 1},
12550         {0x69, 0, 0},
12551         {0x6A, 0x7e, 0},
12552         {0x6B, 0x3f, 0},
12553         {0x6C, 0x7f, 0},
12554         {0x6D, 0x78, 0},
12555         {0x6E, 0x58, 1},
12556         {0x6F, 0x88, 0},
12557         {0x70, 0x8, 0},
12558         {0x71, 0xf, 0},
12559         {0x72, 0xbc, 0},
12560         {0x73, 0x8, 0},
12561         {0x74, 0x60, 0},
12562         {0x75, 0x13, 1},
12563         {0x76, 0x70, 0},
12564         {0x77, 0, 0},
12565         {0x78, 0, 0},
12566         {0x79, 0, 0},
12567         {0x7A, 0x33, 0},
12568         {0x7B, 0x13, 1},
12569         {0x7C, 0x14, 1},
12570         {0x7D, 0xee, 1},
12571         {0x80, 0x3c, 0},
12572         {0x81, 0x1, 1},
12573         {0x82, 0xa, 0},
12574         {0x83, 0x9d, 0},
12575         {0x84, 0xa, 0},
12576         {0x85, 0, 0},
12577         {0x86, 0x40, 0},
12578         {0x87, 0x40, 0},
12579         {0x88, 0x88, 0},
12580         {0x89, 0x10, 0},
12581         {0x8A, 0xf0, 0},
12582         {0x8B, 0x10, 0},
12583         {0x8C, 0xf0, 0},
12584         {0x8D, 0, 0},
12585         {0x8E, 0, 0},
12586         {0x8F, 0x10, 0},
12587         {0x90, 0x55, 0},
12588         {0x91, 0x3f, 1},
12589         {0x92, 0x36, 1},
12590         {0x93, 0, 0},
12591         {0x94, 0, 0},
12592         {0x95, 0, 0},
12593         {0x96, 0x87, 0},
12594         {0x97, 0x11, 0},
12595         {0x98, 0, 0},
12596         {0x99, 0x33, 0},
12597         {0x9A, 0x88, 0},
12598         {0x9B, 0, 0},
12599         {0x9C, 0x87, 0},
12600         {0x9D, 0x11, 0},
12601         {0x9E, 0, 0},
12602         {0x9F, 0x33, 0},
12603         {0xA0, 0x88, 0},
12604         {0xA1, 0x20, 1},
12605         {0xA2, 0x3f, 0},
12606         {0xA3, 0x44, 0},
12607         {0xA4, 0x8c, 0},
12608         {0xA5, 0x6c, 0},
12609         {0xA6, 0x22, 0},
12610         {0xA7, 0xbe, 0},
12611         {0xA8, 0x55, 0},
12612         {0xAA, 0xc, 0},
12613         {0xAB, 0xaa, 0},
12614         {0xAC, 0x2, 0},
12615         {0xAD, 0, 0},
12616         {0xAE, 0x10, 0},
12617         {0xAF, 0x1, 0},
12618         {0xB0, 0, 0},
12619         {0xB1, 0, 0},
12620         {0xB2, 0x80, 0},
12621         {0xB3, 0x60, 0},
12622         {0xB4, 0x44, 0},
12623         {0xB5, 0x55, 0},
12624         {0xB6, 0x1, 0},
12625         {0xB7, 0x55, 0},
12626         {0xB8, 0x1, 0},
12627         {0xB9, 0x5, 0},
12628         {0xBA, 0x55, 0},
12629         {0xBB, 0x55, 0},
12630         {0xC1, 0, 0},
12631         {0xC2, 0, 0},
12632         {0xC3, 0, 0},
12633         {0xC4, 0, 0},
12634         {0xC5, 0, 0},
12635         {0xC6, 0, 0},
12636         {0xC7, 0, 0},
12637         {0xC8, 0, 0},
12638         {0xC9, 0, 0},
12639         {0xCA, 0, 0},
12640         {0xCB, 0, 0},
12641         {0xCC, 0, 0},
12642         {0xCD, 0, 0},
12643         {0xCE, 0x5e, 0},
12644         {0xCF, 0xc, 0},
12645         {0xD0, 0xc, 0},
12646         {0xD1, 0xc, 0},
12647         {0xD2, 0, 0},
12648         {0xD3, 0x2b, 0},
12649         {0xD4, 0xc, 0},
12650         {0xD5, 0, 0},
12651         {0xD6, 0x70, 1},
12652         {0xDB, 0x7, 0},
12653         {0xDC, 0, 0},
12654         {0xDD, 0, 0},
12655         {0xDE, 0x88, 1},
12656         {0xDF, 0, 0},
12657         {0xE0, 0x1f, 0},
12658         {0xE1, 0x20, 1},
12659         {0xE2, 0x1, 0},
12660         {0xE3, 0x30, 0},
12661         {0xE4, 0x70, 0},
12662         {0xE5, 0, 0},
12663         {0xE6, 0, 0},
12664         {0xE7, 0x33, 0},
12665         {0xE8, 0xf, 1},
12666         {0xE9, 0x13, 1},
12667         {0xEA, 0, 0},
12668         {0xEB, 0xee, 1},
12669         {0xEE, 0, 0},
12670         {0xEF, 0x7e, 0},
12671         {0xF0, 0x3f, 0},
12672         {0xF1, 0x7f, 0},
12673         {0xF2, 0x78, 0},
12674         {0xF3, 0x58, 1},
12675         {0xF4, 0x88, 0},
12676         {0xF5, 0x8, 0},
12677         {0xF6, 0xf, 0},
12678         {0xF7, 0xbc, 0},
12679         {0xF8, 0x8, 0},
12680         {0xF9, 0x60, 0},
12681         {0xFA, 0x13, 1},
12682         {0xFB, 0x70, 0},
12683         {0xFC, 0, 0},
12684         {0xFD, 0, 0},
12685         {0xFE, 0, 0},
12686         {0xFF, 0x33, 0},
12687         {0x100, 0x13, 1},
12688         {0x101, 0x14, 1},
12689         {0x102, 0xee, 1},
12690         {0x105, 0x3c, 0},
12691         {0x106, 0x1, 1},
12692         {0x107, 0xa, 0},
12693         {0x108, 0x9d, 0},
12694         {0x109, 0xa, 0},
12695         {0x10A, 0, 0},
12696         {0x10B, 0x40, 0},
12697         {0x10C, 0x40, 0},
12698         {0x10D, 0x88, 0},
12699         {0x10E, 0x10, 0},
12700         {0x10F, 0xf0, 0},
12701         {0x110, 0x10, 0},
12702         {0x111, 0xf0, 0},
12703         {0x112, 0, 0},
12704         {0x113, 0, 0},
12705         {0x114, 0x10, 0},
12706         {0x115, 0x55, 0},
12707         {0x116, 0x3f, 1},
12708         {0x117, 0x36, 1},
12709         {0x118, 0, 0},
12710         {0x119, 0, 0},
12711         {0x11A, 0, 0},
12712         {0x11B, 0x87, 0},
12713         {0x11C, 0x11, 0},
12714         {0x11D, 0, 0},
12715         {0x11E, 0x33, 0},
12716         {0x11F, 0x88, 0},
12717         {0x120, 0, 0},
12718         {0x121, 0x87, 0},
12719         {0x122, 0x11, 0},
12720         {0x123, 0, 0},
12721         {0x124, 0x33, 0},
12722         {0x125, 0x88, 0},
12723         {0x126, 0x20, 1},
12724         {0x127, 0x3f, 0},
12725         {0x128, 0x44, 0},
12726         {0x129, 0x8c, 0},
12727         {0x12A, 0x6c, 0},
12728         {0x12B, 0x22, 0},
12729         {0x12C, 0xbe, 0},
12730         {0x12D, 0x55, 0},
12731         {0x12F, 0xc, 0},
12732         {0x130, 0xaa, 0},
12733         {0x131, 0x2, 0},
12734         {0x132, 0, 0},
12735         {0x133, 0x10, 0},
12736         {0x134, 0x1, 0},
12737         {0x135, 0, 0},
12738         {0x136, 0, 0},
12739         {0x137, 0x80, 0},
12740         {0x138, 0x60, 0},
12741         {0x139, 0x44, 0},
12742         {0x13A, 0x55, 0},
12743         {0x13B, 0x1, 0},
12744         {0x13C, 0x55, 0},
12745         {0x13D, 0x1, 0},
12746         {0x13E, 0x5, 0},
12747         {0x13F, 0x55, 0},
12748         {0x140, 0x55, 0},
12749         {0x146, 0, 0},
12750         {0x147, 0, 0},
12751         {0x148, 0, 0},
12752         {0x149, 0, 0},
12753         {0x14A, 0, 0},
12754         {0x14B, 0, 0},
12755         {0x14C, 0, 0},
12756         {0x14D, 0, 0},
12757         {0x14E, 0, 0},
12758         {0x14F, 0, 0},
12759         {0x150, 0, 0},
12760         {0x151, 0, 0},
12761         {0x154, 0xc, 0},
12762         {0x155, 0xc, 0},
12763         {0x156, 0xc, 0},
12764         {0x157, 0, 0},
12765         {0x158, 0x2b, 0},
12766         {0x159, 0x84, 0},
12767         {0x15A, 0x15, 0},
12768         {0x15B, 0xf, 0},
12769         {0x15C, 0, 0},
12770         {0x15D, 0, 0},
12771         {0x15E, 0, 1},
12772         {0x15F, 0, 1},
12773         {0x160, 0, 1},
12774         {0x161, 0, 1},
12775         {0x162, 0, 1},
12776         {0x163, 0, 1},
12777         {0x164, 0, 0},
12778         {0x165, 0, 0},
12779         {0x166, 0, 0},
12780         {0x167, 0, 0},
12781         {0x168, 0, 0},
12782         {0x169, 0, 0},
12783         {0x16A, 0, 1},
12784         {0x16B, 0, 1},
12785         {0x16C, 0, 1},
12786         {0x16D, 0, 0},
12787         {0x170, 0, 0},
12788         {0x171, 0x77, 0},
12789         {0x172, 0x77, 0},
12790         {0x173, 0x77, 0},
12791         {0x174, 0x77, 0},
12792         {0x175, 0, 0},
12793         {0x176, 0x3, 0},
12794         {0x177, 0x37, 0},
12795         {0x178, 0x3, 0},
12796         {0x179, 0, 0},
12797         {0x17A, 0x21, 0},
12798         {0x17B, 0x21, 0},
12799         {0x17C, 0, 0},
12800         {0x17D, 0xaa, 0},
12801         {0x17E, 0, 0},
12802         {0x17F, 0xaa, 0},
12803         {0x180, 0, 0},
12804         {0x190, 0, 0},
12805         {0x191, 0x77, 0},
12806         {0x192, 0x77, 0},
12807         {0x193, 0x77, 0},
12808         {0x194, 0x77, 0},
12809         {0x195, 0, 0},
12810         {0x196, 0x3, 0},
12811         {0x197, 0x37, 0},
12812         {0x198, 0x3, 0},
12813         {0x199, 0, 0},
12814         {0x19A, 0x21, 0},
12815         {0x19B, 0x21, 0},
12816         {0x19C, 0, 0},
12817         {0x19D, 0xaa, 0},
12818         {0x19E, 0, 0},
12819         {0x19F, 0xaa, 0},
12820         {0x1A0, 0, 0},
12821         {0x1A1, 0x2, 0},
12822         {0x1A2, 0xf, 0},
12823         {0x1A3, 0xf, 0},
12824         {0x1A4, 0, 1},
12825         {0x1A5, 0, 1},
12826         {0x1A6, 0, 1},
12827         {0x1A7, 0x2, 0},
12828         {0x1A8, 0xf, 0},
12829         {0x1A9, 0xf, 0},
12830         {0x1AA, 0, 1},
12831         {0x1AB, 0, 1},
12832         {0x1AC, 0, 1},
12833         {0x1AD, 0x84, 0},
12834         {0x1AE, 0x60, 0},
12835         {0x1AF, 0x47, 0},
12836         {0x1B0, 0x47, 0},
12837         {0x1B1, 0, 0},
12838         {0x1B2, 0, 0},
12839         {0x1B3, 0, 0},
12840         {0x1B4, 0, 0},
12841         {0x1B5, 0, 0},
12842         {0x1B6, 0, 0},
12843         {0x1B7, 0x5, 1},
12844         {0x1B8, 0, 0},
12845         {0x1B9, 0, 0},
12846         {0x1BA, 0, 0},
12847         {0x1BB, 0, 0},
12848         {0x1BC, 0, 0},
12849         {0x1BD, 0, 0},
12850         {0x1BE, 0, 0},
12851         {0x1BF, 0, 0},
12852         {0x1C0, 0, 0},
12853         {0x1C1, 0, 0},
12854         {0x1C2, 0xa0, 1},
12855         {0x1C3, 0, 0},
12856         {0x1C4, 0, 0},
12857         {0x1C5, 0, 0},
12858         {0x1C6, 0, 0},
12859         {0x1C7, 0, 0},
12860         {0x1C8, 0, 0},
12861         {0x1C9, 0, 0},
12862         {0x1CA, 0, 0},
12863         {0xFFFF, 0, 0}
12864 };
12865
12866 radio_20xx_regs_t regs_2057_rev8[] = {
12867         {0x00, 0x8, 1},
12868         {0x01, 0x57, 1},
12869         {0x02, 0x20, 1},
12870         {0x03, 0x1f, 0},
12871         {0x04, 0x4, 0},
12872         {0x05, 0x2, 0},
12873         {0x06, 0x1, 0},
12874         {0x07, 0x1, 0},
12875         {0x08, 0x1, 0},
12876         {0x09, 0x69, 0},
12877         {0x0A, 0x66, 0},
12878         {0x0B, 0x6, 0},
12879         {0x0C, 0x18, 0},
12880         {0x0D, 0x3, 0},
12881         {0x0E, 0x20, 0},
12882         {0x0F, 0x20, 0},
12883         {0x10, 0, 0},
12884         {0x11, 0x7c, 0},
12885         {0x12, 0x42, 0},
12886         {0x13, 0xbd, 0},
12887         {0x14, 0x7, 0},
12888         {0x15, 0x87, 0},
12889         {0x16, 0x8, 0},
12890         {0x17, 0x17, 0},
12891         {0x18, 0x7, 0},
12892         {0x19, 0, 0},
12893         {0x1A, 0x2, 0},
12894         {0x1B, 0x13, 0},
12895         {0x1C, 0x3e, 0},
12896         {0x1D, 0x3e, 0},
12897         {0x1E, 0x96, 0},
12898         {0x1F, 0x4, 0},
12899         {0x20, 0, 0},
12900         {0x21, 0, 0},
12901         {0x22, 0x17, 0},
12902         {0x23, 0x6, 0},
12903         {0x24, 0x1, 0},
12904         {0x25, 0x6, 0},
12905         {0x26, 0x4, 0},
12906         {0x27, 0xd, 0},
12907         {0x28, 0xd, 0},
12908         {0x29, 0x30, 0},
12909         {0x2A, 0x32, 0},
12910         {0x2B, 0x8, 0},
12911         {0x2C, 0x1c, 0},
12912         {0x2D, 0x2, 0},
12913         {0x2E, 0x4, 0},
12914         {0x2F, 0x7f, 0},
12915         {0x30, 0x27, 0},
12916         {0x31, 0, 1},
12917         {0x32, 0, 1},
12918         {0x33, 0, 1},
12919         {0x34, 0, 0},
12920         {0x35, 0x20, 0},
12921         {0x36, 0x18, 0},
12922         {0x37, 0x7, 0},
12923         {0x38, 0x66, 0},
12924         {0x39, 0x66, 0},
12925         {0x3A, 0x66, 0},
12926         {0x3B, 0x66, 0},
12927         {0x3C, 0xff, 0},
12928         {0x3D, 0xff, 0},
12929         {0x3E, 0xff, 0},
12930         {0x3F, 0xff, 0},
12931         {0x40, 0x16, 0},
12932         {0x41, 0x7, 0},
12933         {0x42, 0x19, 0},
12934         {0x43, 0x7, 0},
12935         {0x44, 0x6, 0},
12936         {0x45, 0x3, 0},
12937         {0x46, 0x1, 0},
12938         {0x47, 0x7, 0},
12939         {0x48, 0x33, 0},
12940         {0x49, 0x5, 0},
12941         {0x4A, 0x77, 0},
12942         {0x4B, 0x66, 0},
12943         {0x4C, 0x66, 0},
12944         {0x4D, 0, 0},
12945         {0x4E, 0x4, 0},
12946         {0x4F, 0xc, 0},
12947         {0x50, 0, 0},
12948         {0x51, 0x70, 1},
12949         {0x56, 0x7, 0},
12950         {0x57, 0, 0},
12951         {0x58, 0, 0},
12952         {0x59, 0x88, 1},
12953         {0x5A, 0, 0},
12954         {0x5B, 0x1f, 0},
12955         {0x5C, 0x20, 1},
12956         {0x5D, 0x1, 0},
12957         {0x5E, 0x30, 0},
12958         {0x5F, 0x70, 0},
12959         {0x60, 0, 0},
12960         {0x61, 0, 0},
12961         {0x62, 0x33, 1},
12962         {0x63, 0xf, 1},
12963         {0x64, 0xf, 1},
12964         {0x65, 0, 0},
12965         {0x66, 0x11, 0},
12966         {0x69, 0, 0},
12967         {0x6A, 0x7e, 0},
12968         {0x6B, 0x3f, 0},
12969         {0x6C, 0x7f, 0},
12970         {0x6D, 0x78, 0},
12971         {0x6E, 0x58, 1},
12972         {0x6F, 0x88, 0},
12973         {0x70, 0x8, 0},
12974         {0x71, 0xf, 0},
12975         {0x72, 0xbc, 0},
12976         {0x73, 0x8, 0},
12977         {0x74, 0x60, 0},
12978         {0x75, 0x13, 1},
12979         {0x76, 0x70, 0},
12980         {0x77, 0, 0},
12981         {0x78, 0, 0},
12982         {0x79, 0, 0},
12983         {0x7A, 0x33, 0},
12984         {0x7B, 0x13, 1},
12985         {0x7C, 0xf, 1},
12986         {0x7D, 0xee, 1},
12987         {0x80, 0x3c, 0},
12988         {0x81, 0x1, 1},
12989         {0x82, 0xa, 0},
12990         {0x83, 0x9d, 0},
12991         {0x84, 0xa, 0},
12992         {0x85, 0, 0},
12993         {0x86, 0x40, 0},
12994         {0x87, 0x40, 0},
12995         {0x88, 0x88, 0},
12996         {0x89, 0x10, 0},
12997         {0x8A, 0xf0, 0},
12998         {0x8B, 0x10, 0},
12999         {0x8C, 0xf0, 0},
13000         {0x8D, 0, 0},
13001         {0x8E, 0, 0},
13002         {0x8F, 0x10, 0},
13003         {0x90, 0x55, 0},
13004         {0x91, 0x3f, 1},
13005         {0x92, 0x36, 1},
13006         {0x93, 0, 0},
13007         {0x94, 0, 0},
13008         {0x95, 0, 0},
13009         {0x96, 0x87, 0},
13010         {0x97, 0x11, 0},
13011         {0x98, 0, 0},
13012         {0x99, 0x33, 0},
13013         {0x9A, 0x88, 0},
13014         {0x9B, 0, 0},
13015         {0x9C, 0x87, 0},
13016         {0x9D, 0x11, 0},
13017         {0x9E, 0, 0},
13018         {0x9F, 0x33, 0},
13019         {0xA0, 0x88, 0},
13020         {0xA1, 0x20, 1},
13021         {0xA2, 0x3f, 0},
13022         {0xA3, 0x44, 0},
13023         {0xA4, 0x8c, 0},
13024         {0xA5, 0x6c, 0},
13025         {0xA6, 0x22, 0},
13026         {0xA7, 0xbe, 0},
13027         {0xA8, 0x55, 0},
13028         {0xAA, 0xc, 0},
13029         {0xAB, 0xaa, 0},
13030         {0xAC, 0x2, 0},
13031         {0xAD, 0, 0},
13032         {0xAE, 0x10, 0},
13033         {0xAF, 0x1, 0},
13034         {0xB0, 0, 0},
13035         {0xB1, 0, 0},
13036         {0xB2, 0x80, 0},
13037         {0xB3, 0x60, 0},
13038         {0xB4, 0x44, 0},
13039         {0xB5, 0x55, 0},
13040         {0xB6, 0x1, 0},
13041         {0xB7, 0x55, 0},
13042         {0xB8, 0x1, 0},
13043         {0xB9, 0x5, 0},
13044         {0xBA, 0x55, 0},
13045         {0xBB, 0x55, 0},
13046         {0xC1, 0, 0},
13047         {0xC2, 0, 0},
13048         {0xC3, 0, 0},
13049         {0xC4, 0, 0},
13050         {0xC5, 0, 0},
13051         {0xC6, 0, 0},
13052         {0xC7, 0, 0},
13053         {0xC8, 0, 0},
13054         {0xC9, 0x1, 1},
13055         {0xCA, 0, 0},
13056         {0xCB, 0, 0},
13057         {0xCC, 0, 0},
13058         {0xCD, 0, 0},
13059         {0xCE, 0x5e, 0},
13060         {0xCF, 0xc, 0},
13061         {0xD0, 0xc, 0},
13062         {0xD1, 0xc, 0},
13063         {0xD2, 0, 0},
13064         {0xD3, 0x2b, 0},
13065         {0xD4, 0xc, 0},
13066         {0xD5, 0, 0},
13067         {0xD6, 0x70, 1},
13068         {0xDB, 0x7, 0},
13069         {0xDC, 0, 0},
13070         {0xDD, 0, 0},
13071         {0xDE, 0x88, 1},
13072         {0xDF, 0, 0},
13073         {0xE0, 0x1f, 0},
13074         {0xE1, 0x20, 1},
13075         {0xE2, 0x1, 0},
13076         {0xE3, 0x30, 0},
13077         {0xE4, 0x70, 0},
13078         {0xE5, 0, 0},
13079         {0xE6, 0, 0},
13080         {0xE7, 0x33, 0},
13081         {0xE8, 0xf, 1},
13082         {0xE9, 0xf, 1},
13083         {0xEA, 0, 0},
13084         {0xEB, 0x11, 0},
13085         {0xEE, 0, 0},
13086         {0xEF, 0x7e, 0},
13087         {0xF0, 0x3f, 0},
13088         {0xF1, 0x7f, 0},
13089         {0xF2, 0x78, 0},
13090         {0xF3, 0x58, 1},
13091         {0xF4, 0x88, 0},
13092         {0xF5, 0x8, 0},
13093         {0xF6, 0xf, 0},
13094         {0xF7, 0xbc, 0},
13095         {0xF8, 0x8, 0},
13096         {0xF9, 0x60, 0},
13097         {0xFA, 0x13, 1},
13098         {0xFB, 0x70, 0},
13099         {0xFC, 0, 0},
13100         {0xFD, 0, 0},
13101         {0xFE, 0, 0},
13102         {0xFF, 0x33, 0},
13103         {0x100, 0x13, 1},
13104         {0x101, 0xf, 1},
13105         {0x102, 0xee, 1},
13106         {0x105, 0x3c, 0},
13107         {0x106, 0x1, 1},
13108         {0x107, 0xa, 0},
13109         {0x108, 0x9d, 0},
13110         {0x109, 0xa, 0},
13111         {0x10A, 0, 0},
13112         {0x10B, 0x40, 0},
13113         {0x10C, 0x40, 0},
13114         {0x10D, 0x88, 0},
13115         {0x10E, 0x10, 0},
13116         {0x10F, 0xf0, 0},
13117         {0x110, 0x10, 0},
13118         {0x111, 0xf0, 0},
13119         {0x112, 0, 0},
13120         {0x113, 0, 0},
13121         {0x114, 0x10, 0},
13122         {0x115, 0x55, 0},
13123         {0x116, 0x3f, 1},
13124         {0x117, 0x36, 1},
13125         {0x118, 0, 0},
13126         {0x119, 0, 0},
13127         {0x11A, 0, 0},
13128         {0x11B, 0x87, 0},
13129         {0x11C, 0x11, 0},
13130         {0x11D, 0, 0},
13131         {0x11E, 0x33, 0},
13132         {0x11F, 0x88, 0},
13133         {0x120, 0, 0},
13134         {0x121, 0x87, 0},
13135         {0x122, 0x11, 0},
13136         {0x123, 0, 0},
13137         {0x124, 0x33, 0},
13138         {0x125, 0x88, 0},
13139         {0x126, 0x20, 1},
13140         {0x127, 0x3f, 0},
13141         {0x128, 0x44, 0},
13142         {0x129, 0x8c, 0},
13143         {0x12A, 0x6c, 0},
13144         {0x12B, 0x22, 0},
13145         {0x12C, 0xbe, 0},
13146         {0x12D, 0x55, 0},
13147         {0x12F, 0xc, 0},
13148         {0x130, 0xaa, 0},
13149         {0x131, 0x2, 0},
13150         {0x132, 0, 0},
13151         {0x133, 0x10, 0},
13152         {0x134, 0x1, 0},
13153         {0x135, 0, 0},
13154         {0x136, 0, 0},
13155         {0x137, 0x80, 0},
13156         {0x138, 0x60, 0},
13157         {0x139, 0x44, 0},
13158         {0x13A, 0x55, 0},
13159         {0x13B, 0x1, 0},
13160         {0x13C, 0x55, 0},
13161         {0x13D, 0x1, 0},
13162         {0x13E, 0x5, 0},
13163         {0x13F, 0x55, 0},
13164         {0x140, 0x55, 0},
13165         {0x146, 0, 0},
13166         {0x147, 0, 0},
13167         {0x148, 0, 0},
13168         {0x149, 0, 0},
13169         {0x14A, 0, 0},
13170         {0x14B, 0, 0},
13171         {0x14C, 0, 0},
13172         {0x14D, 0, 0},
13173         {0x14E, 0x1, 1},
13174         {0x14F, 0, 0},
13175         {0x150, 0, 0},
13176         {0x151, 0, 0},
13177         {0x154, 0xc, 0},
13178         {0x155, 0xc, 0},
13179         {0x156, 0xc, 0},
13180         {0x157, 0, 0},
13181         {0x158, 0x2b, 0},
13182         {0x159, 0x84, 0},
13183         {0x15A, 0x15, 0},
13184         {0x15B, 0xf, 0},
13185         {0x15C, 0, 0},
13186         {0x15D, 0, 0},
13187         {0x15E, 0, 1},
13188         {0x15F, 0, 1},
13189         {0x160, 0, 1},
13190         {0x161, 0, 1},
13191         {0x162, 0, 1},
13192         {0x163, 0, 1},
13193         {0x164, 0, 0},
13194         {0x165, 0, 0},
13195         {0x166, 0, 0},
13196         {0x167, 0, 0},
13197         {0x168, 0, 0},
13198         {0x169, 0, 0},
13199         {0x16A, 0, 1},
13200         {0x16B, 0, 1},
13201         {0x16C, 0, 1},
13202         {0x16D, 0, 0},
13203         {0x170, 0, 0},
13204         {0x171, 0x77, 0},
13205         {0x172, 0x77, 0},
13206         {0x173, 0x77, 0},
13207         {0x174, 0x77, 0},
13208         {0x175, 0, 0},
13209         {0x176, 0x3, 0},
13210         {0x177, 0x37, 0},
13211         {0x178, 0x3, 0},
13212         {0x179, 0, 0},
13213         {0x17A, 0x21, 0},
13214         {0x17B, 0x21, 0},
13215         {0x17C, 0, 0},
13216         {0x17D, 0xaa, 0},
13217         {0x17E, 0, 0},
13218         {0x17F, 0xaa, 0},
13219         {0x180, 0, 0},
13220         {0x190, 0, 0},
13221         {0x191, 0x77, 0},
13222         {0x192, 0x77, 0},
13223         {0x193, 0x77, 0},
13224         {0x194, 0x77, 0},
13225         {0x195, 0, 0},
13226         {0x196, 0x3, 0},
13227         {0x197, 0x37, 0},
13228         {0x198, 0x3, 0},
13229         {0x199, 0, 0},
13230         {0x19A, 0x21, 0},
13231         {0x19B, 0x21, 0},
13232         {0x19C, 0, 0},
13233         {0x19D, 0xaa, 0},
13234         {0x19E, 0, 0},
13235         {0x19F, 0xaa, 0},
13236         {0x1A0, 0, 0},
13237         {0x1A1, 0x2, 0},
13238         {0x1A2, 0xf, 0},
13239         {0x1A3, 0xf, 0},
13240         {0x1A4, 0, 1},
13241         {0x1A5, 0, 1},
13242         {0x1A6, 0, 1},
13243         {0x1A7, 0x2, 0},
13244         {0x1A8, 0xf, 0},
13245         {0x1A9, 0xf, 0},
13246         {0x1AA, 0, 1},
13247         {0x1AB, 0, 1},
13248         {0x1AC, 0, 1},
13249         {0x1AD, 0x84, 0},
13250         {0x1AE, 0x60, 0},
13251         {0x1AF, 0x47, 0},
13252         {0x1B0, 0x47, 0},
13253         {0x1B1, 0, 0},
13254         {0x1B2, 0, 0},
13255         {0x1B3, 0, 0},
13256         {0x1B4, 0, 0},
13257         {0x1B5, 0, 0},
13258         {0x1B6, 0, 0},
13259         {0x1B7, 0x5, 1},
13260         {0x1B8, 0, 0},
13261         {0x1B9, 0, 0},
13262         {0x1BA, 0, 0},
13263         {0x1BB, 0, 0},
13264         {0x1BC, 0, 0},
13265         {0x1BD, 0, 0},
13266         {0x1BE, 0, 0},
13267         {0x1BF, 0, 0},
13268         {0x1C0, 0, 0},
13269         {0x1C1, 0, 0},
13270         {0x1C2, 0xa0, 1},
13271         {0x1C3, 0, 0},
13272         {0x1C4, 0, 0},
13273         {0x1C5, 0, 0},
13274         {0x1C6, 0, 0},
13275         {0x1C7, 0, 0},
13276         {0x1C8, 0, 0},
13277         {0x1C9, 0, 0},
13278         {0x1CA, 0, 0},
13279         {0xFFFF, 0, 0}
13280 };
13281
13282 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13283
13284 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13285 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13286
13287 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13288         {
13289          {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13290          {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13291          {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13292          {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13293          {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13294          {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13295          {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13296          {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13297          {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13298          },
13299         {
13300          {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13301          {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13302          {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13303          {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13304          {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13305          {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13306          {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13307          {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13308          {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13309          }
13310 };
13311
13312 static const u32 nphy_tpc_txgain[] = {
13313         0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13314         0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13315         0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13316         0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13317         0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13318         0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13319         0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13320         0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13321         0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13322         0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13323         0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13324         0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13325         0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13326         0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13327         0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13328         0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13329         0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13330         0x03902942, 0x03902844, 0x03902842, 0x03902744,
13331         0x03902742, 0x03902644, 0x03902642, 0x03902544,
13332         0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13333         0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13334         0x03802842, 0x03802744, 0x03802742, 0x03802644,
13335         0x03802642, 0x03802544, 0x03802542, 0x03802444,
13336         0x03802442, 0x03802344, 0x03802342, 0x03802244,
13337         0x03802242, 0x03802144, 0x03802142, 0x03802044,
13338         0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13339         0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13340         0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13341         0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13342         0x03801842, 0x03801744, 0x03801742, 0x03801644,
13343         0x03801642, 0x03801544, 0x03801542, 0x03801444,
13344         0x03801442, 0x03801344, 0x03801342, 0x00002b00
13345 };
13346
13347 static const u16 nphy_tpc_loscale[] = {
13348         256, 256, 271, 271, 287, 256, 256, 271,
13349         271, 287, 287, 304, 304, 256, 256, 271,
13350         271, 287, 287, 304, 304, 322, 322, 341,
13351         341, 362, 362, 383, 383, 256, 256, 271,
13352         271, 287, 287, 304, 304, 322, 322, 256,
13353         256, 271, 271, 287, 287, 304, 304, 322,
13354         322, 341, 341, 362, 362, 256, 256, 271,
13355         271, 287, 287, 304, 304, 322, 322, 256,
13356         256, 271, 271, 287, 287, 304, 304, 322,
13357         322, 341, 341, 362, 362, 256, 256, 271,
13358         271, 287, 287, 304, 304, 322, 322, 341,
13359         341, 362, 362, 383, 383, 406, 406, 430,
13360         430, 455, 455, 482, 482, 511, 511, 541,
13361         541, 573, 573, 607, 607, 643, 643, 681,
13362         681, 722, 722, 764, 764, 810, 810, 858,
13363         858, 908, 908, 962, 962, 1019, 1019, 256
13364 };
13365
13366 static u32 nphy_tpc_txgain_ipa[] = {
13367         0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13368         0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13369         0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13370         0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13371         0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13372         0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13373         0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13374         0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13375         0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13376         0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13377         0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13378         0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13379         0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13380         0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13381         0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13382         0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13383         0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13384         0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13385         0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13386         0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13387         0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13388         0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13389         0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13390         0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13391         0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13392         0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13393         0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13394         0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13395         0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13396         0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13397         0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13398         0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13399 };
13400
13401 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13402         0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13403         0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13404         0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13405         0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13406         0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13407         0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13408         0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13409         0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13410         0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13411         0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13412         0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13413         0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13414         0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13415         0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13416         0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13417         0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13418         0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13419         0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13420         0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13421         0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13422         0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13423         0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13424         0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13425         0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13426         0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13427         0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13428         0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13429         0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13430         0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13431         0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13432         0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13433         0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13434 };
13435
13436 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13437         0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13438         0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13439         0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13440         0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13441         0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13442         0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13443         0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13444         0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13445         0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13446         0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13447         0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13448         0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13449         0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13450         0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13451         0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13452         0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13453         0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13454         0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13455         0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13456         0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13457         0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13458         0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13459         0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13460         0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13461         0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13462         0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13463         0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13464         0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13465         0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13466         0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13467         0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13468         0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13469 };
13470
13471 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13472         0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13473         0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13474         0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13475         0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13476         0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13477         0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13478         0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13479         0x70470028, 0x70470026, 0x70470024, 0x70470022,
13480         0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13481         0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13482         0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13483         0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13484         0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13485         0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13486         0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13487         0x70170019, 0x70170018, 0x70170016, 0x70170015,
13488         0x70170014, 0x70170013, 0x70170012, 0x70170010,
13489         0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13490         0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13491         0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13492         0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13493         0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13494         0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13495         0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13496         0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13497         0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13498         0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13499         0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13500         0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13501         0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13502         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13503         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13504 };
13505
13506 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13507         0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13508         0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13509         0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13510         0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13511         0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13512         0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13513         0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13514         0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13515         0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13516         0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13517         0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13518         0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13519         0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13520         0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13521         0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13522         0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13523         0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13524         0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13525         0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13526         0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13527         0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13528         0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13529         0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13530         0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13531         0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13532         0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13533         0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13534         0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13535         0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13536         0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13537         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13538         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13539 };
13540
13541 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13542         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13543         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13544         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13545         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13546         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13547         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13548         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13549         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13550         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13551         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13552         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13553         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13554         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13555         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13556         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13557         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13558         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13559         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13560         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13561         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13562         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
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 };
13575
13576 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13577         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13578         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13579         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13580         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13581         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13582         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13583         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13584         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13585         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13586         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13587         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13588         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13589         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13590         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13591         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13592         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13593         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13594         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13595         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13596         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13597         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13598         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13599         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13600         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13601         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13602         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13603         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13604         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13605         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13606         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13607         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13608         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13609 };
13610
13611 static u32 nphy_tpc_txgain_ipa_5g[] = {
13612         0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13613         0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13614         0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13615         0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13616         0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13617         0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13618         0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13619         0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13620         0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13621         0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13622         0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13623         0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13624         0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13625         0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13626         0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13627         0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13628         0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13629         0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13630         0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13631         0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13632         0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13633         0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13634         0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13635         0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13636         0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13637         0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13638         0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13639         0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13640         0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13641         0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13642         0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13643         0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13644 };
13645
13646 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13647         0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13648         0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13649         0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13650         0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13651         0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13652         0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13653         0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13654         0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13655         0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13656         0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13657         0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13658         0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13659         0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13660         0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13661         0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13662         0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13663         0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13664         0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13665         0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13666         0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13667         0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13668         0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13669         0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13670         0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13671         0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13672         0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13673         0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13674         0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13675         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13676         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13677         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13678         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13679 };
13680
13681 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13682         0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13683         0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13684         0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13685         0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13686         0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13687         0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13688         0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13689         0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13690         0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13691         0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13692         0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13693         0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13694         0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13695         0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13696         0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13697         0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13698         0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13699         0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13700         0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13701         0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13702         0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13703         0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13704         0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13705         0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13706         0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13707         0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13708         0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13709         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13710         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13711         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13712         0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13713         0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13714 };
13715
13716 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13717         -114, -108, -98, -91, -84, -78, -70, -62,
13718         -54, -46, -39, -31, -23, -15, -8, 0
13719 };
13720
13721 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13722         -100, -95, -89, -83, -77, -70, -63, -56,
13723         -48, -41, -33, -25, -19, -12, -6, 0
13724 };
13725
13726 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13727         -159, -113, -86, -72, -62, -54, -48, -43,
13728         -39, -35, -31, -28, -25, -23, -20, -18,
13729         -17, -15, -13, -11, -10, -8, -7, -6,
13730         -5, -4, -3, -3, -2, -1, -1, 0
13731 };
13732
13733 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13734         -109, -109, -82, -68, -58, -50, -44, -39,
13735         -35, -31, -28, -26, -23, -21, -19, -17,
13736         -16, -14, -13, -11, -10, -9, -8, -7,
13737         -5, -5, -4, -3, -2, -1, -1, 0
13738 };
13739
13740 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13741         -122, -122, -95, -80, -69, -61, -54, -49,
13742         -43, -39, -35, -32, -28, -26, -23, -21,
13743         -18, -16, -15, -13, -11, -10, -8, -7,
13744         -6, -5, -4, -3, -2, -1, -1, 0
13745 };
13746
13747 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13748         -107, -101, -92, -85, -78, -71, -62, -55,
13749         -47, -39, -32, -24, -19, -12, -6, 0
13750 };
13751
13752 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13753         -110, -104, -95, -88, -81, -74, -66, -58,
13754         -50, -44, -36, -28, -23, -15, -8, 0
13755 };
13756
13757 static u8 pad_gain_codes_used_2057rev5[] = {
13758         20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13759         10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13760 };
13761
13762 static u8 pad_gain_codes_used_2057rev7[] = {
13763         15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13764         5, 4, 3, 2, 1
13765 };
13766
13767 static u8 pad_all_gain_codes_2057[] = {
13768         31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13769         21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13770         11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13771         1, 0
13772 };
13773
13774 static u8 pga_all_gain_codes_2057[] = {
13775         15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13776 };
13777
13778 static u32 nphy_papd_scaltbl[] = {
13779         0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13780         0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13781         0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13782         0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13783         0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13784         0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13785         0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13786         0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13787         0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13788         0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13789         0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13790         0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13791         0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13792         0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13793         0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13794         0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13795 };
13796
13797 static u32 nphy_tpc_txgain_rev3[] = {
13798         0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13799         0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13800         0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13801         0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13802         0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13803         0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13804         0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13805         0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13806         0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13807         0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13808         0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13809         0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13810         0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13811         0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13812         0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13813         0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13814         0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13815         0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13816         0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13817         0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13818         0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13819         0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13820         0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13821         0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13822         0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13823         0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13824         0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13825         0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13826         0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13827         0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13828         0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13829         0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13830 };
13831
13832 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13833         0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13834         0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13835         0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13836         0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13837         0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13838         0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13839         0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13840         0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13841         0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13842         0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13843         0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13844         0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13845         0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13846         0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13847         0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13848         0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13849         0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13850         0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13851         0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13852         0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13853         0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13854         0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13855         0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13856         0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13857         0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13858         0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13859         0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13860         0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13861         0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13862         0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13863         0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13864         0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13865 };
13866
13867 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13868         0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13869         0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13870         0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13871         0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13872         0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13873         0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13874         0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13875         0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13876         0x80290031, 0x80210039, 0x80210036, 0x80210033,
13877         0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13878         0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13879         0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13880         0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13881         0x80110027, 0x80110024, 0x80110022, 0x80110020,
13882         0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13883         0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13884         0x80090029, 0x80090027, 0x80090025, 0x80090023,
13885         0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13886         0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13887         0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13888         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13889         0x8009071d, 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 };
13901
13902 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13903         0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13904         0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13905         0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13906         0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13907         0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13908         0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13909         0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13910         0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13911         0x10290031, 0x10210039, 0x10210036, 0x10210033,
13912         0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13913         0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13914         0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13915         0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13916         0x10110027, 0x10110024, 0x10110022, 0x10110020,
13917         0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13918         0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13919         0x10090029, 0x10090027, 0x10090025, 0x10090023,
13920         0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13921         0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13922         0x10090015, 0x10090013, 0x10090012, 0x10090011,
13923         0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13924         0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13925         0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13926         0x10090008, 0x10090008, 0x10090007, 0x10090007,
13927         0x10090007, 0x10090006, 0x10090006, 0x10090005,
13928         0x10090005, 0x10090005, 0x10090005, 0x10090004,
13929         0x10090004, 0x10090004, 0x10090004, 0x10090003,
13930         0x10090003, 0x10090003, 0x10090003, 0x10090003,
13931         0x10090003, 0x10090002, 0x10090002, 0x10090002,
13932         0x10090002, 0x10090002, 0x10090002, 0x10090002,
13933         0x10090002, 0x10090002, 0x10090001, 0x10090001,
13934         0x10090001, 0x10090001, 0x10090001, 0x10090001
13935 };
13936
13937 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13938         0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13939         0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13940         0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13941         0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13942         0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13943         0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13944         0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13945         0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13946         0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13947         0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13948         0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13949         0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13950         0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13951         0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13952         0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13953         0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13954         0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13955         0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13956         0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13957         0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13958         0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13959         0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13960         0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13961         0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13962         0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13963         0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
13964         0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
13965         0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
13966         0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
13967         0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
13968         0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
13969         0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
13970 };
13971
13972 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
13973         0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
13974         0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
13975         0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
13976         0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
13977         0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
13978         0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
13979         0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
13980         0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
13981         0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
13982         0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
13983         0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
13984         0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
13985         0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
13986         0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
13987         0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
13988         0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
13989         0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
13990         0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
13991         0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
13992         0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
13993         0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
13994         0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
13995         0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
13996         0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
13997         0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
13998         0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
13999         0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14000         0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14001         0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14002         0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14003         0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14004         0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14005 };
14006
14007 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14008         0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14009         0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14010         0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14011         0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14012         0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14013         0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14014         0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14015         0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14016         0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14017         0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14018         0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14019         0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14020         0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14021         0x09620039, 0x09620037, 0x09620035, 0x09620033,
14022         0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14023         0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14024         0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14025         0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14026         0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14027         0x06620039, 0x06620037, 0x06620035, 0x06620033,
14028         0x05620046, 0x05620044, 0x05620042, 0x05620040,
14029         0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14030         0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14031         0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14032         0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14033         0x03620038, 0x03620037, 0x03620035, 0x03620033,
14034         0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14035         0x02620046, 0x02620044, 0x02620043, 0x02620042,
14036         0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14037         0x01620043, 0x01620042, 0x01620041, 0x01620040,
14038         0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14039         0x0062003b, 0x00620039, 0x00620037, 0x00620035
14040 };
14041
14042 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14043         0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14044         0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14045         0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14046         0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14047         0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14048         0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14049         0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14050         0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14051         0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14052         0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14053         0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14054         0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14055         0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14056         0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14057         0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14058         0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14059         0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14060         0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14061         0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14062         0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14063         0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14064         0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14065         0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14066         0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14067         0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14068         0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14069         0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14070         0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14071         0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14072         0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14073         0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14074         0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14075 };
14076
14077 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14078 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14079 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14080         0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a };
14081 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14082         0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16 };
14083
14084 static bool wlc_phy_chan2freq_nphy(phy_info_t *pi, uint channel, int *f,
14085                                    chan_info_nphy_radio2057_t **t0,
14086                                    chan_info_nphy_radio205x_t **t1,
14087                                    chan_info_nphy_radio2057_rev5_t **t2,
14088                                    chan_info_nphy_2055_t **t3);
14089 static void wlc_phy_chanspec_nphy_setup(phy_info_t *pi, chanspec_t chans,
14090                                         const nphy_sfo_cfg_t *c);
14091
14092 static void wlc_phy_adjust_rx_analpfbw_nphy(phy_info_t *pi,
14093                                             u16 reduction_factr);
14094 static void wlc_phy_adjust_min_noisevar_nphy(phy_info_t *pi, int ntones, int *,
14095                                              u32 *buf);
14096 static void wlc_phy_adjust_crsminpwr_nphy(phy_info_t *pi, u8 minpwr);
14097 static void wlc_phy_txlpfbw_nphy(phy_info_t *pi);
14098 static void wlc_phy_spurwar_nphy(phy_info_t *pi);
14099
14100 static void wlc_phy_radio_preinit_2055(phy_info_t *pi);
14101 static void wlc_phy_radio_init_2055(phy_info_t *pi);
14102 static void wlc_phy_radio_postinit_2055(phy_info_t *pi);
14103 static void wlc_phy_radio_preinit_205x(phy_info_t *pi);
14104 static void wlc_phy_radio_init_2056(phy_info_t *pi);
14105 static void wlc_phy_radio_postinit_2056(phy_info_t *pi);
14106 static void wlc_phy_radio_init_2057(phy_info_t *pi);
14107 static void wlc_phy_radio_postinit_2057(phy_info_t *pi);
14108 static void wlc_phy_workarounds_nphy(phy_info_t *pi);
14109 static void wlc_phy_workarounds_nphy_gainctrl(phy_info_t *pi);
14110 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(phy_info_t *pi);
14111 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(phy_info_t *pi);
14112 static void wlc_phy_adjust_lnagaintbl_nphy(phy_info_t *pi);
14113
14114 static void wlc_phy_restore_rssical_nphy(phy_info_t *pi);
14115 static void wlc_phy_reapply_txcal_coeffs_nphy(phy_info_t *pi);
14116 static void wlc_phy_tx_iq_war_nphy(phy_info_t *pi);
14117 static int wlc_phy_cal_rxiq_nphy_rev3(phy_info_t *pi, nphy_txgains_t tg,
14118                                       u8 type, bool d);
14119 static void wlc_phy_rxcal_gainctrl_nphy_rev5(phy_info_t *pi, u8 rxcore,
14120                                              u16 *rg, u8 type);
14121 static void wlc_phy_update_mimoconfig_nphy(phy_info_t *pi, s32 preamble);
14122 static void wlc_phy_savecal_nphy(phy_info_t *pi);
14123 static void wlc_phy_restorecal_nphy(phy_info_t *pi);
14124 static void wlc_phy_resetcca_nphy(phy_info_t *pi);
14125
14126 static void wlc_phy_txpwrctrl_config_nphy(phy_info_t *pi);
14127 static void wlc_phy_internal_cal_txgain_nphy(phy_info_t *pi);
14128 static void wlc_phy_precal_txgain_nphy(phy_info_t *pi);
14129 static void wlc_phy_update_txcal_ladder_nphy(phy_info_t *pi, u16 core);
14130
14131 static void wlc_phy_extpa_set_tx_digi_filts_nphy(phy_info_t *pi);
14132 static void wlc_phy_ipa_set_tx_digi_filts_nphy(phy_info_t *pi);
14133 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(phy_info_t *pi);
14134 static u16 wlc_phy_ipa_get_bbmult_nphy(phy_info_t *pi);
14135 static void wlc_phy_ipa_set_bbmult_nphy(phy_info_t *pi, u8 m0, u8 m1);
14136 static u32 *wlc_phy_get_ipa_gaintbl_nphy(phy_info_t *pi);
14137
14138 static void wlc_phy_a1_nphy(phy_info_t *pi, u8 core, u32 winsz, u32,
14139                             u32 e);
14140 static u8 wlc_phy_a3_nphy(phy_info_t *pi, u8 start_gain, u8 core);
14141 static void wlc_phy_a2_nphy(phy_info_t *pi, nphy_ipa_txcalgains_t *,
14142                             phy_cal_mode_t, u8);
14143 static void wlc_phy_papd_cal_cleanup_nphy(phy_info_t *pi,
14144                                           nphy_papd_restore_state *state);
14145 static void wlc_phy_papd_cal_setup_nphy(phy_info_t *pi,
14146                                         nphy_papd_restore_state *state, u8);
14147
14148 static void wlc_phy_clip_det_nphy(phy_info_t *pi, u8 write, u16 *vals);
14149
14150 static void wlc_phy_set_rfseq_nphy(phy_info_t *pi, u8 cmd, u8 *evts,
14151                                    u8 *dlys, u8 len);
14152
14153 static u16 wlc_phy_read_lpf_bw_ctl_nphy(phy_info_t *pi, u16 offset);
14154
14155 static void
14156 wlc_phy_rfctrl_override_nphy_rev7(phy_info_t *pi, u16 field, u16 value,
14157                                   u8 core_mask, u8 off,
14158                                   u8 override_id);
14159
14160 static void wlc_phy_rssi_cal_nphy_rev2(phy_info_t *pi, u8 rssi_type);
14161 static void wlc_phy_rssi_cal_nphy_rev3(phy_info_t *pi);
14162
14163 static bool wlc_phy_txpwr_srom_read_nphy(phy_info_t *pi);
14164 static void wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max,
14165                                             u16 *pwr_offset,
14166                                             u8 tmp_max_pwr, u8 rate_start,
14167                                             u8 rate_end);
14168
14169 static void wlc_phy_txpwr_limit_to_tbl_nphy(phy_info_t *pi);
14170 static void wlc_phy_txpwrctrl_coeff_setup_nphy(phy_info_t *pi);
14171 static void wlc_phy_txpwrctrl_idle_tssi_nphy(phy_info_t *pi);
14172 static void wlc_phy_txpwrctrl_pwr_setup_nphy(phy_info_t *pi);
14173
14174 static bool wlc_phy_txpwr_ison_nphy(phy_info_t *pi);
14175 static u8 wlc_phy_txpwr_idx_cur_get_nphy(phy_info_t *pi, u8 core);
14176 static void wlc_phy_txpwr_idx_cur_set_nphy(phy_info_t *pi, u8 idx0,
14177                                            u8 idx1);
14178 static void wlc_phy_a4(phy_info_t *pi, bool full_cal);
14179
14180 static u16 wlc_phy_radio205x_rcal(phy_info_t *pi);
14181
14182 static u16 wlc_phy_radio2057_rccal(phy_info_t *pi);
14183
14184 static u16 wlc_phy_gen_load_samples_nphy(phy_info_t *pi, u32 f_kHz,
14185                                             u16 max_val,
14186                                             u8 dac_test_mode);
14187 static void wlc_phy_loadsampletable_nphy(phy_info_t *pi, cs32 *tone_buf,
14188                                          u16 num_samps);
14189 static void wlc_phy_runsamples_nphy(phy_info_t *pi, u16 n, u16 lps,
14190                                     u16 wait, u8 iq, u8 dac_test_mode,
14191                                     bool modify_bbmult);
14192
14193 bool wlc_phy_bist_check_phy(wlc_phy_t *pih)
14194 {
14195         phy_info_t *pi = (phy_info_t *) pih;
14196         u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14197
14198         if (NREV_GE(pi->pubpi.phy_rev, 16))
14199                 return true;
14200
14201         phybist0 = read_phy_reg(pi, 0x0e);
14202         phybist1 = read_phy_reg(pi, 0x0f);
14203         phybist2 = read_phy_reg(pi, 0xea);
14204         phybist3 = read_phy_reg(pi, 0xeb);
14205         phybist4 = read_phy_reg(pi, 0x156);
14206
14207         if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14208             (phybist3 == 0) && (phybist4 == 0)) {
14209                 return true;
14210         }
14211
14212         return false;
14213 }
14214
14215 static void WLBANDINITFN(wlc_phy_bphy_init_nphy) (phy_info_t *pi)
14216 {
14217         u16 addr, val;
14218
14219         ASSERT(ISNPHY(pi));
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
14369                         ASSERT(0);
14370                         break;
14371                 }
14372
14373         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14374                 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14375
14376                         if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14377                                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14378                                     pi->srom_fem2g.antswctrllut : pi->
14379                                     srom_fem5g.antswctrllut;
14380                                 switch (antswctrllut) {
14381                                 case 0:
14382                                         wlc_phy_write_table_nphy(pi,
14383                                                                  &mimophytbl_info_rev3_volatile
14384                                                                  [idx]);
14385                                         break;
14386                                 case 1:
14387                                         wlc_phy_write_table_nphy(pi,
14388                                                                  &mimophytbl_info_rev3_volatile1
14389                                                                  [idx]);
14390                                         break;
14391                                 case 2:
14392                                         wlc_phy_write_table_nphy(pi,
14393                                                                  &mimophytbl_info_rev3_volatile2
14394                                                                  [idx]);
14395                                         break;
14396                                 case 3:
14397                                         wlc_phy_write_table_nphy(pi,
14398                                                                  &mimophytbl_info_rev3_volatile3
14399                                                                  [idx]);
14400                                         break;
14401                                 default:
14402
14403                                         ASSERT(0);
14404                                         break;
14405                                 }
14406                         } else {
14407                                 wlc_phy_write_table_nphy(pi,
14408                                                          &mimophytbl_info_rev3_volatile
14409                                                          [idx]);
14410                         }
14411                 }
14412         } else {
14413                 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++) {
14414                         wlc_phy_write_table_nphy(pi,
14415                                                  &mimophytbl_info_rev0_volatile
14416                                                  [idx]);
14417                 }
14418         }
14419 }
14420
14421 static void
14422 wlc_phy_write_txmacreg_nphy(phy_info_t *pi, u16 holdoff, u16 delay)
14423 {
14424         write_phy_reg(pi, 0x77, holdoff);
14425         write_phy_reg(pi, 0xb4, delay);
14426 }
14427
14428 void wlc_phy_nphy_tkip_rifs_war(phy_info_t *pi, u8 rifs)
14429 {
14430         u16 holdoff, delay;
14431
14432         if (rifs) {
14433
14434                 holdoff = 0x10;
14435                 delay = 0x258;
14436         } else {
14437
14438                 holdoff = 0x15;
14439                 delay = 0x320;
14440         }
14441
14442         wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14443
14444         if (pi && pi->sh && (pi->sh->_rifs_phy != rifs)) {
14445                 pi->sh->_rifs_phy = rifs;
14446         }
14447 }
14448
14449 bool wlc_phy_attach_nphy(phy_info_t *pi)
14450 {
14451         uint i;
14452
14453         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6)) {
14454                 pi->phyhang_avoid = true;
14455         }
14456
14457         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14458
14459                 pi->nphy_gband_spurwar_en = true;
14460
14461                 if (pi->sh->boardflags2 & BFL2_SPUR_WAR) {
14462                         pi->nphy_aband_spurwar_en = true;
14463                 }
14464         }
14465         if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14466
14467                 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR) {
14468                         pi->nphy_gband_spurwar2_en = true;
14469                 }
14470         }
14471
14472         pi->n_preamble_override = AUTO;
14473         if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14474                 pi->n_preamble_override = WLC_N_PREAMBLE_MIXEDMODE;
14475
14476         pi->nphy_txrx_chain = AUTO;
14477         pi->phy_scraminit = AUTO;
14478
14479         pi->nphy_rxcalparams = 0x010100B5;
14480
14481         pi->nphy_perical = PHY_PERICAL_MPHASE;
14482         pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14483         pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14484
14485         pi->nphy_gain_boost = true;
14486         pi->nphy_elna_gain_config = false;
14487         pi->radio_is_on = false;
14488
14489         for (i = 0; i < pi->pubpi.phy_corenum; i++) {
14490                 pi->nphy_txpwrindex[i].index = AUTO;
14491         }
14492
14493         wlc_phy_txpwrctrl_config_nphy(pi);
14494         if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14495                 pi->hwpwrctrl_capable = true;
14496
14497         pi->pi_fptr.init = wlc_phy_init_nphy;
14498         pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14499         pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14500         pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14501
14502         if (!wlc_phy_txpwr_srom_read_nphy(pi))
14503                 return false;
14504
14505         return true;
14506 }
14507
14508 static void wlc_phy_txpwrctrl_config_nphy(phy_info_t *pi)
14509 {
14510
14511         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14512                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14513                 pi->phy_5g_pwrgain = true;
14514                 return;
14515         }
14516
14517         pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14518         pi->phy_5g_pwrgain = false;
14519
14520         if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14521             NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14522                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14523         else if ((pi->sh->sromrev >= 4)
14524                  && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14525                 pi->phy_5g_pwrgain = true;
14526 }
14527
14528 void WLBANDINITFN(wlc_phy_init_nphy) (phy_info_t *pi)
14529 {
14530         u16 val;
14531         u16 clip1_ths[2];
14532         nphy_txgains_t target_gain;
14533         u8 tx_pwr_ctrl_state;
14534         bool do_nphy_cal = false;
14535         uint core;
14536         uint origidx, intr_val;
14537         d11regs_t *regs;
14538         u32 d11_clk_ctl_st;
14539
14540         core = 0;
14541
14542         if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN)) {
14543                 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
14544         }
14545
14546         if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
14547             ((pi->sh->chippkg == BCM4717_PKG_ID) ||
14548              (pi->sh->chippkg == BCM4718_PKG_ID))) {
14549                 if ((pi->sh->boardflags & BFL_EXTLNA) &&
14550                     (CHSPEC_IS2G(pi->radio_chanspec))) {
14551                         si_corereg(pi->sh->sih, SI_CC_IDX,
14552                                    offsetof(chipcregs_t, chipcontrol), 0x40,
14553                                    0x40);
14554                 }
14555         }
14556
14557         if ((!PHY_IPA(pi)) && (CHIPID(pi->sh->chip) == BCM5357_CHIP_ID)) {
14558                 si_pmu_chipcontrol(pi->sh->sih, 1, CCTRL5357_EXTPA,
14559                                    CCTRL5357_EXTPA);
14560         }
14561
14562         if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
14563             CHSPEC_IS40(pi->radio_chanspec)) {
14564
14565                 regs = (d11regs_t *) si_switch_core(pi->sh->sih, D11_CORE_ID,
14566                                                     &origidx, &intr_val);
14567                 ASSERT(regs != NULL);
14568
14569                 d11_clk_ctl_st = R_REG(pi->sh->osh, &regs->clk_ctl_st);
14570                 AND_REG(pi->sh->osh, &regs->clk_ctl_st,
14571                         ~(CCS_FORCEHT | CCS_HTAREQ));
14572
14573                 W_REG(pi->sh->osh, &regs->clk_ctl_st, d11_clk_ctl_st);
14574
14575                 si_restore_core(pi->sh->sih, origidx, intr_val);
14576         }
14577
14578         pi->use_int_tx_iqlo_cal_nphy =
14579             (PHY_IPA(pi) ||
14580              (NREV_GE(pi->pubpi.phy_rev, 7) ||
14581               (NREV_GE(pi->pubpi.phy_rev, 5)
14582                && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
14583
14584         pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
14585
14586         pi->nphy_deaf_count = 0;
14587
14588         wlc_phy_tbl_init_nphy(pi);
14589
14590         pi->nphy_crsminpwr_adjusted = false;
14591         pi->nphy_noisevars_adjusted = false;
14592
14593         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14594                 write_phy_reg(pi, 0xe7, 0);
14595                 write_phy_reg(pi, 0xec, 0);
14596                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14597                         write_phy_reg(pi, 0x342, 0);
14598                         write_phy_reg(pi, 0x343, 0);
14599                         write_phy_reg(pi, 0x346, 0);
14600                         write_phy_reg(pi, 0x347, 0);
14601                 }
14602                 write_phy_reg(pi, 0xe5, 0);
14603                 write_phy_reg(pi, 0xe6, 0);
14604         } else {
14605                 write_phy_reg(pi, 0xec, 0);
14606         }
14607
14608         write_phy_reg(pi, 0x91, 0);
14609         write_phy_reg(pi, 0x92, 0);
14610         if (NREV_LT(pi->pubpi.phy_rev, 6)) {
14611                 write_phy_reg(pi, 0x93, 0);
14612                 write_phy_reg(pi, 0x94, 0);
14613         }
14614
14615         and_phy_reg(pi, 0xa1, ~3);
14616
14617         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14618                 write_phy_reg(pi, 0x8f, 0);
14619                 write_phy_reg(pi, 0xa5, 0);
14620         } else {
14621                 write_phy_reg(pi, 0xa5, 0);
14622         }
14623
14624         if (NREV_IS(pi->pubpi.phy_rev, 2))
14625                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
14626         else if (NREV_LT(pi->pubpi.phy_rev, 2))
14627                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
14628
14629         write_phy_reg(pi, 0x203, 32);
14630         write_phy_reg(pi, 0x201, 32);
14631
14632         if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
14633                 write_phy_reg(pi, 0x20d, 160);
14634         else
14635                 write_phy_reg(pi, 0x20d, 184);
14636
14637         write_phy_reg(pi, 0x13a, 200);
14638
14639         write_phy_reg(pi, 0x70, 80);
14640
14641         write_phy_reg(pi, 0x1ff, 48);
14642
14643         if (NREV_LT(pi->pubpi.phy_rev, 8)) {
14644                 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
14645         }
14646
14647         wlc_phy_stf_chain_upd_nphy(pi);
14648
14649         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
14650                 write_phy_reg(pi, 0x180, 0xaa8);
14651                 write_phy_reg(pi, 0x181, 0x9a4);
14652         }
14653
14654         if (PHY_IPA(pi)) {
14655                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
14656
14657                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
14658                                     0x29b, (0x1 << 0), (1) << 0);
14659
14660                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
14661                                     0x29c, (0x1ff << 7),
14662                                     (pi->nphy_papd_epsilon_offset[core]) << 7);
14663
14664                 }
14665
14666                 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
14667         } else {
14668
14669                 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
14670                         wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
14671                 }
14672         }
14673
14674         wlc_phy_workarounds_nphy(pi);
14675
14676         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
14677
14678         val = read_phy_reg(pi, 0x01);
14679         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
14680         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
14681         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
14682
14683         wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
14684
14685         wlc_phy_pa_override_nphy(pi, OFF);
14686         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
14687         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
14688         wlc_phy_pa_override_nphy(pi, ON);
14689
14690         wlc_phy_classifier_nphy(pi, 0, 0);
14691         wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
14692
14693         if (CHSPEC_IS2G(pi->radio_chanspec))
14694                 wlc_phy_bphy_init_nphy(pi);
14695
14696         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
14697         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
14698
14699         wlc_phy_txpwr_fixpower_nphy(pi);
14700
14701         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
14702
14703         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
14704
14705         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14706                 u32 *tx_pwrctrl_tbl = NULL;
14707                 u16 idx;
14708                 s16 pga_gn = 0;
14709                 s16 pad_gn = 0;
14710                 s32 rfpwr_offset = 0;
14711
14712                 if (PHY_IPA(pi)) {
14713                         tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
14714                 } else {
14715                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
14716                                 if NREV_IS
14717                                         (pi->pubpi.phy_rev, 3) {
14718                                         tx_pwrctrl_tbl =
14719                                             nphy_tpc_5GHz_txgain_rev3;
14720                                 } else if NREV_IS
14721                                         (pi->pubpi.phy_rev, 4) {
14722                                         tx_pwrctrl_tbl =
14723                                             (pi->srom_fem5g.extpagain == 3) ?
14724                                             nphy_tpc_5GHz_txgain_HiPwrEPA :
14725                                             nphy_tpc_5GHz_txgain_rev4;
14726                                 } else {
14727                                         tx_pwrctrl_tbl =
14728                                             nphy_tpc_5GHz_txgain_rev5;
14729                                 }
14730
14731                         } else {
14732                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14733                                         if (pi->pubpi.radiorev == 5) {
14734                                                 tx_pwrctrl_tbl =
14735                                                     nphy_tpc_txgain_epa_2057rev5;
14736                                         } else if (pi->pubpi.radiorev == 3) {
14737                                                 tx_pwrctrl_tbl =
14738                                                     nphy_tpc_txgain_epa_2057rev3;
14739                                         }
14740
14741                                 } else {
14742                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
14743                                             (pi->srom_fem2g.extpagain == 3)) {
14744                                                 tx_pwrctrl_tbl =
14745                                                     nphy_tpc_txgain_HiPwrEPA;
14746                                         } else {
14747                                                 tx_pwrctrl_tbl =
14748                                                     nphy_tpc_txgain_rev3;
14749                                         }
14750                                 }
14751                         }
14752                 }
14753
14754                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
14755                                          192, 32, tx_pwrctrl_tbl);
14756                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
14757                                          192, 32, tx_pwrctrl_tbl);
14758
14759                 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
14760
14761                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14762
14763                         for (idx = 0; idx < 128; idx++) {
14764                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
14765                                 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
14766
14767                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14768                                         if ((pi->pubpi.radiorev == 3) ||
14769                                             (pi->pubpi.radiorev == 4) ||
14770                                             (pi->pubpi.radiorev == 6)) {
14771                                                 rfpwr_offset = (s16)
14772                                                     nphy_papd_padgain_dlt_2g_2057rev3n4
14773                                                     [pad_gn];
14774                                         } else if (pi->pubpi.radiorev == 5) {
14775                                                 rfpwr_offset = (s16)
14776                                                     nphy_papd_padgain_dlt_2g_2057rev5
14777                                                     [pad_gn];
14778                                         } else if ((pi->pubpi.radiorev == 7)
14779                                                    || (pi->pubpi.radiorev ==
14780                                                        8)) {
14781                                                 rfpwr_offset = (s16)
14782                                                     nphy_papd_padgain_dlt_2g_2057rev7
14783                                                     [pad_gn];
14784                                         } else {
14785                                                 ASSERT(0);
14786                                         }
14787
14788                                 } else {
14789                                         if ((pi->pubpi.radiorev == 3) ||
14790                                             (pi->pubpi.radiorev == 4) ||
14791                                             (pi->pubpi.radiorev == 6)) {
14792                                                 rfpwr_offset = (s16)
14793                                                     nphy_papd_pgagain_dlt_5g_2057
14794                                                     [pga_gn];
14795                                         } else if ((pi->pubpi.radiorev == 7)
14796                                                    || (pi->pubpi.radiorev ==
14797                                                        8)) {
14798                                                 rfpwr_offset = (s16)
14799                                                     nphy_papd_pgagain_dlt_5g_2057rev7
14800                                                     [pga_gn];
14801                                         } else {
14802                                                 ASSERT(0);
14803                                         }
14804                                 }
14805                                 wlc_phy_table_write_nphy(pi,
14806                                                          NPHY_TBL_ID_CORE1TXPWRCTL,
14807                                                          1, 576 + idx, 32,
14808                                                          &rfpwr_offset);
14809                                 wlc_phy_table_write_nphy(pi,
14810                                                          NPHY_TBL_ID_CORE2TXPWRCTL,
14811                                                          1, 576 + idx, 32,
14812                                                          &rfpwr_offset);
14813                         }
14814                 } else {
14815
14816                         for (idx = 0; idx < 128; idx++) {
14817                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
14818                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14819                                         rfpwr_offset = (s16)
14820                                             nphy_papd_pga_gain_delta_ipa_2g
14821                                             [pga_gn];
14822                                 } else {
14823                                         rfpwr_offset = (s16)
14824                                             nphy_papd_pga_gain_delta_ipa_5g
14825                                             [pga_gn];
14826                                 }
14827
14828                                 wlc_phy_table_write_nphy(pi,
14829                                                          NPHY_TBL_ID_CORE1TXPWRCTL,
14830                                                          1, 576 + idx, 32,
14831                                                          &rfpwr_offset);
14832                                 wlc_phy_table_write_nphy(pi,
14833                                                          NPHY_TBL_ID_CORE2TXPWRCTL,
14834                                                          1, 576 + idx, 32,
14835                                                          &rfpwr_offset);
14836                         }
14837
14838                 }
14839         } else {
14840
14841                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
14842                                          192, 32, nphy_tpc_txgain);
14843                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
14844                                          192, 32, nphy_tpc_txgain);
14845         }
14846
14847         if (pi->sh->phyrxchain != 0x3) {
14848                 wlc_phy_rxcore_setstate_nphy((wlc_phy_t *) pi,
14849                                              pi->sh->phyrxchain);
14850         }
14851
14852         if (PHY_PERICAL_MPHASE_PENDING(pi)) {
14853                 wlc_phy_cal_perical_mphase_restart(pi);
14854         }
14855
14856         if (!NORADIO_ENAB(pi->pubpi)) {
14857                 bool do_rssi_cal = false;
14858
14859                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14860                         do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
14861                             (pi->nphy_rssical_chanspec_2G == 0) :
14862                             (pi->nphy_rssical_chanspec_5G == 0);
14863
14864                         if (do_rssi_cal) {
14865                                 wlc_phy_rssi_cal_nphy(pi);
14866                         } else {
14867                                 wlc_phy_restore_rssical_nphy(pi);
14868                         }
14869                 } else {
14870                         wlc_phy_rssi_cal_nphy(pi);
14871                 }
14872
14873                 if (!SCAN_RM_IN_PROGRESS(pi)) {
14874                         do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
14875                             (pi->nphy_iqcal_chanspec_2G == 0) :
14876                             (pi->nphy_iqcal_chanspec_5G == 0);
14877                 }
14878
14879                 if (!pi->do_initcal)
14880                         do_nphy_cal = false;
14881
14882                 if (do_nphy_cal) {
14883
14884                         target_gain = wlc_phy_get_tx_gain_nphy(pi);
14885
14886                         if (pi->antsel_type == ANTSEL_2x3)
14887                                 wlc_phy_antsel_init((wlc_phy_t *) pi, true);
14888
14889                         if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
14890                                 wlc_phy_rssi_cal_nphy(pi);
14891
14892                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14893                                         pi->nphy_cal_orig_pwr_idx[0] =
14894                                             pi->nphy_txpwrindex[PHY_CORE_0].
14895                                             index_internal;
14896                                         pi->nphy_cal_orig_pwr_idx[1] =
14897                                             pi->nphy_txpwrindex[PHY_CORE_1].
14898                                             index_internal;
14899
14900                                         wlc_phy_precal_txgain_nphy(pi);
14901                                         target_gain =
14902                                             wlc_phy_get_tx_gain_nphy(pi);
14903                                 }
14904
14905                                 if (wlc_phy_cal_txiqlo_nphy
14906                                     (pi, target_gain, true, false) == BCME_OK) {
14907                                         if (wlc_phy_cal_rxiq_nphy
14908                                             (pi, target_gain, 2,
14909                                              false) == BCME_OK) {
14910                                                 wlc_phy_savecal_nphy(pi);
14911
14912                                         }
14913                                 }
14914                         } else if (pi->mphase_cal_phase_id ==
14915                                    MPHASE_CAL_STATE_IDLE) {
14916
14917                                 wlc_phy_cal_perical((wlc_phy_t *) pi,
14918                                                     PHY_PERICAL_PHYINIT);
14919                         }
14920                 } else {
14921                         wlc_phy_restorecal_nphy(pi);
14922                 }
14923         }
14924
14925         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
14926
14927         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
14928
14929         wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
14930
14931         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
14932
14933                 write_phy_reg(pi, 0x70, 50);
14934
14935         wlc_phy_txlpfbw_nphy(pi);
14936
14937         wlc_phy_spurwar_nphy(pi);
14938
14939 }
14940
14941 static void wlc_phy_update_mimoconfig_nphy(phy_info_t *pi, s32 preamble)
14942 {
14943         bool gf_preamble = false;
14944         u16 val;
14945
14946         if (preamble == WLC_N_PREAMBLE_GF) {
14947                 gf_preamble = true;
14948         }
14949
14950         val = read_phy_reg(pi, 0xed);
14951
14952         val |= RX_GF_MM_AUTO;
14953         val &= ~RX_GF_OR_MM;
14954         if (gf_preamble)
14955                 val |= RX_GF_OR_MM;
14956
14957         write_phy_reg(pi, 0xed, val);
14958 }
14959
14960 static void wlc_phy_resetcca_nphy(phy_info_t *pi)
14961 {
14962         u16 val;
14963
14964         ASSERT(0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
14965
14966         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
14967
14968         val = read_phy_reg(pi, 0x01);
14969         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
14970         OSL_DELAY(1);
14971         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
14972
14973         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
14974
14975         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
14976 }
14977
14978 void wlc_phy_pa_override_nphy(phy_info_t *pi, bool en)
14979 {
14980         u16 rfctrlintc_override_val;
14981
14982         if (!en) {
14983
14984                 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
14985                 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
14986
14987                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14988                         rfctrlintc_override_val = 0x1480;
14989                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14990                         rfctrlintc_override_val =
14991                             CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
14992                 } else {
14993                         rfctrlintc_override_val =
14994                             CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
14995                 }
14996
14997                 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
14998                 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
14999         } else {
15000
15001                 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
15002                 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
15003         }
15004
15005 }
15006
15007 void wlc_phy_stf_chain_upd_nphy(phy_info_t *pi)
15008 {
15009
15010         u16 txrx_chain =
15011             (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
15012         bool CoreActv_override = false;
15013
15014         if (pi->nphy_txrx_chain == WLC_N_TXRX_CHAIN0) {
15015                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
15016                 CoreActv_override = true;
15017
15018                 if (NREV_LE(pi->pubpi.phy_rev, 2)) {
15019                         and_phy_reg(pi, 0xa0, ~0x20);
15020                 }
15021         } else if (pi->nphy_txrx_chain == WLC_N_TXRX_CHAIN1) {
15022                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
15023                 CoreActv_override = true;
15024
15025                 if (NREV_LE(pi->pubpi.phy_rev, 2)) {
15026                         or_phy_reg(pi, 0xa0, 0x20);
15027                 }
15028         }
15029
15030         mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
15031
15032         if (CoreActv_override) {
15033
15034                 pi->nphy_perical = PHY_PERICAL_DISABLE;
15035                 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
15036         } else {
15037                 pi->nphy_perical = PHY_PERICAL_MPHASE;
15038                 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
15039         }
15040 }
15041
15042 void wlc_phy_rxcore_setstate_nphy(wlc_phy_t *pih, u8 rxcore_bitmask)
15043 {
15044         u16 regval;
15045         u16 tbl_buf[16];
15046         uint i;
15047         phy_info_t *pi = (phy_info_t *) pih;
15048         u16 tbl_opcode;
15049         bool suspend;
15050
15051         pi->sh->phyrxchain = rxcore_bitmask;
15052
15053         if (!pi->sh->clk)
15054                 return;
15055
15056         suspend =
15057             (0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
15058         if (!suspend)
15059                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
15060
15061         if (pi->phyhang_avoid)
15062                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15063
15064         regval = read_phy_reg(pi, 0xa2);
15065         regval &= ~(0xf << 4);
15066         regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
15067         write_phy_reg(pi, 0xa2, regval);
15068
15069         if ((rxcore_bitmask & 0x3) != 0x3) {
15070
15071                 write_phy_reg(pi, 0x20e, 1);
15072
15073                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15074                         if (pi->rx2tx_biasentry == -1) {
15075                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
15076                                                         ARRAY_SIZE(tbl_buf), 80,
15077                                                         16, tbl_buf);
15078
15079                                 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
15080                                         if (tbl_buf[i] ==
15081                                             NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
15082
15083                                                 pi->rx2tx_biasentry = (u8) i;
15084                                                 tbl_opcode =
15085                                                     NPHY_REV3_RFSEQ_CMD_NOP;
15086                                                 wlc_phy_table_write_nphy(pi,
15087                                                                          NPHY_TBL_ID_RFSEQ,
15088                                                                          1, i,
15089                                                                          16,
15090                                                                          &tbl_opcode);
15091                                                 break;
15092                                         } else if (tbl_buf[i] ==
15093                                                    NPHY_REV3_RFSEQ_CMD_END) {
15094                                                 break;
15095                                         }
15096                                 }
15097                         }
15098                 }
15099         } else {
15100
15101                 write_phy_reg(pi, 0x20e, 30);
15102
15103                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15104                         if (pi->rx2tx_biasentry != -1) {
15105                                 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
15106                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15107                                                          1, pi->rx2tx_biasentry,
15108                                                          16, &tbl_opcode);
15109                                 pi->rx2tx_biasentry = -1;
15110                         }
15111                 }
15112         }
15113
15114         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
15115
15116         if (pi->phyhang_avoid)
15117                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15118
15119         if (!suspend)
15120                 wlapi_enable_mac(pi->sh->physhim);
15121 }
15122
15123 u8 wlc_phy_rxcore_getstate_nphy(wlc_phy_t *pih)
15124 {
15125         u16 regval, rxen_bits;
15126         phy_info_t *pi = (phy_info_t *) pih;
15127
15128         regval = read_phy_reg(pi, 0xa2);
15129         rxen_bits = (regval >> 4) & 0xf;
15130
15131         return (u8) rxen_bits;
15132 }
15133
15134 bool wlc_phy_n_txpower_ipa_ison(phy_info_t *pi)
15135 {
15136         return PHY_IPA(pi);
15137 }
15138
15139 static void wlc_phy_txpwr_limit_to_tbl_nphy(phy_info_t *pi)
15140 {
15141         u8 idx, idx2, i, delta_ind;
15142
15143         for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++) {
15144                 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
15145         }
15146
15147         for (i = 0; i < 4; i++) {
15148                 idx2 = 0;
15149
15150                 delta_ind = 0;
15151
15152                 switch (i) {
15153                 case 0:
15154
15155                         if (CHSPEC_IS40(pi->radio_chanspec)
15156                             && NPHY_IS_SROM_REINTERPRET) {
15157                                 idx = TXP_FIRST_MCS_40_SISO;
15158                         } else {
15159                                 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15160                                     TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
15161                                 delta_ind = 1;
15162                         }
15163                         break;
15164
15165                 case 1:
15166
15167                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15168                             TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
15169                         break;
15170
15171                 case 2:
15172
15173                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15174                             TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
15175                         break;
15176
15177                 case 3:
15178
15179                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
15180                             TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
15181                         break;
15182                 }
15183
15184                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15185                     pi->tx_power_offset[idx];
15186                 idx = idx + delta_ind;
15187                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15188                     pi->tx_power_offset[idx];
15189                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15190                     pi->tx_power_offset[idx];
15191                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15192                     pi->tx_power_offset[idx++];
15193
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                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15199                     pi->tx_power_offset[idx];
15200                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15201                     pi->tx_power_offset[idx++];
15202
15203                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15204                     pi->tx_power_offset[idx++];
15205                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15206                     pi->tx_power_offset[idx];
15207                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15208                     pi->tx_power_offset[idx];
15209                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15210                     pi->tx_power_offset[idx++];
15211
15212                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15213                     pi->tx_power_offset[idx];
15214                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15215                     pi->tx_power_offset[idx++];
15216                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15217                     pi->tx_power_offset[idx];
15218                 idx = idx + 1 - delta_ind;
15219                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15220                     pi->tx_power_offset[idx];
15221
15222                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15223                     pi->tx_power_offset[idx];
15224                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15225                     pi->tx_power_offset[idx];
15226                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15227                     pi->tx_power_offset[idx];
15228                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
15229                     pi->tx_power_offset[idx];
15230         }
15231 }
15232
15233 void wlc_phy_cal_init_nphy(phy_info_t *pi)
15234 {
15235 }
15236
15237 static void wlc_phy_war_force_trsw_to_R_cliplo_nphy(phy_info_t *pi, u8 core)
15238 {
15239         if (core == PHY_CORE_0) {
15240                 write_phy_reg(pi, 0x38, 0x4);
15241                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15242                         write_phy_reg(pi, 0x37, 0x0060);
15243                 } else {
15244                         write_phy_reg(pi, 0x37, 0x1080);
15245                 }
15246         } else if (core == PHY_CORE_1) {
15247                 write_phy_reg(pi, 0x2ae, 0x4);
15248                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15249                         write_phy_reg(pi, 0x2ad, 0x0060);
15250                 } else {
15251                         write_phy_reg(pi, 0x2ad, 0x1080);
15252                 }
15253         }
15254 }
15255
15256 static void wlc_phy_war_txchain_upd_nphy(phy_info_t *pi, u8 txchain)
15257 {
15258         u8 txchain0, txchain1;
15259
15260         txchain0 = txchain & 0x1;
15261         txchain1 = (txchain & 0x2) >> 1;
15262         if (!txchain0) {
15263                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15264         }
15265
15266         if (!txchain1) {
15267                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15268         }
15269 }
15270
15271 static void wlc_phy_workarounds_nphy(phy_info_t *pi)
15272 {
15273         u8 rfseq_rx2tx_events[] = {
15274                 NPHY_RFSEQ_CMD_NOP,
15275                 NPHY_RFSEQ_CMD_RXG_FBW,
15276                 NPHY_RFSEQ_CMD_TR_SWITCH,
15277                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15278                 NPHY_RFSEQ_CMD_RXPD_TXPD,
15279                 NPHY_RFSEQ_CMD_TX_GAIN,
15280                 NPHY_RFSEQ_CMD_EXT_PA
15281         };
15282         u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
15283         u8 rfseq_tx2rx_events[] = {
15284                 NPHY_RFSEQ_CMD_NOP,
15285                 NPHY_RFSEQ_CMD_EXT_PA,
15286                 NPHY_RFSEQ_CMD_TX_GAIN,
15287                 NPHY_RFSEQ_CMD_RXPD_TXPD,
15288                 NPHY_RFSEQ_CMD_TR_SWITCH,
15289                 NPHY_RFSEQ_CMD_RXG_FBW,
15290                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
15291         };
15292         u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
15293         u8 rfseq_tx2rx_events_rev3[] = {
15294                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
15295                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15296                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15297                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15298                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15299                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15300                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15301                 NPHY_REV3_RFSEQ_CMD_END
15302         };
15303         u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
15304         u8 rfseq_rx2tx_events_rev3[] = {
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_INT_PA_PU,
15312                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
15313                 NPHY_REV3_RFSEQ_CMD_END
15314         };
15315         u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
15316
15317         u8 rfseq_rx2tx_events_rev3_ipa[] = {
15318                 NPHY_REV3_RFSEQ_CMD_NOP,
15319                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
15320                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
15321                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
15322                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
15323                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
15324                 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
15325                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
15326                 NPHY_REV3_RFSEQ_CMD_END
15327         };
15328         u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
15329         u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
15330
15331         s16 alpha0, alpha1, alpha2;
15332         s16 beta0, beta1, beta2;
15333         u32 leg_data_weights, ht_data_weights, nss1_data_weights,
15334             stbc_data_weights;
15335         u8 chan_freq_range = 0;
15336         u16 dac_control = 0x0002;
15337         u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
15338         u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
15339         u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
15340         u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
15341         u16 *aux_adc_vmid;
15342         u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
15343         u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
15344         u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
15345         u16 *aux_adc_gain;
15346         u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
15347         u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
15348         s32 min_nvar_val = 0x18d;
15349         s32 min_nvar_offset_6mbps = 20;
15350         u8 pdetrange;
15351         u8 triso;
15352         u16 regval;
15353         u16 afectrl_adc_ctrl1_rev7 = 0x20;
15354         u16 afectrl_adc_ctrl2_rev7 = 0x0;
15355         u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
15356         u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
15357         u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
15358         u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
15359         u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
15360         u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
15361         u16 ipalvlshift_3p3_war_en = 0;
15362         u16 rccal_bcap_val, rccal_scap_val;
15363         u16 rccal_tx20_11b_bcap = 0;
15364         u16 rccal_tx20_11b_scap = 0;
15365         u16 rccal_tx20_11n_bcap = 0;
15366         u16 rccal_tx20_11n_scap = 0;
15367         u16 rccal_tx40_11n_bcap = 0;
15368         u16 rccal_tx40_11n_scap = 0;
15369         u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
15370         u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
15371         u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
15372         u16 tx_lpf_bw_ofdm_20mhz = 0;
15373         u16 tx_lpf_bw_ofdm_40mhz = 0;
15374         u16 tx_lpf_bw_11b = 0;
15375         u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
15376         u16 txgm_idac_bleed = 0;
15377         bool rccal_ovrd = false;
15378         u16 freq;
15379         int coreNum;
15380
15381         if (CHSPEC_IS5G(pi->radio_chanspec)) {
15382                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
15383         } else {
15384                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
15385         }
15386
15387         if (pi->phyhang_avoid)
15388                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15389
15390         if (!ISSIM_ENAB(pi->sh->sih)) {
15391                 or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
15392         }
15393
15394         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15395
15396                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
15397                         mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
15398
15399                         mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
15400                         mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
15401                         mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
15402                         mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
15403                         mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
15404                         mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
15405                         mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
15406                         mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
15407                         mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
15408                         mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
15409                         mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
15410                         mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
15411                         mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
15412                         mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
15413                         mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
15414                         mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
15415                 }
15416
15417                 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
15418                         write_phy_reg(pi, 0x23f, 0x1b0);
15419                         write_phy_reg(pi, 0x240, 0x1b0);
15420                 }
15421
15422                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
15423                         mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
15424                 }
15425
15426                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
15427                                          &dac_control);
15428                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
15429                                          &dac_control);
15430
15431                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15432                                         1, 0, 32, &leg_data_weights);
15433                 leg_data_weights = leg_data_weights & 0xffffff;
15434                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15435                                          1, 0, 32, &leg_data_weights);
15436
15437                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15438                                          2, 0x15e, 16,
15439                                          rfseq_rx2tx_dacbufpu_rev7);
15440                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
15441                                          rfseq_rx2tx_dacbufpu_rev7);
15442
15443                 if (PHY_IPA(pi)) {
15444                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15445                                                rfseq_rx2tx_events_rev3_ipa,
15446                                                rfseq_rx2tx_dlys_rev3_ipa,
15447                                                sizeof
15448                                                (rfseq_rx2tx_events_rev3_ipa) /
15449                                                sizeof
15450                                                (rfseq_rx2tx_events_rev3_ipa
15451                                                 [0]));
15452                 }
15453
15454                 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
15455                 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
15456
15457                 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
15458                 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
15459                 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
15460
15461                 if (PHY_IPA(pi)) {
15462
15463                         if (((pi->pubpi.radiorev == 5)
15464                              && (CHSPEC_IS40(pi->radio_chanspec) == 1))
15465                             || (pi->pubpi.radiorev == 7)
15466                             || (pi->pubpi.radiorev == 8)) {
15467
15468                                 rccal_bcap_val =
15469                                     read_radio_reg(pi,
15470                                                    RADIO_2057_RCCAL_BCAP_VAL);
15471                                 rccal_scap_val =
15472                                     read_radio_reg(pi,
15473                                                    RADIO_2057_RCCAL_SCAP_VAL);
15474
15475                                 rccal_tx20_11b_bcap = rccal_bcap_val;
15476                                 rccal_tx20_11b_scap = rccal_scap_val;
15477
15478                                 if ((pi->pubpi.radiorev == 5) &&
15479                                     (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
15480
15481                                         rccal_tx20_11n_bcap = rccal_bcap_val;
15482                                         rccal_tx20_11n_scap = rccal_scap_val;
15483                                         rccal_tx40_11n_bcap = 0xc;
15484                                         rccal_tx40_11n_scap = 0xc;
15485
15486                                         rccal_ovrd = true;
15487
15488                                 } else if ((pi->pubpi.radiorev == 7)
15489                                            || (pi->pubpi.radiorev == 8)) {
15490
15491                                         tx_lpf_bw_ofdm_20mhz = 4;
15492                                         tx_lpf_bw_11b = 1;
15493
15494                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15495                                                 rccal_tx20_11n_bcap = 0xc;
15496                                                 rccal_tx20_11n_scap = 0xc;
15497                                                 rccal_tx40_11n_bcap = 0xa;
15498                                                 rccal_tx40_11n_scap = 0xa;
15499                                         } else {
15500                                                 rccal_tx20_11n_bcap = 0x14;
15501                                                 rccal_tx20_11n_scap = 0x14;
15502                                                 rccal_tx40_11n_bcap = 0xf;
15503                                                 rccal_tx40_11n_scap = 0xf;
15504                                         }
15505
15506                                         rccal_ovrd = true;
15507                                 }
15508                         }
15509
15510                 } else {
15511
15512                         if (pi->pubpi.radiorev == 5) {
15513
15514                                 tx_lpf_bw_ofdm_20mhz = 1;
15515                                 tx_lpf_bw_ofdm_40mhz = 3;
15516
15517                                 rccal_bcap_val =
15518                                     read_radio_reg(pi,
15519                                                    RADIO_2057_RCCAL_BCAP_VAL);
15520                                 rccal_scap_val =
15521                                     read_radio_reg(pi,
15522                                                    RADIO_2057_RCCAL_SCAP_VAL);
15523
15524                                 rccal_tx20_11b_bcap = rccal_bcap_val;
15525                                 rccal_tx20_11b_scap = rccal_scap_val;
15526
15527                                 rccal_tx20_11n_bcap = 0x13;
15528                                 rccal_tx20_11n_scap = 0x11;
15529                                 rccal_tx40_11n_bcap = 0x13;
15530                                 rccal_tx40_11n_scap = 0x11;
15531
15532                                 rccal_ovrd = true;
15533                         }
15534                 }
15535
15536                 if (rccal_ovrd) {
15537
15538                         rx2tx_lpf_rc_lut_tx20_11b = (rccal_tx20_11b_bcap << 8) |
15539                             (rccal_tx20_11b_scap << 3) | tx_lpf_bw_11b;
15540                         rx2tx_lpf_rc_lut_tx20_11n = (rccal_tx20_11n_bcap << 8) |
15541                             (rccal_tx20_11n_scap << 3) | tx_lpf_bw_ofdm_20mhz;
15542                         rx2tx_lpf_rc_lut_tx40_11n = (rccal_tx40_11n_bcap << 8) |
15543                             (rccal_tx40_11n_scap << 3) | tx_lpf_bw_ofdm_40mhz;
15544
15545                         for (coreNum = 0; coreNum <= 1; coreNum++) {
15546                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15547                                                          1,
15548                                                          0x152 + coreNum * 0x10,
15549                                                          16,
15550                                                          &rx2tx_lpf_rc_lut_tx20_11b);
15551                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15552                                                          1,
15553                                                          0x153 + coreNum * 0x10,
15554                                                          16,
15555                                                          &rx2tx_lpf_rc_lut_tx20_11n);
15556                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15557                                                          1,
15558                                                          0x154 + coreNum * 0x10,
15559                                                          16,
15560                                                          &rx2tx_lpf_rc_lut_tx20_11n);
15561                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15562                                                          1,
15563                                                          0x155 + coreNum * 0x10,
15564                                                          16,
15565                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15566                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15567                                                          1,
15568                                                          0x156 + coreNum * 0x10,
15569                                                          16,
15570                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15571                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15572                                                          1,
15573                                                          0x157 + coreNum * 0x10,
15574                                                          16,
15575                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15576                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15577                                                          1,
15578                                                          0x158 + coreNum * 0x10,
15579                                                          16,
15580                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15581                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15582                                                          1,
15583                                                          0x159 + coreNum * 0x10,
15584                                                          16,
15585                                                          &rx2tx_lpf_rc_lut_tx40_11n);
15586                         }
15587
15588                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4),
15589                                                           1, 0x3, 0,
15590                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
15591                 }
15592
15593                 if (!NORADIO_ENAB(pi->pubpi)) {
15594                         write_phy_reg(pi, 0x32f, 0x3);
15595                 }
15596
15597                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6)) {
15598                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
15599                                                           1, 0x3, 0,
15600                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
15601                 }
15602
15603                 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
15604                     (pi->pubpi.radiorev == 6)) {
15605                         if ((pi->sh->sromrev >= 8)
15606                             && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
15607                                 ipalvlshift_3p3_war_en = 1;
15608
15609                         if (ipalvlshift_3p3_war_en) {
15610                                 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
15611                                                 0x5);
15612                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
15613                                                 0x30);
15614                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
15615                                 or_radio_reg(pi,
15616                                              RADIO_2057_RXTXBIAS_CONFIG_CORE0,
15617                                              0x1);
15618                                 or_radio_reg(pi,
15619                                              RADIO_2057_RXTXBIAS_CONFIG_CORE1,
15620                                              0x1);
15621
15622                                 ipa2g_mainbias = 0x1f;
15623
15624                                 ipa2g_casconv = 0x6f;
15625
15626                                 ipa2g_biasfilt = 0xaa;
15627                         } else {
15628
15629                                 ipa2g_mainbias = 0x2b;
15630
15631                                 ipa2g_casconv = 0x7f;
15632
15633                                 ipa2g_biasfilt = 0xee;
15634                         }
15635
15636                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15637                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15638                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15639                                                          coreNum, IPA2G_IMAIN,
15640                                                          ipa2g_mainbias);
15641                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15642                                                          coreNum, IPA2G_CASCONV,
15643                                                          ipa2g_casconv);
15644                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15645                                                          coreNum,
15646                                                          IPA2G_BIAS_FILTER,
15647                                                          ipa2g_biasfilt);
15648                                 }
15649                         }
15650                 }
15651
15652                 if (PHY_IPA(pi)) {
15653                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
15654                                 if ((pi->pubpi.radiorev == 3)
15655                                     || (pi->pubpi.radiorev == 4)
15656                                     || (pi->pubpi.radiorev == 6)) {
15657
15658                                         txgm_idac_bleed = 0x7f;
15659                                 }
15660
15661                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15662                                         if (txgm_idac_bleed != 0)
15663                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15664                                                                  CORE, coreNum,
15665                                                                  TXGM_IDAC_BLEED,
15666                                                                  txgm_idac_bleed);
15667                                 }
15668
15669                                 if (pi->pubpi.radiorev == 5) {
15670
15671                                         for (coreNum = 0; coreNum <= 1;
15672                                              coreNum++) {
15673                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15674                                                                  CORE, coreNum,
15675                                                                  IPA2G_CASCONV,
15676                                                                  0x13);
15677                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15678                                                                  CORE, coreNum,
15679                                                                  IPA2G_IMAIN,
15680                                                                  0x1f);
15681                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15682                                                                  CORE, coreNum,
15683                                                                  IPA2G_BIAS_FILTER,
15684                                                                  0xee);
15685                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15686                                                                  CORE, coreNum,
15687                                                                  PAD2G_IDACS,
15688                                                                  0x8a);
15689                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15690                                                                  CORE, coreNum,
15691                                                                  PAD_BIAS_FILTER_BWS,
15692                                                                  0x3e);
15693                                         }
15694
15695                                 } else if ((pi->pubpi.radiorev == 7)
15696                                            || (pi->pubpi.radiorev == 8)) {
15697
15698                                         if (CHSPEC_IS40(pi->radio_chanspec) ==
15699                                             0) {
15700                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15701                                                                  CORE, 0,
15702                                                                  IPA2G_IMAIN,
15703                                                                  0x14);
15704                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15705                                                                  CORE, 1,
15706                                                                  IPA2G_IMAIN,
15707                                                                  0x12);
15708                                         } else {
15709                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15710                                                                  CORE, 0,
15711                                                                  IPA2G_IMAIN,
15712                                                                  0x16);
15713                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
15714                                                                  CORE, 1,
15715                                                                  IPA2G_IMAIN,
15716                                                                  0x16);
15717                                         }
15718                                 }
15719
15720                         } else {
15721                                 freq =
15722                                     CHAN5G_FREQ(CHSPEC_CHANNEL
15723                                                 (pi->radio_chanspec));
15724                                 if (((freq >= 5180) && (freq <= 5230))
15725                                     || ((freq >= 5745) && (freq <= 5805))) {
15726                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15727                                                          0, IPA5G_BIAS_FILTER,
15728                                                          0xff);
15729                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15730                                                          1, IPA5G_BIAS_FILTER,
15731                                                          0xff);
15732                                 }
15733                         }
15734                 } else {
15735
15736                         if (pi->pubpi.radiorev != 5) {
15737                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
15738                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15739                                                          coreNum,
15740                                                          TXMIX2G_TUNE_BOOST_PU,
15741                                                          0x61);
15742                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
15743                                                          coreNum,
15744                                                          TXGM_IDAC_BLEED, 0x70);
15745                                 }
15746                         }
15747                 }
15748
15749                 if (pi->pubpi.radiorev == 4) {
15750                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15751                                                  0x05, 16,
15752                                                  &afectrl_adc_ctrl1_rev7);
15753                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15754                                                  0x15, 16,
15755                                                  &afectrl_adc_ctrl1_rev7);
15756
15757                         for (coreNum = 0; coreNum <= 1; coreNum++) {
15758                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15759                                                  AFE_VCM_CAL_MASTER, 0x0);
15760                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15761                                                  AFE_SET_VCM_I, 0x3f);
15762                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
15763                                                  AFE_SET_VCM_Q, 0x3f);
15764                         }
15765                 } else {
15766                         mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
15767                         mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
15768                         mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
15769                         mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
15770
15771                         mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
15772                         mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
15773                         mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
15774                         mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
15775
15776                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15777                                                  0x05, 16,
15778                                                  &afectrl_adc_ctrl2_rev7);
15779                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
15780                                                  0x15, 16,
15781                                                  &afectrl_adc_ctrl2_rev7);
15782
15783                         mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
15784                         mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
15785                         mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
15786                         mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
15787                 }
15788
15789                 write_phy_reg(pi, 0x6a, 0x2);
15790
15791                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
15792                                          &min_nvar_offset_6mbps);
15793
15794                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
15795                                          &rfseq_pktgn_lpf_hpc_rev7);
15796
15797                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
15798                                          &rfseq_pktgn_lpf_h_hpc_rev7);
15799
15800                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
15801                                          &rfseq_htpktgn_lpf_hpc_rev7);
15802
15803                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
15804                                          &rfseq_cckpktgn_lpf_hpc_rev7);
15805
15806                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
15807                                          &rfseq_tx2rx_lpf_h_hpc_rev7);
15808
15809                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
15810                                          &rfseq_rx2tx_lpf_h_hpc_rev7);
15811
15812                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
15813                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15814                                                  32, &min_nvar_val);
15815                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15816                                                  127, 32, &min_nvar_val);
15817                 } else {
15818                         min_nvar_val = noise_var_tbl_rev7[3];
15819                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15820                                                  32, &min_nvar_val);
15821
15822                         min_nvar_val = noise_var_tbl_rev7[127];
15823                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15824                                                  127, 32, &min_nvar_val);
15825                 }
15826
15827                 wlc_phy_workarounds_nphy_gainctrl(pi);
15828
15829                 pdetrange =
15830                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
15831                     pdetrange : pi->srom_fem2g.pdetrange;
15832
15833                 if (pdetrange == 0) {
15834                         chan_freq_range =
15835                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
15836                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15837                                 aux_adc_vmid_rev7_core0[3] = 0x70;
15838                                 aux_adc_vmid_rev7_core1[3] = 0x70;
15839                                 aux_adc_gain_rev7[3] = 2;
15840                         } else {
15841                                 aux_adc_vmid_rev7_core0[3] = 0x80;
15842                                 aux_adc_vmid_rev7_core1[3] = 0x80;
15843                                 aux_adc_gain_rev7[3] = 3;
15844                         }
15845                 } else if (pdetrange == 1) {
15846                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15847                                 aux_adc_vmid_rev7_core0[3] = 0x7c;
15848                                 aux_adc_vmid_rev7_core1[3] = 0x7c;
15849                                 aux_adc_gain_rev7[3] = 2;
15850                         } else {
15851                                 aux_adc_vmid_rev7_core0[3] = 0x8c;
15852                                 aux_adc_vmid_rev7_core1[3] = 0x8c;
15853                                 aux_adc_gain_rev7[3] = 1;
15854                         }
15855                 } else if (pdetrange == 2) {
15856                         if (pi->pubpi.radioid == BCM2057_ID) {
15857                                 if ((pi->pubpi.radiorev == 5)
15858                                     || (pi->pubpi.radiorev == 7)
15859                                     || (pi->pubpi.radiorev == 8)) {
15860                                         if (chan_freq_range ==
15861                                             WL_CHAN_FREQ_RANGE_2G) {
15862                                                 aux_adc_vmid_rev7_core0[3] =
15863                                                     0x8c;
15864                                                 aux_adc_vmid_rev7_core1[3] =
15865                                                     0x8c;
15866                                                 aux_adc_gain_rev7[3] = 0;
15867                                         } else {
15868                                                 aux_adc_vmid_rev7_core0[3] =
15869                                                     0x96;
15870                                                 aux_adc_vmid_rev7_core1[3] =
15871                                                     0x96;
15872                                                 aux_adc_gain_rev7[3] = 0;
15873                                         }
15874                                 }
15875                         }
15876
15877                 } else if (pdetrange == 3) {
15878                         if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
15879                                 aux_adc_vmid_rev7_core0[3] = 0x89;
15880                                 aux_adc_vmid_rev7_core1[3] = 0x89;
15881                                 aux_adc_gain_rev7[3] = 0;
15882                         }
15883
15884                 } else if (pdetrange == 5) {
15885
15886                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
15887                                 aux_adc_vmid_rev7_core0[3] = 0x80;
15888                                 aux_adc_vmid_rev7_core1[3] = 0x80;
15889                                 aux_adc_gain_rev7[3] = 3;
15890                         } else {
15891                                 aux_adc_vmid_rev7_core0[3] = 0x70;
15892                                 aux_adc_vmid_rev7_core1[3] = 0x70;
15893                                 aux_adc_gain_rev7[3] = 2;
15894                         }
15895                 }
15896
15897                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
15898                                          &aux_adc_vmid_rev7_core0);
15899                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
15900                                          &aux_adc_vmid_rev7_core1);
15901                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
15902                                          &aux_adc_gain_rev7);
15903                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
15904                                          &aux_adc_gain_rev7);
15905
15906         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15907
15908                 write_phy_reg(pi, 0x23f, 0x1f8);
15909                 write_phy_reg(pi, 0x240, 0x1f8);
15910
15911                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15912                                         1, 0, 32, &leg_data_weights);
15913                 leg_data_weights = leg_data_weights & 0xffffff;
15914                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
15915                                          1, 0, 32, &leg_data_weights);
15916
15917                 alpha0 = 293;
15918                 alpha1 = 435;
15919                 alpha2 = 261;
15920                 beta0 = 366;
15921                 beta1 = 205;
15922                 beta2 = 32;
15923                 write_phy_reg(pi, 0x145, alpha0);
15924                 write_phy_reg(pi, 0x146, alpha1);
15925                 write_phy_reg(pi, 0x147, alpha2);
15926                 write_phy_reg(pi, 0x148, beta0);
15927                 write_phy_reg(pi, 0x149, beta1);
15928                 write_phy_reg(pi, 0x14a, beta2);
15929
15930                 write_phy_reg(pi, 0x38, 0xC);
15931                 write_phy_reg(pi, 0x2ae, 0xC);
15932
15933                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
15934                                        rfseq_tx2rx_events_rev3,
15935                                        rfseq_tx2rx_dlys_rev3,
15936                                        sizeof(rfseq_tx2rx_events_rev3) /
15937                                        sizeof(rfseq_tx2rx_events_rev3[0]));
15938
15939                 if (PHY_IPA(pi)) {
15940                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15941                                                rfseq_rx2tx_events_rev3_ipa,
15942                                                rfseq_rx2tx_dlys_rev3_ipa,
15943                                                sizeof
15944                                                (rfseq_rx2tx_events_rev3_ipa) /
15945                                                sizeof
15946                                                (rfseq_rx2tx_events_rev3_ipa
15947                                                 [0]));
15948                 }
15949
15950                 if ((pi->sh->hw_phyrxchain != 0x3) &&
15951                     (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
15952
15953                         if (PHY_IPA(pi)) {
15954                                 rfseq_rx2tx_dlys_rev3[5] = 59;
15955                                 rfseq_rx2tx_dlys_rev3[6] = 1;
15956                                 rfseq_rx2tx_events_rev3[7] =
15957                                     NPHY_REV3_RFSEQ_CMD_END;
15958                         }
15959
15960                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
15961                                                rfseq_rx2tx_events_rev3,
15962                                                rfseq_rx2tx_dlys_rev3,
15963                                                sizeof(rfseq_rx2tx_events_rev3) /
15964                                                sizeof(rfseq_rx2tx_events_rev3
15965                                                       [0]));
15966                 }
15967
15968                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
15969                         write_phy_reg(pi, 0x6a, 0x2);
15970                 } else {
15971                         write_phy_reg(pi, 0x6a, 0x9c40);
15972                 }
15973
15974                 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
15975
15976                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
15977                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15978                                                  32, &min_nvar_val);
15979                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15980                                                  127, 32, &min_nvar_val);
15981                 } else {
15982                         min_nvar_val = noise_var_tbl_rev3[3];
15983                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
15984                                                  32, &min_nvar_val);
15985
15986                         min_nvar_val = noise_var_tbl_rev3[127];
15987                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
15988                                                  127, 32, &min_nvar_val);
15989                 }
15990
15991                 wlc_phy_workarounds_nphy_gainctrl(pi);
15992
15993                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
15994                                          &dac_control);
15995                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
15996                                          &dac_control);
15997
15998                 pdetrange =
15999                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16000                     pdetrange : pi->srom_fem2g.pdetrange;
16001
16002                 if (pdetrange == 0) {
16003                         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16004                                 aux_adc_vmid = aux_adc_vmid_rev4;
16005                                 aux_adc_gain = aux_adc_gain_rev4;
16006                         } else {
16007                                 aux_adc_vmid = aux_adc_vmid_rev3;
16008                                 aux_adc_gain = aux_adc_gain_rev3;
16009                         }
16010                         chan_freq_range =
16011                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16012                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16013                                 switch (chan_freq_range) {
16014                                 case WL_CHAN_FREQ_RANGE_5GL:
16015                                         aux_adc_vmid[3] = 0x89;
16016                                         aux_adc_gain[3] = 0;
16017                                         break;
16018                                 case WL_CHAN_FREQ_RANGE_5GM:
16019                                         aux_adc_vmid[3] = 0x89;
16020                                         aux_adc_gain[3] = 0;
16021                                         break;
16022                                 case WL_CHAN_FREQ_RANGE_5GH:
16023                                         aux_adc_vmid[3] = 0x89;
16024                                         aux_adc_gain[3] = 0;
16025                                         break;
16026                                 default:
16027                                         break;
16028                                 }
16029                         }
16030                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16031                                                  0x08, 16, aux_adc_vmid);
16032                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16033                                                  0x18, 16, aux_adc_vmid);
16034                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16035                                                  0x0c, 16, aux_adc_gain);
16036                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16037                                                  0x1c, 16, aux_adc_gain);
16038                 } else if (pdetrange == 1) {
16039                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16040                                                  0x08, 16, sk_adc_vmid);
16041                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16042                                                  0x18, 16, sk_adc_vmid);
16043                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16044                                                  0x0c, 16, sk_adc_gain);
16045                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16046                                                  0x1c, 16, sk_adc_gain);
16047                 } else if (pdetrange == 2) {
16048
16049                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16050                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16051
16052                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16053                                 chan_freq_range =
16054                                     wlc_phy_get_chan_freq_range_nphy(pi, 0);
16055                                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16056                                         bcm_adc_vmid[3] = 0x8e;
16057                                         bcm_adc_gain[3] = 0x03;
16058                                 } else {
16059                                         bcm_adc_vmid[3] = 0x94;
16060                                         bcm_adc_gain[3] = 0x03;
16061                                 }
16062                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16063                                 bcm_adc_vmid[3] = 0x84;
16064                                 bcm_adc_gain[3] = 0x02;
16065                         }
16066
16067                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16068                                                  0x08, 16, bcm_adc_vmid);
16069                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16070                                                  0x18, 16, bcm_adc_vmid);
16071                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16072                                                  0x0c, 16, bcm_adc_gain);
16073                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16074                                                  0x1c, 16, bcm_adc_gain);
16075                 } else if (pdetrange == 3) {
16076                         chan_freq_range =
16077                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16078                         if ((NREV_GE(pi->pubpi.phy_rev, 4))
16079                             && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16080
16081                                 u16 auxadc_vmid[] = {
16082                                         0xa2, 0xb4, 0xb4, 0x270 };
16083                                 u16 auxadc_gain[] = {
16084                                         0x02, 0x02, 0x02, 0x00 };
16085
16086                                 wlc_phy_table_write_nphy(pi,
16087                                                          NPHY_TBL_ID_AFECTRL, 4,
16088                                                          0x08, 16, auxadc_vmid);
16089                                 wlc_phy_table_write_nphy(pi,
16090                                                          NPHY_TBL_ID_AFECTRL, 4,
16091                                                          0x18, 16, auxadc_vmid);
16092                                 wlc_phy_table_write_nphy(pi,
16093                                                          NPHY_TBL_ID_AFECTRL, 4,
16094                                                          0x0c, 16, auxadc_gain);
16095                                 wlc_phy_table_write_nphy(pi,
16096                                                          NPHY_TBL_ID_AFECTRL, 4,
16097                                                          0x1c, 16, auxadc_gain);
16098                         }
16099                 } else if ((pdetrange == 4) || (pdetrange == 5)) {
16100                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16101                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16102                         u16 Vmid[2], Av[2];
16103
16104                         chan_freq_range =
16105                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16106                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16107                                 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16108                                 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16109                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16110                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16111                         } else {
16112                                 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16113                                 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16114                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16115                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16116                         }
16117
16118                         bcm_adc_vmid[3] = Vmid[0];
16119                         bcm_adc_gain[3] = Av[0];
16120                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16121                                                  0x08, 16, bcm_adc_vmid);
16122                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16123                                                  0x0c, 16, bcm_adc_gain);
16124
16125                         bcm_adc_vmid[3] = Vmid[1];
16126                         bcm_adc_gain[3] = Av[1];
16127                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16128                                                  0x18, 16, bcm_adc_vmid);
16129                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16130                                                  0x1c, 16, bcm_adc_gain);
16131                 } else {
16132                         ASSERT(0);
16133                 }
16134
16135                 write_radio_reg(pi,
16136                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
16137                                 0x0);
16138                 write_radio_reg(pi,
16139                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
16140                                 0x0);
16141
16142                 write_radio_reg(pi,
16143                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
16144                                 0x6);
16145                 write_radio_reg(pi,
16146                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
16147                                 0x6);
16148
16149                 write_radio_reg(pi,
16150                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
16151                                 0x7);
16152                 write_radio_reg(pi,
16153                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
16154                                 0x7);
16155
16156                 write_radio_reg(pi,
16157                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
16158                                 0x88);
16159                 write_radio_reg(pi,
16160                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
16161                                 0x88);
16162
16163                 write_radio_reg(pi,
16164                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
16165                                 0x0);
16166                 write_radio_reg(pi,
16167                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
16168                                 0x0);
16169
16170                 write_radio_reg(pi,
16171                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
16172                                 0x0);
16173                 write_radio_reg(pi,
16174                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
16175                                 0x0);
16176
16177                 triso =
16178                     (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16179                     triso : pi->srom_fem2g.triso;
16180                 if (triso == 7) {
16181                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16182                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16183                 }
16184
16185                 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16186
16187                 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16188                      (CHSPEC_IS5G(pi->radio_chanspec))) ||
16189                     (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16190                       (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16191                      (CHSPEC_IS2G(pi->radio_chanspec)))) {
16192                         nss1_data_weights = 0x00088888;
16193                         ht_data_weights = 0x00088888;
16194                         stbc_data_weights = 0x00088888;
16195                 } else {
16196                         nss1_data_weights = 0x88888888;
16197                         ht_data_weights = 0x88888888;
16198                         stbc_data_weights = 0x88888888;
16199                 }
16200                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16201                                          1, 1, 32, &nss1_data_weights);
16202                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16203                                          1, 2, 32, &ht_data_weights);
16204                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16205                                          1, 3, 32, &stbc_data_weights);
16206
16207                 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16208                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
16209                                 write_radio_reg(pi,
16210                                                 RADIO_2056_TX_GMBB_IDAC |
16211                                                 RADIO_2056_TX0, 0x70);
16212                                 write_radio_reg(pi,
16213                                                 RADIO_2056_TX_GMBB_IDAC |
16214                                                 RADIO_2056_TX1, 0x70);
16215                         }
16216                 }
16217
16218                 if (!pi->edcrs_threshold_lock) {
16219                         write_phy_reg(pi, 0x224, 0x3eb);
16220                         write_phy_reg(pi, 0x225, 0x3eb);
16221                         write_phy_reg(pi, 0x226, 0x341);
16222                         write_phy_reg(pi, 0x227, 0x341);
16223                         write_phy_reg(pi, 0x228, 0x42b);
16224                         write_phy_reg(pi, 0x229, 0x42b);
16225                         write_phy_reg(pi, 0x22a, 0x381);
16226                         write_phy_reg(pi, 0x22b, 0x381);
16227                         write_phy_reg(pi, 0x22c, 0x42b);
16228                         write_phy_reg(pi, 0x22d, 0x42b);
16229                         write_phy_reg(pi, 0x22e, 0x381);
16230                         write_phy_reg(pi, 0x22f, 0x381);
16231                 }
16232
16233                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16234
16235                         if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK) {
16236                                 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
16237                                                MHF4_BPHY_TXCORE0,
16238                                                MHF4_BPHY_TXCORE0, WLC_BAND_ALL);
16239                         }
16240                 }
16241         } else {
16242
16243                 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
16244                     (pi->sh->boardtype == 0x8b)) {
16245                         uint i;
16246                         u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
16247                         for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
16248                                 rfseq_rx2tx_dlys[i] = war_dlys[i];
16249                 }
16250
16251                 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
16252                         and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
16253                         and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
16254                 } else {
16255                         or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
16256                         or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
16257                 }
16258
16259                 regval = 0x000a;
16260                 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
16261                 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
16262
16263                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16264                         regval = 0xcdaa;
16265                         wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
16266                         wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
16267                 }
16268
16269                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16270                         regval = 0x0000;
16271                         wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
16272                         wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
16273
16274                         regval = 0x7aab;
16275                         wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
16276                         wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
16277
16278                         regval = 0x0800;
16279                         wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
16280                         wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
16281                 }
16282
16283                 write_phy_reg(pi, 0xf8, 0x02d8);
16284                 write_phy_reg(pi, 0xf9, 0x0301);
16285                 write_phy_reg(pi, 0xfa, 0x02d8);
16286                 write_phy_reg(pi, 0xfb, 0x0301);
16287
16288                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
16289                                        rfseq_rx2tx_dlys,
16290                                        sizeof(rfseq_rx2tx_events) /
16291                                        sizeof(rfseq_rx2tx_events[0]));
16292
16293                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
16294                                        rfseq_tx2rx_dlys,
16295                                        sizeof(rfseq_tx2rx_events) /
16296                                        sizeof(rfseq_tx2rx_events[0]));
16297
16298                 wlc_phy_workarounds_nphy_gainctrl(pi);
16299
16300                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16301
16302                         if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
16303                                 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
16304                                                MHF3_NPHY_MLADV_WAR,
16305                                                MHF3_NPHY_MLADV_WAR,
16306                                                WLC_BAND_ALL);
16307
16308                 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16309                         write_phy_reg(pi, 0x1e3, 0x0);
16310                         write_phy_reg(pi, 0x1e4, 0x0);
16311                 }
16312
16313                 if (NREV_LT(pi->pubpi.phy_rev, 2))
16314                         mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
16315
16316                 alpha0 = 293;
16317                 alpha1 = 435;
16318                 alpha2 = 261;
16319                 beta0 = 366;
16320                 beta1 = 205;
16321                 beta2 = 32;
16322                 write_phy_reg(pi, 0x145, alpha0);
16323                 write_phy_reg(pi, 0x146, alpha1);
16324                 write_phy_reg(pi, 0x147, alpha2);
16325                 write_phy_reg(pi, 0x148, beta0);
16326                 write_phy_reg(pi, 0x149, beta1);
16327                 write_phy_reg(pi, 0x14a, beta2);
16328
16329                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16330                         mod_phy_reg(pi, 0x142, (0xf << 12), 0);
16331
16332                         write_phy_reg(pi, 0x192, 0xb5);
16333                         write_phy_reg(pi, 0x193, 0xa4);
16334                         write_phy_reg(pi, 0x194, 0x0);
16335                 }
16336
16337                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16338                         mod_phy_reg(pi, 0x221,
16339                                     NPHY_FORCESIG_DECODEGATEDCLKS,
16340                                     NPHY_FORCESIG_DECODEGATEDCLKS);
16341                 }
16342         }
16343
16344         if (pi->phyhang_avoid)
16345                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
16346 }
16347
16348 static void wlc_phy_workarounds_nphy_gainctrl(phy_info_t *pi)
16349 {
16350         u16 w1th, hpf_code, currband;
16351         int ctr;
16352         u8 rfseq_updategainu_events[] = {
16353                 NPHY_RFSEQ_CMD_RX_GAIN,
16354                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16355                 NPHY_RFSEQ_CMD_SET_HPF_BW
16356         };
16357         u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
16358         s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
16359         s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
16360         s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
16361         s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
16362         s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
16363         s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
16364         s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
16365         s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
16366         s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
16367         s8 *lna1_gain_db = NULL;
16368         s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
16369         s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
16370         s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
16371         s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
16372         s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
16373         s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
16374         s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
16375         s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
16376         s8 *lna2_gain_db = NULL;
16377         s8 tiaG_gain_db[] = {
16378                 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
16379         s8 tiaA_gain_db[] = {
16380                 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
16381         s8 tiaA_gain_db_rev4[] = {
16382                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16383         s8 tiaA_gain_db_rev5[] = {
16384                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16385         s8 tiaA_gain_db_rev6[] = {
16386                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
16387         s8 *tia_gain_db;
16388         s8 tiaG_gainbits[] = {
16389                 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
16390         s8 tiaA_gainbits[] = {
16391                 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
16392         s8 tiaA_gainbits_rev4[] = {
16393                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16394         s8 tiaA_gainbits_rev5[] = {
16395                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16396         s8 tiaA_gainbits_rev6[] = {
16397                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
16398         s8 *tia_gainbits;
16399         s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
16400         s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
16401         u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
16402         u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
16403         u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
16404         u16 rfseqG_init_gain_rev5_elna[] = {
16405                 0x013f, 0x013f, 0x013f, 0x013f };
16406         u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
16407         u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
16408         u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
16409         u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
16410         u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
16411         u16 rfseqA_init_gain_rev4_elna[] = {
16412                 0x314f, 0x314f, 0x314f, 0x314f };
16413         u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
16414         u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
16415         u16 *rfseq_init_gain;
16416         u16 initG_gaincode = 0x627e;
16417         u16 initG_gaincode_rev4 = 0x527e;
16418         u16 initG_gaincode_rev5 = 0x427e;
16419         u16 initG_gaincode_rev5_elna = 0x027e;
16420         u16 initG_gaincode_rev6 = 0x527e;
16421         u16 initG_gaincode_rev6_224B0 = 0x427e;
16422         u16 initG_gaincode_rev6_elna = 0x127e;
16423         u16 initA_gaincode = 0x52de;
16424         u16 initA_gaincode_rev4 = 0x629e;
16425         u16 initA_gaincode_rev4_elna = 0x329e;
16426         u16 initA_gaincode_rev5 = 0x729e;
16427         u16 initA_gaincode_rev6 = 0x729e;
16428         u16 init_gaincode;
16429         u16 clip1hiG_gaincode = 0x107e;
16430         u16 clip1hiG_gaincode_rev4 = 0x007e;
16431         u16 clip1hiG_gaincode_rev5 = 0x1076;
16432         u16 clip1hiG_gaincode_rev6 = 0x007e;
16433         u16 clip1hiA_gaincode = 0x00de;
16434         u16 clip1hiA_gaincode_rev4 = 0x029e;
16435         u16 clip1hiA_gaincode_rev5 = 0x029e;
16436         u16 clip1hiA_gaincode_rev6 = 0x029e;
16437         u16 clip1hi_gaincode;
16438         u16 clip1mdG_gaincode = 0x0066;
16439         u16 clip1mdA_gaincode = 0x00ca;
16440         u16 clip1mdA_gaincode_rev4 = 0x1084;
16441         u16 clip1mdA_gaincode_rev5 = 0x2084;
16442         u16 clip1mdA_gaincode_rev6 = 0x2084;
16443         u16 clip1md_gaincode = 0;
16444         u16 clip1loG_gaincode = 0x0074;
16445         u16 clip1loG_gaincode_rev5[] = {
16446                 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
16447         };
16448         u16 clip1loG_gaincode_rev6[] = {
16449                 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
16450         };
16451         u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
16452         u16 clip1loA_gaincode = 0x00cc;
16453         u16 clip1loA_gaincode_rev4 = 0x0086;
16454         u16 clip1loA_gaincode_rev5 = 0x2086;
16455         u16 clip1loA_gaincode_rev6 = 0x2086;
16456         u16 clip1lo_gaincode;
16457         u8 crsminG_th = 0x18;
16458         u8 crsminG_th_rev5 = 0x18;
16459         u8 crsminG_th_rev6 = 0x18;
16460         u8 crsminA_th = 0x1e;
16461         u8 crsminA_th_rev4 = 0x24;
16462         u8 crsminA_th_rev5 = 0x24;
16463         u8 crsminA_th_rev6 = 0x24;
16464         u8 crsmin_th;
16465         u8 crsminlG_th = 0x18;
16466         u8 crsminlG_th_rev5 = 0x18;
16467         u8 crsminlG_th_rev6 = 0x18;
16468         u8 crsminlA_th = 0x1e;
16469         u8 crsminlA_th_rev4 = 0x24;
16470         u8 crsminlA_th_rev5 = 0x24;
16471         u8 crsminlA_th_rev6 = 0x24;
16472         u8 crsminl_th = 0;
16473         u8 crsminuG_th = 0x18;
16474         u8 crsminuG_th_rev5 = 0x18;
16475         u8 crsminuG_th_rev6 = 0x18;
16476         u8 crsminuA_th = 0x1e;
16477         u8 crsminuA_th_rev4 = 0x24;
16478         u8 crsminuA_th_rev5 = 0x24;
16479         u8 crsminuA_th_rev6 = 0x24;
16480         u8 crsminuA_th_rev6_224B0 = 0x2d;
16481         u8 crsminu_th;
16482         u16 nbclipG_th = 0x20d;
16483         u16 nbclipG_th_rev4 = 0x1a1;
16484         u16 nbclipG_th_rev5 = 0x1d0;
16485         u16 nbclipG_th_rev6 = 0x1d0;
16486         u16 nbclipA_th = 0x1a1;
16487         u16 nbclipA_th_rev4 = 0x107;
16488         u16 nbclipA_th_rev5 = 0x0a9;
16489         u16 nbclipA_th_rev6 = 0x0f0;
16490         u16 nbclip_th = 0;
16491         u8 w1clipG_th = 5;
16492         u8 w1clipG_th_rev5 = 9;
16493         u8 w1clipG_th_rev6 = 5;
16494         u8 w1clipA_th = 25, w1clip_th;
16495         u8 rssi_gain_default = 0x50;
16496         u8 rssiG_gain_rev6_224B0 = 0x50;
16497         u8 rssiA_gain_rev5 = 0x90;
16498         u8 rssiA_gain_rev6 = 0x90;
16499         u8 rssi_gain;
16500         u16 regval[21];
16501         u8 triso;
16502
16503         triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
16504             pi->srom_fem2g.triso;
16505
16506         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16507                 if (pi->pubpi.radiorev == 5) {
16508
16509                         wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
16510                 } else if (pi->pubpi.radiorev == 7) {
16511                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16512
16513                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
16514                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
16515
16516                 } else if ((pi->pubpi.radiorev == 3)
16517                            || (pi->pubpi.radiorev == 8)) {
16518                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16519
16520                         if (pi->pubpi.radiorev == 8) {
16521                                 mod_phy_reg(pi, 0x283,
16522                                             (0xff << 0), (0x44 << 0));
16523                                 mod_phy_reg(pi, 0x280,
16524                                             (0xff << 0), (0x44 << 0));
16525                         }
16526                 } else {
16527                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
16528                 }
16529         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16530
16531                 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
16532
16533                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16534                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16535
16536                 currband =
16537                     read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
16538                 if (currband == 0) {
16539                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16540                                 if (pi->pubpi.radiorev == 11) {
16541                                         lna1_gain_db = lna1G_gain_db_rev6_224B0;
16542                                         lna2_gain_db = lna2G_gain_db_rev6_224B0;
16543                                         rfseq_init_gain =
16544                                             rfseqG_init_gain_rev6_224B0;
16545                                         init_gaincode =
16546                                             initG_gaincode_rev6_224B0;
16547                                         clip1hi_gaincode =
16548                                             clip1hiG_gaincode_rev6;
16549                                         clip1lo_gaincode =
16550                                             clip1loG_gaincode_rev6_224B0;
16551                                         nbclip_th = nbclipG_th_rev6;
16552                                         w1clip_th = w1clipG_th_rev6;
16553                                         crsmin_th = crsminG_th_rev6;
16554                                         crsminl_th = crsminlG_th_rev6;
16555                                         crsminu_th = crsminuG_th_rev6;
16556                                         rssi_gain = rssiG_gain_rev6_224B0;
16557                                 } else {
16558                                         lna1_gain_db = lna1G_gain_db_rev6;
16559                                         lna2_gain_db = lna2G_gain_db_rev6;
16560                                         if (pi->sh->boardflags & BFL_EXTLNA) {
16561
16562                                                 rfseq_init_gain =
16563                                                     rfseqG_init_gain_rev6_elna;
16564                                                 init_gaincode =
16565                                                     initG_gaincode_rev6_elna;
16566                                         } else {
16567                                                 rfseq_init_gain =
16568                                                     rfseqG_init_gain_rev6;
16569                                                 init_gaincode =
16570                                                     initG_gaincode_rev6;
16571                                         }
16572                                         clip1hi_gaincode =
16573                                             clip1hiG_gaincode_rev6;
16574                                         switch (triso) {
16575                                         case 0:
16576                                                 clip1lo_gaincode =
16577                                                     clip1loG_gaincode_rev6[0];
16578                                                 break;
16579                                         case 1:
16580                                                 clip1lo_gaincode =
16581                                                     clip1loG_gaincode_rev6[1];
16582                                                 break;
16583                                         case 2:
16584                                                 clip1lo_gaincode =
16585                                                     clip1loG_gaincode_rev6[2];
16586                                                 break;
16587                                         case 3:
16588                                         default:
16589
16590                                                 clip1lo_gaincode =
16591                                                     clip1loG_gaincode_rev6[3];
16592                                                 break;
16593                                         case 4:
16594                                                 clip1lo_gaincode =
16595                                                     clip1loG_gaincode_rev6[4];
16596                                                 break;
16597                                         case 5:
16598                                                 clip1lo_gaincode =
16599                                                     clip1loG_gaincode_rev6[5];
16600                                                 break;
16601                                         case 6:
16602                                                 clip1lo_gaincode =
16603                                                     clip1loG_gaincode_rev6[6];
16604                                                 break;
16605                                         case 7:
16606                                                 clip1lo_gaincode =
16607                                                     clip1loG_gaincode_rev6[7];
16608                                                 break;
16609                                         }
16610                                         nbclip_th = nbclipG_th_rev6;
16611                                         w1clip_th = w1clipG_th_rev6;
16612                                         crsmin_th = crsminG_th_rev6;
16613                                         crsminl_th = crsminlG_th_rev6;
16614                                         crsminu_th = crsminuG_th_rev6;
16615                                         rssi_gain = rssi_gain_default;
16616                                 }
16617                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16618                                 lna1_gain_db = lna1G_gain_db_rev5;
16619                                 lna2_gain_db = lna2G_gain_db_rev5;
16620                                 if (pi->sh->boardflags & BFL_EXTLNA) {
16621
16622                                         rfseq_init_gain =
16623                                             rfseqG_init_gain_rev5_elna;
16624                                         init_gaincode =
16625                                             initG_gaincode_rev5_elna;
16626                                 } else {
16627                                         rfseq_init_gain = rfseqG_init_gain_rev5;
16628                                         init_gaincode = initG_gaincode_rev5;
16629                                 }
16630                                 clip1hi_gaincode = clip1hiG_gaincode_rev5;
16631                                 switch (triso) {
16632                                 case 0:
16633                                         clip1lo_gaincode =
16634                                             clip1loG_gaincode_rev5[0];
16635                                         break;
16636                                 case 1:
16637                                         clip1lo_gaincode =
16638                                             clip1loG_gaincode_rev5[1];
16639                                         break;
16640                                 case 2:
16641                                         clip1lo_gaincode =
16642                                             clip1loG_gaincode_rev5[2];
16643                                         break;
16644                                 case 3:
16645
16646                                         clip1lo_gaincode =
16647                                             clip1loG_gaincode_rev5[3];
16648                                         break;
16649                                 case 4:
16650                                         clip1lo_gaincode =
16651                                             clip1loG_gaincode_rev5[4];
16652                                         break;
16653                                 case 5:
16654                                         clip1lo_gaincode =
16655                                             clip1loG_gaincode_rev5[5];
16656                                         break;
16657                                 case 6:
16658                                         clip1lo_gaincode =
16659                                             clip1loG_gaincode_rev5[6];
16660                                         break;
16661                                 case 7:
16662                                         clip1lo_gaincode =
16663                                             clip1loG_gaincode_rev5[7];
16664                                         break;
16665                                 default:
16666                                         clip1lo_gaincode =
16667                                             clip1loG_gaincode_rev5[3];
16668                                         break;
16669                                 }
16670                                 nbclip_th = nbclipG_th_rev5;
16671                                 w1clip_th = w1clipG_th_rev5;
16672                                 crsmin_th = crsminG_th_rev5;
16673                                 crsminl_th = crsminlG_th_rev5;
16674                                 crsminu_th = crsminuG_th_rev5;
16675                                 rssi_gain = rssi_gain_default;
16676                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16677                                 lna1_gain_db = lna1G_gain_db_rev4;
16678                                 lna2_gain_db = lna2G_gain_db;
16679                                 rfseq_init_gain = rfseqG_init_gain_rev4;
16680                                 init_gaincode = initG_gaincode_rev4;
16681                                 clip1hi_gaincode = clip1hiG_gaincode_rev4;
16682                                 clip1lo_gaincode = clip1loG_gaincode;
16683                                 nbclip_th = nbclipG_th_rev4;
16684                                 w1clip_th = w1clipG_th;
16685                                 crsmin_th = crsminG_th;
16686                                 crsminl_th = crsminlG_th;
16687                                 crsminu_th = crsminuG_th;
16688                                 rssi_gain = rssi_gain_default;
16689                         } else {
16690                                 lna1_gain_db = lna1G_gain_db;
16691                                 lna2_gain_db = lna2G_gain_db;
16692                                 rfseq_init_gain = rfseqG_init_gain;
16693                                 init_gaincode = initG_gaincode;
16694                                 clip1hi_gaincode = clip1hiG_gaincode;
16695                                 clip1lo_gaincode = clip1loG_gaincode;
16696                                 nbclip_th = nbclipG_th;
16697                                 w1clip_th = w1clipG_th;
16698                                 crsmin_th = crsminG_th;
16699                                 crsminl_th = crsminlG_th;
16700                                 crsminu_th = crsminuG_th;
16701                                 rssi_gain = rssi_gain_default;
16702                         }
16703                         tia_gain_db = tiaG_gain_db;
16704                         tia_gainbits = tiaG_gainbits;
16705                         clip1md_gaincode = clip1mdG_gaincode;
16706                 } else {
16707                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16708                                 lna1_gain_db = lna1A_gain_db_rev6;
16709                                 lna2_gain_db = lna2A_gain_db_rev6;
16710                                 tia_gain_db = tiaA_gain_db_rev6;
16711                                 tia_gainbits = tiaA_gainbits_rev6;
16712                                 rfseq_init_gain = rfseqA_init_gain_rev6;
16713                                 init_gaincode = initA_gaincode_rev6;
16714                                 clip1hi_gaincode = clip1hiA_gaincode_rev6;
16715                                 clip1md_gaincode = clip1mdA_gaincode_rev6;
16716                                 clip1lo_gaincode = clip1loA_gaincode_rev6;
16717                                 crsmin_th = crsminA_th_rev6;
16718                                 crsminl_th = crsminlA_th_rev6;
16719                                 if ((pi->pubpi.radiorev == 11) &&
16720                                     (CHSPEC_IS40(pi->radio_chanspec) == 0)) {
16721                                         crsminu_th = crsminuA_th_rev6_224B0;
16722                                 } else {
16723                                         crsminu_th = crsminuA_th_rev6;
16724                                 }
16725                                 nbclip_th = nbclipA_th_rev6;
16726                                 rssi_gain = rssiA_gain_rev6;
16727                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16728                                 lna1_gain_db = lna1A_gain_db_rev5;
16729                                 lna2_gain_db = lna2A_gain_db_rev5;
16730                                 tia_gain_db = tiaA_gain_db_rev5;
16731                                 tia_gainbits = tiaA_gainbits_rev5;
16732                                 rfseq_init_gain = rfseqA_init_gain_rev5;
16733                                 init_gaincode = initA_gaincode_rev5;
16734                                 clip1hi_gaincode = clip1hiA_gaincode_rev5;
16735                                 clip1md_gaincode = clip1mdA_gaincode_rev5;
16736                                 clip1lo_gaincode = clip1loA_gaincode_rev5;
16737                                 crsmin_th = crsminA_th_rev5;
16738                                 crsminl_th = crsminlA_th_rev5;
16739                                 crsminu_th = crsminuA_th_rev5;
16740                                 nbclip_th = nbclipA_th_rev5;
16741                                 rssi_gain = rssiA_gain_rev5;
16742                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16743                                 lna1_gain_db = lna1A_gain_db_rev4;
16744                                 lna2_gain_db = lna2A_gain_db_rev4;
16745                                 tia_gain_db = tiaA_gain_db_rev4;
16746                                 tia_gainbits = tiaA_gainbits_rev4;
16747                                 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
16748
16749                                         rfseq_init_gain =
16750                                             rfseqA_init_gain_rev4_elna;
16751                                         init_gaincode =
16752                                             initA_gaincode_rev4_elna;
16753                                 } else {
16754                                         rfseq_init_gain = rfseqA_init_gain_rev4;
16755                                         init_gaincode = initA_gaincode_rev4;
16756                                 }
16757                                 clip1hi_gaincode = clip1hiA_gaincode_rev4;
16758                                 clip1md_gaincode = clip1mdA_gaincode_rev4;
16759                                 clip1lo_gaincode = clip1loA_gaincode_rev4;
16760                                 crsmin_th = crsminA_th_rev4;
16761                                 crsminl_th = crsminlA_th_rev4;
16762                                 crsminu_th = crsminuA_th_rev4;
16763                                 nbclip_th = nbclipA_th_rev4;
16764                                 rssi_gain = rssi_gain_default;
16765                         } else {
16766                                 lna1_gain_db = lna1A_gain_db;
16767                                 lna2_gain_db = lna2A_gain_db;
16768                                 tia_gain_db = tiaA_gain_db;
16769                                 tia_gainbits = tiaA_gainbits;
16770                                 rfseq_init_gain = rfseqA_init_gain;
16771                                 init_gaincode = initA_gaincode;
16772                                 clip1hi_gaincode = clip1hiA_gaincode;
16773                                 clip1md_gaincode = clip1mdA_gaincode;
16774                                 clip1lo_gaincode = clip1loA_gaincode;
16775                                 crsmin_th = crsminA_th;
16776                                 crsminl_th = crsminlA_th;
16777                                 crsminu_th = crsminuA_th;
16778                                 nbclip_th = nbclipA_th;
16779                                 rssi_gain = rssi_gain_default;
16780                         }
16781                         w1clip_th = w1clipA_th;
16782                 }
16783
16784                 write_radio_reg(pi,
16785                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16786                                  RADIO_2056_RX0), 0x17);
16787                 write_radio_reg(pi,
16788                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16789                                  RADIO_2056_RX1), 0x17);
16790
16791                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
16792                                 0xf0);
16793                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
16794                                 0xf0);
16795
16796                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
16797                                 0x0);
16798                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
16799                                 0x0);
16800
16801                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
16802                                 rssi_gain);
16803                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
16804                                 rssi_gain);
16805
16806                 write_radio_reg(pi,
16807                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16808                                  RADIO_2056_RX0), 0x17);
16809                 write_radio_reg(pi,
16810                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16811                                  RADIO_2056_RX1), 0x17);
16812
16813                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
16814                                 0xFF);
16815                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
16816                                 0xFF);
16817
16818                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
16819                                          8, lna1_gain_db);
16820                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
16821                                          8, lna1_gain_db);
16822
16823                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
16824                                          8, lna2_gain_db);
16825                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
16826                                          8, lna2_gain_db);
16827
16828                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
16829                                          8, tia_gain_db);
16830                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
16831                                          8, tia_gain_db);
16832
16833                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
16834                                          8, tia_gainbits);
16835                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
16836                                          8, tia_gainbits);
16837
16838                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
16839                                          8, &lpf_gain_db);
16840                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
16841                                          8, &lpf_gain_db);
16842                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
16843                                          8, &lpf_gainbits);
16844                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
16845                                          8, &lpf_gainbits);
16846
16847                 write_phy_reg(pi, 0x20, init_gaincode);
16848                 write_phy_reg(pi, 0x2a7, init_gaincode);
16849
16850                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16851                                          pi->pubpi.phy_corenum, 0x106, 16,
16852                                          rfseq_init_gain);
16853
16854                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
16855                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
16856
16857                 write_phy_reg(pi, 0x24, clip1md_gaincode);
16858                 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
16859
16860                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
16861                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
16862
16863                 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
16864                 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
16865                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
16866
16867                 write_phy_reg(pi, 0x2b, nbclip_th);
16868                 write_phy_reg(pi, 0x41, nbclip_th);
16869
16870                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
16871                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
16872
16873                 write_phy_reg(pi, 0x150, 0x809c);
16874
16875         } else {
16876
16877                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16878                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16879
16880                 write_phy_reg(pi, 0x2b, 0x84);
16881                 write_phy_reg(pi, 0x41, 0x84);
16882
16883                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16884                         write_phy_reg(pi, 0x6b, 0x2b);
16885                         write_phy_reg(pi, 0x6c, 0x2b);
16886                         write_phy_reg(pi, 0x6d, 0x9);
16887                         write_phy_reg(pi, 0x6e, 0x9);
16888                 }
16889
16890                 w1th = NPHY_RSSICAL_W1_TARGET - 4;
16891                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
16892                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
16893
16894                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16895                         mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
16896                         mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16897
16898                         mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16899                         mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16900                 }
16901
16902                 write_phy_reg(pi, 0x150, 0x809c);
16903
16904                 if (pi->nphy_gain_boost)
16905                         if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16906                             (CHSPEC_IS40(pi->radio_chanspec)))
16907                                 hpf_code = 4;
16908                         else
16909                                 hpf_code = 5;
16910                 else if (CHSPEC_IS40(pi->radio_chanspec))
16911                         hpf_code = 6;
16912                 else
16913                         hpf_code = 7;
16914
16915                 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16916                 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16917
16918                 for (ctr = 0; ctr < 4; ctr++) {
16919                         regval[ctr] = (hpf_code << 8) | 0x7c;
16920                 }
16921                 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16922
16923                 wlc_phy_adjust_lnagaintbl_nphy(pi);
16924
16925                 if (pi->nphy_elna_gain_config) {
16926                         regval[0] = 0;
16927                         regval[1] = 1;
16928                         regval[2] = 1;
16929                         regval[3] = 1;
16930                         wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16931                         wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16932
16933                         for (ctr = 0; ctr < 4; ctr++) {
16934                                 regval[ctr] = (hpf_code << 8) | 0x74;
16935                         }
16936                         wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16937                 }
16938
16939                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16940                         for (ctr = 0; ctr < 21; ctr++) {
16941                                 regval[ctr] = 3 * ctr;
16942                         }
16943                         wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16944                         wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16945
16946                         for (ctr = 0; ctr < 21; ctr++) {
16947                                 regval[ctr] = (u16) ctr;
16948                         }
16949                         wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16950                         wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16951                 }
16952
16953                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16954                                        rfseq_updategainu_events,
16955                                        rfseq_updategainu_dlys,
16956                                        sizeof(rfseq_updategainu_events) /
16957                                        sizeof(rfseq_updategainu_events[0]));
16958
16959                 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16960
16961                 if (CHSPEC_IS2G(pi->radio_chanspec))
16962                         mod_phy_reg(pi,
16963                                     (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16964                                     0x7f, 0x4);
16965         }
16966 }
16967
16968 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(phy_info_t *pi)
16969 {
16970         s8 lna1_gain_db[] = { 8, 13, 17, 22 };
16971         s8 lna2_gain_db[] = { -2, 7, 11, 15 };
16972         s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
16973         s8 tia_gainbits[] = {
16974                 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
16975
16976         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16977         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16978
16979         mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
16980
16981         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
16982         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
16983
16984         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
16985                                  lna1_gain_db);
16986         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
16987                                  lna1_gain_db);
16988
16989         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
16990                                  lna2_gain_db);
16991         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
16992                                  lna2_gain_db);
16993
16994         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
16995                                  tia_gain_db);
16996         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
16997                                  tia_gain_db);
16998
16999         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
17000                                  tia_gainbits);
17001         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
17002                                  tia_gainbits);
17003
17004         write_phy_reg(pi, 0x37, 0x74);
17005         write_phy_reg(pi, 0x2ad, 0x74);
17006         write_phy_reg(pi, 0x38, 0x18);
17007         write_phy_reg(pi, 0x2ae, 0x18);
17008
17009         write_phy_reg(pi, 0x2b, 0xe8);
17010         write_phy_reg(pi, 0x41, 0xe8);
17011
17012         if (CHSPEC_IS20(pi->radio_chanspec)) {
17013
17014                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
17015                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
17016         } else {
17017
17018                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
17019                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
17020         }
17021 }
17022
17023 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(phy_info_t *pi)
17024 {
17025         u16 currband;
17026         s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
17027         s8 *lna1_gain_db = NULL;
17028         s8 *lna1_gain_db_2 = NULL;
17029         s8 *lna2_gain_db = NULL;
17030         s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
17031         s8 *tia_gain_db;
17032         s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
17033         s8 *tia_gainbits;
17034         u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
17035         u16 *rfseq_init_gain;
17036         u16 init_gaincode;
17037         u16 clip1hi_gaincode;
17038         u16 clip1md_gaincode = 0;
17039         u16 clip1md_gaincode_B;
17040         u16 clip1lo_gaincode;
17041         u16 clip1lo_gaincode_B;
17042         u8 crsminl_th = 0;
17043         u8 crsminu_th;
17044         u16 nbclip_th = 0;
17045         u8 w1clip_th;
17046         u16 freq;
17047         s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
17048         u8 chg_nbclip_th = 0;
17049
17050         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
17051         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
17052
17053         currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
17054         if (currband == 0) {
17055
17056                 lna1_gain_db = lna1G_gain_db_rev7;
17057
17058                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
17059                                          lna1_gain_db);
17060                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
17061                                          lna1_gain_db);
17062
17063                 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
17064
17065                 if (CHSPEC_IS40(pi->radio_chanspec)) {
17066                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
17067                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
17068                 }
17069
17070                 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
17071
17072                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17073                         mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
17074                         mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
17075                 }
17076         } else {
17077
17078                 init_gaincode = 0x9e;
17079                 clip1hi_gaincode = 0x9e;
17080                 clip1md_gaincode_B = 0x24;
17081                 clip1lo_gaincode = 0x8a;
17082                 clip1lo_gaincode_B = 8;
17083                 rfseq_init_gain = rfseqA_init_gain_rev7;
17084
17085                 tia_gain_db = tiaA_gain_db_rev7;
17086                 tia_gainbits = tiaA_gainbits_rev7;
17087
17088                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
17089                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17090
17091                         w1clip_th = 25;
17092                         clip1md_gaincode = 0x82;
17093
17094                         if ((freq <= 5080) || (freq == 5825)) {
17095
17096                                 s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
17097                                 s8 lna1A_gain_db_2_rev7[] = {
17098                                         11, 17, 22, 25 };
17099                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
17100
17101                                 crsminu_th = 0x3e;
17102                                 lna1_gain_db = lna1A_gain_db_rev7;
17103                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17104                                 lna2_gain_db = lna2A_gain_db_rev7;
17105                         } else if ((freq >= 5500) && (freq <= 5700)) {
17106
17107                                 s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
17108                                 s8 lna1A_gain_db_2_rev7[] = {
17109                                         12, 18, 22, 26 };
17110                                 s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
17111
17112                                 crsminu_th = 0x45;
17113                                 clip1md_gaincode_B = 0x14;
17114                                 nbclip_th = 0xff;
17115                                 chg_nbclip_th = 1;
17116                                 lna1_gain_db = lna1A_gain_db_rev7;
17117                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17118                                 lna2_gain_db = lna2A_gain_db_rev7;
17119                         } else {
17120
17121                                 s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
17122                                 s8 lna1A_gain_db_2_rev7[] = {
17123                                         12, 18, 22, 26 };
17124                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
17125
17126                                 crsminu_th = 0x41;
17127                                 lna1_gain_db = lna1A_gain_db_rev7;
17128                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
17129                                 lna2_gain_db = lna2A_gain_db_rev7;
17130                         }
17131
17132                         if (freq <= 4920) {
17133                                 nvar_baseline_offset0 = 5;
17134                                 nvar_baseline_offset1 = 5;
17135                         } else if ((freq > 4920) && (freq <= 5320)) {
17136                                 nvar_baseline_offset0 = 3;
17137                                 nvar_baseline_offset1 = 5;
17138                         } else if ((freq > 5320) && (freq <= 5700)) {
17139                                 nvar_baseline_offset0 = 3;
17140                                 nvar_baseline_offset1 = 2;
17141                         } else {
17142                                 nvar_baseline_offset0 = 4;
17143                                 nvar_baseline_offset1 = 0;
17144                         }
17145                 } else {
17146
17147                         crsminu_th = 0x3a;
17148                         crsminl_th = 0x3a;
17149                         w1clip_th = 20;
17150
17151                         if ((freq >= 4920) && (freq <= 5320)) {
17152                                 nvar_baseline_offset0 = 4;
17153                                 nvar_baseline_offset1 = 5;
17154                         } else if ((freq > 5320) && (freq <= 5550)) {
17155                                 nvar_baseline_offset0 = 4;
17156                                 nvar_baseline_offset1 = 2;
17157                         } else {
17158                                 nvar_baseline_offset0 = 5;
17159                                 nvar_baseline_offset1 = 3;
17160                         }
17161                 }
17162
17163                 write_phy_reg(pi, 0x20, init_gaincode);
17164                 write_phy_reg(pi, 0x2a7, init_gaincode);
17165
17166                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
17167                                          pi->pubpi.phy_corenum, 0x106, 16,
17168                                          rfseq_init_gain);
17169
17170                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
17171                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
17172
17173                 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
17174                 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
17175
17176                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
17177                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
17178                 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
17179                 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
17180
17181                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
17182                                          tia_gain_db);
17183                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
17184                                          tia_gain_db);
17185
17186                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
17187                                          tia_gainbits);
17188                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
17189                                          tia_gainbits);
17190
17191                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
17192
17193                 if (chg_nbclip_th == 1) {
17194                         write_phy_reg(pi, 0x2b, nbclip_th);
17195                         write_phy_reg(pi, 0x41, nbclip_th);
17196                 }
17197
17198                 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
17199                 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
17200
17201                 mod_phy_reg(pi, 0x2e4,
17202                             (0x3f << 0), (nvar_baseline_offset0 << 0));
17203
17204                 mod_phy_reg(pi, 0x2e4,
17205                             (0x3f << 6), (nvar_baseline_offset1 << 6));
17206
17207                 if (CHSPEC_IS20(pi->radio_chanspec)) {
17208
17209                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
17210                                                  lna1_gain_db);
17211                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
17212                                                  lna1_gain_db_2);
17213
17214                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
17215                                                  8, lna2_gain_db);
17216                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
17217                                                  8, lna2_gain_db);
17218
17219                         write_phy_reg(pi, 0x24, clip1md_gaincode);
17220                         write_phy_reg(pi, 0x2ab, clip1md_gaincode);
17221                 } else {
17222                         mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
17223                 }
17224
17225         }
17226
17227 }
17228
17229 static void wlc_phy_adjust_lnagaintbl_nphy(phy_info_t *pi)
17230 {
17231         uint core;
17232         int ctr;
17233         s16 gain_delta[2];
17234         u8 curr_channel;
17235         u16 minmax_gain[2];
17236         u16 regval[4];
17237
17238         if (pi->phyhang_avoid)
17239                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17240
17241         if (pi->nphy_gain_boost) {
17242                 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
17243
17244                         gain_delta[0] = 6;
17245                         gain_delta[1] = 6;
17246                 } else {
17247
17248                         curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
17249                         gain_delta[0] =
17250                             (s16)
17251                             PHY_HW_ROUND(((nphy_lnagain_est0[0] *
17252                                            curr_channel) +
17253                                           nphy_lnagain_est0[1]), 13);
17254                         gain_delta[1] =
17255                             (s16)
17256                             PHY_HW_ROUND(((nphy_lnagain_est1[0] *
17257                                            curr_channel) +
17258                                           nphy_lnagain_est1[1]), 13);
17259                 }
17260         } else {
17261
17262                 gain_delta[0] = 0;
17263                 gain_delta[1] = 0;
17264         }
17265
17266         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17267                 if (pi->nphy_elna_gain_config) {
17268
17269                         regval[0] = nphy_def_lnagains[2] + gain_delta[core];
17270                         regval[1] = nphy_def_lnagains[3] + gain_delta[core];
17271                         regval[2] = nphy_def_lnagains[3] + gain_delta[core];
17272                         regval[3] = nphy_def_lnagains[3] + gain_delta[core];
17273                 } else {
17274                         for (ctr = 0; ctr < 4; ctr++) {
17275                                 regval[ctr] =
17276                                     nphy_def_lnagains[ctr] + gain_delta[core];
17277                         }
17278                 }
17279                 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
17280
17281                 minmax_gain[core] =
17282                     (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
17283         }
17284
17285         mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
17286         mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
17287
17288         if (pi->phyhang_avoid)
17289                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17290 }
17291
17292 void wlc_phy_switch_radio_nphy(phy_info_t *pi, bool on)
17293 {
17294         if (on) {
17295                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17296                         if (!pi->radio_is_on) {
17297                                 wlc_phy_radio_preinit_205x(pi);
17298                                 wlc_phy_radio_init_2057(pi);
17299                                 wlc_phy_radio_postinit_2057(pi);
17300                         }
17301
17302                         wlc_phy_chanspec_set((wlc_phy_t *) pi,
17303                                              pi->radio_chanspec);
17304                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17305                         wlc_phy_radio_preinit_205x(pi);
17306                         wlc_phy_radio_init_2056(pi);
17307                         wlc_phy_radio_postinit_2056(pi);
17308
17309                         wlc_phy_chanspec_set((wlc_phy_t *) pi,
17310                                              pi->radio_chanspec);
17311                 } else {
17312                         wlc_phy_radio_preinit_2055(pi);
17313                         wlc_phy_radio_init_2055(pi);
17314                         wlc_phy_radio_postinit_2055(pi);
17315                 }
17316
17317                 pi->radio_is_on = true;
17318
17319         } else {
17320
17321                 if (NREV_GE(pi->pubpi.phy_rev, 3)
17322                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
17323                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17324                         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
17325
17326                         write_radio_reg(pi,
17327                                         RADIO_2056_TX_PADA_BOOST_TUNE |
17328                                         RADIO_2056_TX0, 0);
17329                         write_radio_reg(pi,
17330                                         RADIO_2056_TX_PADG_BOOST_TUNE |
17331                                         RADIO_2056_TX0, 0);
17332                         write_radio_reg(pi,
17333                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
17334                                         RADIO_2056_TX0, 0);
17335                         write_radio_reg(pi,
17336                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
17337                                         RADIO_2056_TX0, 0);
17338                         mod_radio_reg(pi,
17339                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
17340                                       RADIO_2056_TX0, 0xf0, 0);
17341                         write_radio_reg(pi,
17342                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
17343                                         RADIO_2056_TX0, 0);
17344
17345                         write_radio_reg(pi,
17346                                         RADIO_2056_TX_PADA_BOOST_TUNE |
17347                                         RADIO_2056_TX1, 0);
17348                         write_radio_reg(pi,
17349                                         RADIO_2056_TX_PADG_BOOST_TUNE |
17350                                         RADIO_2056_TX1, 0);
17351                         write_radio_reg(pi,
17352                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
17353                                         RADIO_2056_TX1, 0);
17354                         write_radio_reg(pi,
17355                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
17356                                         RADIO_2056_TX1, 0);
17357                         mod_radio_reg(pi,
17358                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
17359                                       RADIO_2056_TX1, 0xf0, 0);
17360                         write_radio_reg(pi,
17361                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
17362                                         RADIO_2056_TX1, 0);
17363
17364                         pi->radio_is_on = false;
17365                 }
17366
17367                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
17368                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17369                         pi->radio_is_on = false;
17370                 }
17371
17372         }
17373 }
17374
17375 static void wlc_phy_radio_preinit_2055(phy_info_t *pi)
17376 {
17377
17378         and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
17379         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
17380
17381         or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
17382 }
17383
17384 static void wlc_phy_radio_init_2055(phy_info_t *pi)
17385 {
17386         wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
17387 }
17388
17389 static void wlc_phy_radio_postinit_2055(phy_info_t *pi)
17390 {
17391
17392         and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
17393                       ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
17394
17395         if (((pi->sh->sromrev >= 4)
17396              && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
17397             || ((pi->sh->sromrev < 4))) {
17398                 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
17399                 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
17400         }
17401
17402         mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
17403         write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
17404
17405         and_radio_reg(pi, RADIO_2055_CAL_MISC,
17406                       ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
17407
17408         or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
17409
17410         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
17411
17412         OSL_DELAY(1000);
17413
17414         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
17415
17416         SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
17417                    RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
17418
17419         ASSERT((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
17420                 RADIO_2055_RCAL_DONE) == RADIO_2055_RCAL_DONE);
17421
17422         and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
17423                       ~(RADIO_2055_CAL_LPO_ENABLE));
17424
17425         wlc_phy_chanspec_set((wlc_phy_t *) pi, pi->radio_chanspec);
17426
17427         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
17428         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
17429
17430         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
17431         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
17432
17433         mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
17434                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
17435         mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
17436                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
17437         if (pi->nphy_gain_boost) {
17438                 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
17439                               ~(RADIO_2055_GAINBST_DISABLE));
17440                 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
17441                               ~(RADIO_2055_GAINBST_DISABLE));
17442         } else {
17443                 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
17444                              RADIO_2055_GAINBST_DISABLE);
17445                 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
17446                              RADIO_2055_GAINBST_DISABLE);
17447         }
17448
17449         OSL_DELAY(2);
17450 }
17451
17452 static void wlc_phy_radio_preinit_205x(phy_info_t *pi)
17453 {
17454
17455         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
17456         and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
17457
17458         or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
17459         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
17460
17461 }
17462
17463 static void wlc_phy_radio_init_2056(phy_info_t *pi)
17464 {
17465         radio_regs_t *regs_SYN_2056_ptr = NULL;
17466         radio_regs_t *regs_TX_2056_ptr = NULL;
17467         radio_regs_t *regs_RX_2056_ptr = NULL;
17468
17469         if (NREV_IS(pi->pubpi.phy_rev, 3)) {
17470                 regs_SYN_2056_ptr = regs_SYN_2056;
17471                 regs_TX_2056_ptr = regs_TX_2056;
17472                 regs_RX_2056_ptr = regs_RX_2056;
17473         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17474                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
17475                 regs_TX_2056_ptr = regs_TX_2056_A1;
17476                 regs_RX_2056_ptr = regs_RX_2056_A1;
17477         } else {
17478                 switch (pi->pubpi.radiorev) {
17479                 case 5:
17480                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
17481                         regs_TX_2056_ptr = regs_TX_2056_rev5;
17482                         regs_RX_2056_ptr = regs_RX_2056_rev5;
17483                         break;
17484
17485                 case 6:
17486                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
17487                         regs_TX_2056_ptr = regs_TX_2056_rev6;
17488                         regs_RX_2056_ptr = regs_RX_2056_rev6;
17489                         break;
17490
17491                 case 7:
17492                 case 9:
17493                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
17494                         regs_TX_2056_ptr = regs_TX_2056_rev7;
17495                         regs_RX_2056_ptr = regs_RX_2056_rev7;
17496                         break;
17497
17498                 case 8:
17499                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
17500                         regs_TX_2056_ptr = regs_TX_2056_rev8;
17501                         regs_RX_2056_ptr = regs_RX_2056_rev8;
17502                         break;
17503
17504                 case 11:
17505                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
17506                         regs_TX_2056_ptr = regs_TX_2056_rev11;
17507                         regs_RX_2056_ptr = regs_RX_2056_rev11;
17508                         break;
17509
17510                 default:
17511                         ASSERT(0);
17512                         break;
17513                 }
17514         }
17515
17516         wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
17517
17518         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
17519
17520         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
17521
17522         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
17523
17524         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
17525 }
17526
17527 static void wlc_phy_radio_postinit_2056(phy_info_t *pi)
17528 {
17529         mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
17530
17531         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
17532         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
17533         OSL_DELAY(1000);
17534         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
17535
17536         if ((pi->sh->boardflags2 & BFL2_LEGACY)
17537             || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN)) {
17538
17539                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
17540         } else {
17541
17542                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
17543         }
17544
17545         mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
17546
17547         if (pi->phy_init_por) {
17548                 wlc_phy_radio205x_rcal(pi);
17549         }
17550 }
17551
17552 static void wlc_phy_radio_init_2057(phy_info_t *pi)
17553 {
17554         radio_20xx_regs_t *regs_2057_ptr = NULL;
17555
17556         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
17557
17558                 regs_2057_ptr = regs_2057_rev4;
17559         } else if (NREV_IS(pi->pubpi.phy_rev, 8)
17560                    || NREV_IS(pi->pubpi.phy_rev, 9)) {
17561                 switch (pi->pubpi.radiorev) {
17562                 case 5:
17563
17564                         if (pi->pubpi.radiover == 0x0) {
17565
17566                                 regs_2057_ptr = regs_2057_rev5;
17567
17568                         } else if (pi->pubpi.radiover == 0x1) {
17569
17570                                 regs_2057_ptr = regs_2057_rev5v1;
17571                         } else {
17572                                 ASSERT(0);
17573                                 break;
17574                         }
17575
17576                 case 7:
17577
17578                         regs_2057_ptr = regs_2057_rev7;
17579                         break;
17580
17581                 case 8:
17582
17583                         regs_2057_ptr = regs_2057_rev8;
17584                         break;
17585
17586                 default:
17587                         ASSERT(0);
17588                         break;
17589                 }
17590         } else {
17591                 ASSERT(0);
17592         }
17593
17594         wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
17595 }
17596
17597 static void wlc_phy_radio_postinit_2057(phy_info_t *pi)
17598 {
17599
17600         mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
17601
17602         if (CHIPID(pi->sh->chip) == !BCM6362_CHIP_ID) {
17603
17604                 mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x2, 0x2);
17605         }
17606
17607         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
17608         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
17609         OSL_DELAY(2000);
17610         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
17611         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
17612
17613         if (pi->phy_init_por) {
17614                 wlc_phy_radio205x_rcal(pi);
17615                 wlc_phy_radio2057_rccal(pi);
17616         }
17617
17618         mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
17619 }
17620
17621 static bool
17622 wlc_phy_chan2freq_nphy(phy_info_t *pi, uint channel, int *f,
17623                        chan_info_nphy_radio2057_t **t0,
17624                        chan_info_nphy_radio205x_t **t1,
17625                        chan_info_nphy_radio2057_rev5_t **t2,
17626                        chan_info_nphy_2055_t **t3)
17627 {
17628         uint i;
17629         chan_info_nphy_radio2057_t *chan_info_tbl_p_0 = NULL;
17630         chan_info_nphy_radio205x_t *chan_info_tbl_p_1 = NULL;
17631         chan_info_nphy_radio2057_rev5_t *chan_info_tbl_p_2 = NULL;
17632         u32 tbl_len = 0;
17633
17634         int freq = 0;
17635
17636         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17637
17638                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
17639
17640                         chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
17641                         tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
17642
17643                 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
17644                            || NREV_IS(pi->pubpi.phy_rev, 9)) {
17645                         switch (pi->pubpi.radiorev) {
17646
17647                         case 5:
17648
17649                                 if (pi->pubpi.radiover == 0x0) {
17650
17651                                         chan_info_tbl_p_2 =
17652                                             chan_info_nphyrev8_2057_rev5;
17653                                         tbl_len =
17654                                             ARRAY_SIZE
17655                                             (chan_info_nphyrev8_2057_rev5);
17656
17657                                 } else if (pi->pubpi.radiover == 0x1) {
17658
17659                                         chan_info_tbl_p_2 =
17660                                             chan_info_nphyrev9_2057_rev5v1;
17661                                         tbl_len =
17662                                             ARRAY_SIZE
17663                                             (chan_info_nphyrev9_2057_rev5v1);
17664
17665                                 }
17666                                 break;
17667
17668                         case 7:
17669                                 chan_info_tbl_p_0 =
17670                                     chan_info_nphyrev8_2057_rev7;
17671                                 tbl_len =
17672                                     ARRAY_SIZE(chan_info_nphyrev8_2057_rev7);
17673                                 break;
17674
17675                         case 8:
17676                                 chan_info_tbl_p_0 =
17677                                     chan_info_nphyrev8_2057_rev8;
17678                                 tbl_len =
17679                                     ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
17680                                 break;
17681
17682                         default:
17683                                 if (NORADIO_ENAB(pi->pubpi)) {
17684                                         goto fail;
17685                                 }
17686                                 break;
17687                         }
17688                 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
17689
17690                         chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
17691                         tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
17692                 } else {
17693                         goto fail;
17694                 }
17695
17696                 for (i = 0; i < tbl_len; i++) {
17697                         if (pi->pubpi.radiorev == 5) {
17698
17699                                 if (chan_info_tbl_p_2[i].chan == channel)
17700                                         break;
17701                         } else {
17702
17703                                 if (chan_info_tbl_p_0[i].chan == channel)
17704                                         break;
17705                         }
17706                 }
17707
17708                 if (i >= tbl_len) {
17709                         ASSERT(i < tbl_len);
17710                         goto fail;
17711                 }
17712                 if (pi->pubpi.radiorev == 5) {
17713                         *t2 = &chan_info_tbl_p_2[i];
17714                         freq = chan_info_tbl_p_2[i].freq;
17715                 } else {
17716                         *t0 = &chan_info_tbl_p_0[i];
17717                         freq = chan_info_tbl_p_0[i].freq;
17718                 }
17719
17720         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17721                 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
17722                         chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
17723                         tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
17724                 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17725                         chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
17726                         tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
17727                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
17728                            || NREV_IS(pi->pubpi.phy_rev, 6)) {
17729                         switch (pi->pubpi.radiorev) {
17730                         case 5:
17731                                 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
17732                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
17733                                 break;
17734                         case 6:
17735                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
17736                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
17737                                 break;
17738                         case 7:
17739                         case 9:
17740                                 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
17741                                 tbl_len =
17742                                     ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
17743                                 break;
17744                         case 8:
17745                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
17746                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
17747                                 break;
17748                         case 11:
17749                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
17750                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v11);
17751                                 break;
17752                         default:
17753                                 if (NORADIO_ENAB(pi->pubpi)) {
17754                                         goto fail;
17755                                 }
17756                                 break;
17757                         }
17758                 }
17759
17760                 for (i = 0; i < tbl_len; i++) {
17761                         if (chan_info_tbl_p_1[i].chan == channel)
17762                                 break;
17763                 }
17764
17765                 if (i >= tbl_len) {
17766                         ASSERT(i < tbl_len);
17767                         goto fail;
17768                 }
17769                 *t1 = &chan_info_tbl_p_1[i];
17770                 freq = chan_info_tbl_p_1[i].freq;
17771
17772         } else {
17773                 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
17774                         if (chan_info_nphy_2055[i].chan == channel)
17775                                 break;
17776
17777                 if (i >= ARRAY_SIZE(chan_info_nphy_2055)) {
17778                         ASSERT(i < ARRAY_SIZE(chan_info_nphy_2055));
17779                         goto fail;
17780                 }
17781                 *t3 = &chan_info_nphy_2055[i];
17782                 freq = chan_info_nphy_2055[i].freq;
17783         }
17784
17785         *f = freq;
17786         return true;
17787
17788  fail:
17789         *f = WL_CHAN_FREQ_RANGE_2G;
17790         return false;
17791 }
17792
17793 u8 wlc_phy_get_chan_freq_range_nphy(phy_info_t *pi, uint channel)
17794 {
17795         int freq;
17796         chan_info_nphy_radio2057_t *t0 = NULL;
17797         chan_info_nphy_radio205x_t *t1 = NULL;
17798         chan_info_nphy_radio2057_rev5_t *t2 = NULL;
17799         chan_info_nphy_2055_t *t3 = NULL;
17800
17801         if (NORADIO_ENAB(pi->pubpi))
17802                 return WL_CHAN_FREQ_RANGE_2G;
17803
17804         if (channel == 0)
17805                 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
17806
17807         wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
17808
17809         if (CHSPEC_IS2G(pi->radio_chanspec))
17810                 return WL_CHAN_FREQ_RANGE_2G;
17811
17812         if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN)) {
17813                 return WL_CHAN_FREQ_RANGE_5GL;
17814         } else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN)) {
17815                 return WL_CHAN_FREQ_RANGE_5GM;
17816         } else {
17817                 return WL_CHAN_FREQ_RANGE_5GH;
17818         }
17819 }
17820
17821 static void
17822 wlc_phy_chanspec_radio2055_setup(phy_info_t *pi, chan_info_nphy_2055_t *ci)
17823 {
17824
17825         write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
17826         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
17827         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
17828         write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
17829
17830         WLC_PHY_WAR_PR51571(pi);
17831
17832         write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
17833         write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
17834         write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
17835         write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
17836
17837         WLC_PHY_WAR_PR51571(pi);
17838
17839         write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
17840         write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
17841         write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
17842         write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
17843
17844         WLC_PHY_WAR_PR51571(pi);
17845
17846         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
17847                         ci->RF_core1_lgbuf_a_tune);
17848         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
17849                         ci->RF_core1_lgbuf_g_tune);
17850         write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
17851         write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
17852                         ci->RF_core1_tx_pga_pad_tn);
17853
17854         WLC_PHY_WAR_PR51571(pi);
17855
17856         write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
17857                         ci->RF_core1_tx_mx_bgtrim);
17858         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
17859                         ci->RF_core2_lgbuf_a_tune);
17860         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
17861                         ci->RF_core2_lgbuf_g_tune);
17862         write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
17863
17864         WLC_PHY_WAR_PR51571(pi);
17865
17866         write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
17867                         ci->RF_core2_tx_pga_pad_tn);
17868         write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
17869                         ci->RF_core2_tx_mx_bgtrim);
17870
17871         OSL_DELAY(50);
17872
17873         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
17874         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
17875
17876         WLC_PHY_WAR_PR51571(pi);
17877
17878         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
17879
17880         OSL_DELAY(300);
17881 }
17882
17883 static void
17884 wlc_phy_chanspec_radio2056_setup(phy_info_t *pi,
17885                                  const chan_info_nphy_radio205x_t *ci)
17886 {
17887         radio_regs_t *regs_SYN_2056_ptr = NULL;
17888
17889         write_radio_reg(pi,
17890                         RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
17891                         ci->RF_SYN_pll_vcocal1);
17892         write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
17893                         ci->RF_SYN_pll_vcocal2);
17894         write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
17895                         ci->RF_SYN_pll_refdiv);
17896         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
17897                         ci->RF_SYN_pll_mmd2);
17898         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
17899                         ci->RF_SYN_pll_mmd1);
17900         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
17901                         ci->RF_SYN_pll_loopfilter1);
17902         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
17903                         ci->RF_SYN_pll_loopfilter2);
17904         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
17905                         ci->RF_SYN_pll_loopfilter3);
17906         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
17907                         ci->RF_SYN_pll_loopfilter4);
17908         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
17909                         ci->RF_SYN_pll_loopfilter5);
17910         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
17911                         ci->RF_SYN_reserved_addr27);
17912         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
17913                         ci->RF_SYN_reserved_addr28);
17914         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
17915                         ci->RF_SYN_reserved_addr29);
17916         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
17917                         ci->RF_SYN_logen_VCOBUF1);
17918         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
17919                         ci->RF_SYN_logen_MIXER2);
17920         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
17921                         ci->RF_SYN_logen_BUF3);
17922         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
17923                         ci->RF_SYN_logen_BUF4);
17924
17925         write_radio_reg(pi,
17926                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
17927                         ci->RF_RX0_lnaa_tune);
17928         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
17929                         ci->RF_RX0_lnag_tune);
17930         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
17931                         ci->RF_TX0_intpaa_boost_tune);
17932         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
17933                         ci->RF_TX0_intpag_boost_tune);
17934         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
17935                         ci->RF_TX0_pada_boost_tune);
17936         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
17937                         ci->RF_TX0_padg_boost_tune);
17938         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
17939                         ci->RF_TX0_pgaa_boost_tune);
17940         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
17941                         ci->RF_TX0_pgag_boost_tune);
17942         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
17943                         ci->RF_TX0_mixa_boost_tune);
17944         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
17945                         ci->RF_TX0_mixg_boost_tune);
17946
17947         write_radio_reg(pi,
17948                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
17949                         ci->RF_RX1_lnaa_tune);
17950         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
17951                         ci->RF_RX1_lnag_tune);
17952         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
17953                         ci->RF_TX1_intpaa_boost_tune);
17954         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
17955                         ci->RF_TX1_intpag_boost_tune);
17956         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
17957                         ci->RF_TX1_pada_boost_tune);
17958         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
17959                         ci->RF_TX1_padg_boost_tune);
17960         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
17961                         ci->RF_TX1_pgaa_boost_tune);
17962         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
17963                         ci->RF_TX1_pgag_boost_tune);
17964         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
17965                         ci->RF_TX1_mixa_boost_tune);
17966         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
17967                         ci->RF_TX1_mixg_boost_tune);
17968
17969         if (NREV_IS(pi->pubpi.phy_rev, 3))
17970                 regs_SYN_2056_ptr = regs_SYN_2056;
17971         else if (NREV_IS(pi->pubpi.phy_rev, 4))
17972                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
17973         else {
17974                 switch (pi->pubpi.radiorev) {
17975                 case 5:
17976                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
17977                         break;
17978                 case 6:
17979                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
17980                         break;
17981                 case 7:
17982                 case 9:
17983                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
17984                         break;
17985                 case 8:
17986                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
17987                         break;
17988                 case 11:
17989                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
17990                         break;
17991                 }
17992         }
17993         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17994                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
17995                                 RADIO_2056_SYN,
17996                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
17997         } else {
17998                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
17999                                 RADIO_2056_SYN,
18000                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
18001         }
18002
18003         if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
18004                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18005                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
18006                                         RADIO_2056_SYN, 0x1f);
18007                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
18008                                         RADIO_2056_SYN, 0x1f);
18009
18010                         if ((CHIPID(pi->sh->chip) == BCM4716_CHIP_ID) ||
18011                             (CHIPID(pi->sh->chip) == BCM47162_CHIP_ID)) {
18012
18013                                 write_radio_reg(pi,
18014                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
18015                                                 RADIO_2056_SYN, 0x14);
18016                                 write_radio_reg(pi,
18017                                                 RADIO_2056_SYN_PLL_CP2 |
18018                                                 RADIO_2056_SYN, 0x00);
18019                         } else {
18020                                 write_radio_reg(pi,
18021                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
18022                                                 RADIO_2056_SYN, 0xb);
18023                                 write_radio_reg(pi,
18024                                                 RADIO_2056_SYN_PLL_CP2 |
18025                                                 RADIO_2056_SYN, 0x14);
18026                         }
18027                 }
18028         }
18029
18030         if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
18031             (CHSPEC_IS2G(pi->radio_chanspec))) {
18032                 write_radio_reg(pi,
18033                                 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
18034                                 0x1f);
18035                 write_radio_reg(pi,
18036                                 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
18037                                 0x1f);
18038                 write_radio_reg(pi,
18039                                 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
18040                                 0xb);
18041                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
18042                                 0x20);
18043         }
18044
18045         if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
18046                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18047                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
18048                                         RADIO_2056_SYN, 0x1f);
18049                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
18050                                         RADIO_2056_SYN, 0x1f);
18051                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
18052                                         RADIO_2056_SYN, 0x5);
18053                         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
18054                                         RADIO_2056_SYN, 0xc);
18055                 }
18056         }
18057
18058         if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
18059                 u16 pag_boost_tune;
18060                 u16 padg_boost_tune;
18061                 u16 pgag_boost_tune;
18062                 u16 mixg_boost_tune;
18063                 u16 bias, cascbias;
18064                 uint core;
18065
18066                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18067
18068                         if (NREV_GE(pi->pubpi.phy_rev, 5)) {
18069
18070                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18071                                                  PADG_IDAC, 0xcc);
18072
18073                                 if ((CHIPID(pi->sh->chip) == BCM4716_CHIP_ID) ||
18074                                     (CHIPID(pi->sh->chip) ==
18075                                      BCM47162_CHIP_ID)) {
18076                                         bias = 0x40;
18077                                         cascbias = 0x45;
18078                                         pag_boost_tune = 0x5;
18079                                         pgag_boost_tune = 0x33;
18080                                         padg_boost_tune = 0x77;
18081                                         mixg_boost_tune = 0x55;
18082                                 } else {
18083                                         bias = 0x25;
18084                                         cascbias = 0x20;
18085
18086                                         if ((CHIPID(pi->sh->chip) ==
18087                                              BCM43224_CHIP_ID)
18088                                             || (CHIPID(pi->sh->chip) ==
18089                                                 BCM43225_CHIP_ID)
18090                                             || (CHIPID(pi->sh->chip) ==
18091                                                 BCM43421_CHIP_ID)) {
18092                                                 if (pi->sh->chippkg ==
18093                                                     BCM43224_FAB_SMIC) {
18094                                                         bias = 0x2a;
18095                                                         cascbias = 0x38;
18096                                                 }
18097                                         }
18098
18099                                         pag_boost_tune = 0x4;
18100                                         pgag_boost_tune = 0x03;
18101                                         padg_boost_tune = 0x77;
18102                                         mixg_boost_tune = 0x65;
18103                                 }
18104
18105                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18106                                                  INTPAG_IMAIN_STAT, bias);
18107                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18108                                                  INTPAG_IAUX_STAT, bias);
18109                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18110                                                  INTPAG_CASCBIAS, cascbias);
18111
18112                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18113                                                  INTPAG_BOOST_TUNE,
18114                                                  pag_boost_tune);
18115                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18116                                                  PGAG_BOOST_TUNE,
18117                                                  pgag_boost_tune);
18118                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18119                                                  PADG_BOOST_TUNE,
18120                                                  padg_boost_tune);
18121                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18122                                                  MIXG_BOOST_TUNE,
18123                                                  mixg_boost_tune);
18124                         } else {
18125
18126                                 bias = IS40MHZ(pi) ? 0x40 : 0x20;
18127
18128                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18129                                                  INTPAG_IMAIN_STAT, bias);
18130                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18131                                                  INTPAG_IAUX_STAT, bias);
18132                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18133                                                  INTPAG_CASCBIAS, 0x30);
18134                         }
18135                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
18136                                          0xee);
18137                 }
18138         }
18139
18140         if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
18141             && CHSPEC_IS5G(pi->radio_chanspec)) {
18142                 u16 paa_boost_tune;
18143                 u16 pada_boost_tune;
18144                 u16 pgaa_boost_tune;
18145                 u16 mixa_boost_tune;
18146                 u16 freq, pabias, cascbias;
18147                 uint core;
18148
18149                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
18150
18151                 if (freq < 5150) {
18152
18153                         paa_boost_tune = 0xa;
18154                         pada_boost_tune = 0x77;
18155                         pgaa_boost_tune = 0xf;
18156                         mixa_boost_tune = 0xf;
18157                 } else if (freq < 5340) {
18158
18159                         paa_boost_tune = 0x8;
18160                         pada_boost_tune = 0x77;
18161                         pgaa_boost_tune = 0xfb;
18162                         mixa_boost_tune = 0xf;
18163                 } else if (freq < 5650) {
18164
18165                         paa_boost_tune = 0x0;
18166                         pada_boost_tune = 0x77;
18167                         pgaa_boost_tune = 0xb;
18168                         mixa_boost_tune = 0xf;
18169                 } else {
18170
18171                         paa_boost_tune = 0x0;
18172                         pada_boost_tune = 0x77;
18173                         if (freq != 5825) {
18174                                 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
18175                         } else {
18176                                 pgaa_boost_tune = 6;
18177                         }
18178                         mixa_boost_tune = 0xf;
18179                 }
18180
18181                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18182                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18183                                          INTPAA_BOOST_TUNE, paa_boost_tune);
18184                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18185                                          PADA_BOOST_TUNE, pada_boost_tune);
18186                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18187                                          PGAA_BOOST_TUNE, pgaa_boost_tune);
18188                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18189                                          MIXA_BOOST_TUNE, mixa_boost_tune);
18190
18191                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18192                                          TXSPARE1, 0x30);
18193                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18194                                          PA_SPARE2, 0xee);
18195
18196                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18197                                          PADA_CASCBIAS, 0x3);
18198
18199                         cascbias = 0x30;
18200
18201                         if ((CHIPID(pi->sh->chip) == BCM43224_CHIP_ID) ||
18202                             (CHIPID(pi->sh->chip) == BCM43225_CHIP_ID) ||
18203                             (CHIPID(pi->sh->chip) == BCM43421_CHIP_ID)) {
18204                                 if (pi->sh->chippkg == BCM43224_FAB_SMIC) {
18205                                         cascbias = 0x35;
18206                                 }
18207                         }
18208
18209                         pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
18210
18211                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18212                                          INTPAA_IAUX_STAT, pabias);
18213                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18214                                          INTPAA_IMAIN_STAT, pabias);
18215                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
18216                                          INTPAA_CASCBIAS, cascbias);
18217                 }
18218         }
18219
18220         OSL_DELAY(50);
18221
18222         wlc_phy_radio205x_vcocal_nphy(pi);
18223 }
18224
18225 void wlc_phy_radio205x_vcocal_nphy(phy_info_t *pi)
18226 {
18227         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18228                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
18229                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
18230                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
18231                               (1 << 2));
18232                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
18233         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18234                 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
18235                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
18236                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
18237                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
18238                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
18239         }
18240
18241         OSL_DELAY(300);
18242 }
18243
18244 #define MAX_205x_RCAL_WAITLOOPS 10000
18245
18246 static u16 wlc_phy_radio205x_rcal(phy_info_t *pi)
18247 {
18248         u16 rcal_reg = 0;
18249         int i;
18250
18251         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18252
18253                 if (pi->pubpi.radiorev == 5) {
18254
18255                         and_phy_reg(pi, 0x342, ~(0x1 << 1));
18256
18257                         OSL_DELAY(10);
18258
18259                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
18260                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
18261                                       0x1);
18262                 }
18263                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
18264
18265                 OSL_DELAY(10);
18266
18267                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
18268
18269                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18270                         rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
18271                         if (rcal_reg & 0x1) {
18272                                 break;
18273                         }
18274                         OSL_DELAY(100);
18275                 }
18276
18277                 ASSERT(i < MAX_205x_RCAL_WAITLOOPS);
18278
18279                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
18280
18281                 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
18282
18283                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
18284                 if (pi->pubpi.radiorev == 5) {
18285
18286                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
18287                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
18288                                       0x0);
18289                 }
18290
18291                 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
18292
18293                         mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
18294                                       rcal_reg);
18295                         mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
18296                                       rcal_reg << 2);
18297                 }
18298
18299         } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
18300                 u16 savereg;
18301
18302                 savereg =
18303                     read_radio_reg(pi,
18304                                    RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN);
18305                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
18306                                 savereg | 0x7);
18307                 OSL_DELAY(10);
18308
18309                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18310                                 0x1);
18311                 OSL_DELAY(10);
18312
18313                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18314                                 0x9);
18315
18316                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18317                         rcal_reg = read_radio_reg(pi,
18318                                                   RADIO_2056_SYN_RCAL_CODE_OUT |
18319                                                   RADIO_2056_SYN);
18320                         if (rcal_reg & 0x80) {
18321                                 break;
18322                         }
18323                         OSL_DELAY(100);
18324                 }
18325
18326                 ASSERT(i < MAX_205x_RCAL_WAITLOOPS);
18327
18328                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18329                                 0x1);
18330
18331                 rcal_reg =
18332                     read_radio_reg(pi,
18333                                    RADIO_2056_SYN_RCAL_CODE_OUT |
18334                                    RADIO_2056_SYN);
18335
18336                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
18337                                 0x0);
18338
18339                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
18340                                 savereg);
18341
18342                 return rcal_reg & 0x1f;
18343         }
18344         return rcal_reg & 0x3e;
18345 }
18346
18347 static void
18348 wlc_phy_chanspec_radio2057_setup(phy_info_t *pi,
18349                                  const chan_info_nphy_radio2057_t *ci,
18350                                  const chan_info_nphy_radio2057_rev5_t *ci2)
18351 {
18352         int coreNum;
18353         u16 txmix2g_tune_boost_pu = 0;
18354         u16 pad2g_tune_pus = 0;
18355
18356         if (pi->pubpi.radiorev == 5) {
18357
18358                 write_radio_reg(pi,
18359                                 RADIO_2057_VCOCAL_COUNTVAL0,
18360                                 ci2->RF_vcocal_countval0);
18361                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
18362                                 ci2->RF_vcocal_countval1);
18363                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
18364                                 ci2->RF_rfpll_refmaster_sparextalsize);
18365                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18366                                 ci2->RF_rfpll_loopfilter_r1);
18367                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18368                                 ci2->RF_rfpll_loopfilter_c2);
18369                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18370                                 ci2->RF_rfpll_loopfilter_c1);
18371                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
18372                                 ci2->RF_cp_kpd_idac);
18373                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
18374                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
18375                 write_radio_reg(pi,
18376                                 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
18377                 write_radio_reg(pi,
18378                                 RADIO_2057_LOGEN_MX2G_TUNE,
18379                                 ci2->RF_logen_mx2g_tune);
18380                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
18381                                 ci2->RF_logen_indbuf2g_tune);
18382
18383                 write_radio_reg(pi,
18384                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
18385                                 ci2->RF_txmix2g_tune_boost_pu_core0);
18386                 write_radio_reg(pi,
18387                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
18388                                 ci2->RF_pad2g_tune_pus_core0);
18389                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
18390                                 ci2->RF_lna2g_tune_core0);
18391
18392                 write_radio_reg(pi,
18393                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
18394                                 ci2->RF_txmix2g_tune_boost_pu_core1);
18395                 write_radio_reg(pi,
18396                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
18397                                 ci2->RF_pad2g_tune_pus_core1);
18398                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
18399                                 ci2->RF_lna2g_tune_core1);
18400
18401         } else {
18402
18403                 write_radio_reg(pi,
18404                                 RADIO_2057_VCOCAL_COUNTVAL0,
18405                                 ci->RF_vcocal_countval0);
18406                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
18407                                 ci->RF_vcocal_countval1);
18408                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
18409                                 ci->RF_rfpll_refmaster_sparextalsize);
18410                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18411                                 ci->RF_rfpll_loopfilter_r1);
18412                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18413                                 ci->RF_rfpll_loopfilter_c2);
18414                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18415                                 ci->RF_rfpll_loopfilter_c1);
18416                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
18417                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
18418                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
18419                 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
18420                 write_radio_reg(pi,
18421                                 RADIO_2057_LOGEN_MX2G_TUNE,
18422                                 ci->RF_logen_mx2g_tune);
18423                 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
18424                                 ci->RF_logen_mx5g_tune);
18425                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
18426                                 ci->RF_logen_indbuf2g_tune);
18427                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
18428                                 ci->RF_logen_indbuf5g_tune);
18429
18430                 write_radio_reg(pi,
18431                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
18432                                 ci->RF_txmix2g_tune_boost_pu_core0);
18433                 write_radio_reg(pi,
18434                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
18435                                 ci->RF_pad2g_tune_pus_core0);
18436                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
18437                                 ci->RF_pga_boost_tune_core0);
18438                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
18439                                 ci->RF_txmix5g_boost_tune_core0);
18440                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
18441                                 ci->RF_pad5g_tune_misc_pus_core0);
18442                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
18443                                 ci->RF_lna2g_tune_core0);
18444                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
18445                                 ci->RF_lna5g_tune_core0);
18446
18447                 write_radio_reg(pi,
18448                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
18449                                 ci->RF_txmix2g_tune_boost_pu_core1);
18450                 write_radio_reg(pi,
18451                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
18452                                 ci->RF_pad2g_tune_pus_core1);
18453                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
18454                                 ci->RF_pga_boost_tune_core1);
18455                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
18456                                 ci->RF_txmix5g_boost_tune_core1);
18457                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
18458                                 ci->RF_pad5g_tune_misc_pus_core1);
18459                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
18460                                 ci->RF_lna2g_tune_core1);
18461                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
18462                                 ci->RF_lna5g_tune_core1);
18463         }
18464
18465         if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
18466
18467                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18468                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18469                                         0x3f);
18470                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18471                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18472                                         0x8);
18473                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18474                                         0x8);
18475                 } else {
18476                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18477                                         0x1f);
18478                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18479                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18480                                         0x8);
18481                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18482                                         0x8);
18483                 }
18484         } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
18485                    (pi->pubpi.radiorev == 8)) {
18486
18487                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18488                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18489                                         0x1b);
18490                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
18491                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18492                                         0xa);
18493                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18494                                         0xa);
18495                 } else {
18496                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
18497                                         0x1f);
18498                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
18499                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
18500                                         0x8);
18501                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
18502                                         0x8);
18503                 }
18504
18505         }
18506
18507         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18508                 if (PHY_IPA(pi)) {
18509                         if (pi->pubpi.radiorev == 3) {
18510                                 txmix2g_tune_boost_pu = 0x6b;
18511                         }
18512
18513                         if (pi->pubpi.radiorev == 5)
18514                                 pad2g_tune_pus = 0x73;
18515
18516                 } else {
18517                         if (pi->pubpi.radiorev != 5) {
18518                                 pad2g_tune_pus = 0x3;
18519
18520                                 txmix2g_tune_boost_pu = 0x61;
18521                         }
18522                 }
18523
18524                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18525
18526                         if (txmix2g_tune_boost_pu != 0)
18527                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
18528                                                  TXMIX2G_TUNE_BOOST_PU,
18529                                                  txmix2g_tune_boost_pu);
18530
18531                         if (pad2g_tune_pus != 0)
18532                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
18533                                                  PAD2G_TUNE_PUS,
18534                                                  pad2g_tune_pus);
18535                 }
18536         }
18537
18538         OSL_DELAY(50);
18539
18540         wlc_phy_radio205x_vcocal_nphy(pi);
18541 }
18542
18543 static u16 wlc_phy_radio2057_rccal(phy_info_t *pi)
18544 {
18545         u16 rccal_valid;
18546         int i;
18547         bool chip43226_6362A0;
18548
18549         chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
18550                             || (pi->pubpi.radiorev == 4)
18551                             || (pi->pubpi.radiorev == 6));
18552
18553         rccal_valid = 0;
18554         if (chip43226_6362A0) {
18555                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
18556                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
18557         } else {
18558                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
18559
18560                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
18561         }
18562         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18563         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18564
18565         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18566                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18567                 if (rccal_valid & 0x2) {
18568                         break;
18569                 }
18570                 OSL_DELAY(500);
18571         }
18572
18573         ASSERT(rccal_valid & 0x2);
18574
18575         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18576
18577         rccal_valid = 0;
18578         if (chip43226_6362A0) {
18579                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
18580                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
18581         } else {
18582                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
18583
18584                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
18585         }
18586         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18587         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18588
18589         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18590                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18591                 if (rccal_valid & 0x2) {
18592                         break;
18593                 }
18594                 OSL_DELAY(500);
18595         }
18596
18597         ASSERT(rccal_valid & 0x2);
18598
18599         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18600
18601         rccal_valid = 0;
18602         if (chip43226_6362A0) {
18603                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
18604
18605                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
18606                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
18607         } else {
18608                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
18609                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
18610                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
18611         }
18612         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
18613
18614         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
18615                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
18616                 if (rccal_valid & 0x2) {
18617                         break;
18618                 }
18619                 OSL_DELAY(500);
18620         }
18621
18622         ASSERT(rccal_valid & 0x2);
18623
18624         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
18625
18626         return rccal_valid;
18627 }
18628
18629 static void
18630 wlc_phy_adjust_rx_analpfbw_nphy(phy_info_t *pi, u16 reduction_factr)
18631 {
18632         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18633                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18634                     CHSPEC_IS40(pi->radio_chanspec)) {
18635                         if (!pi->nphy_anarxlpf_adjusted) {
18636                                 write_radio_reg(pi,
18637                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18638                                                  RADIO_2056_RX0),
18639                                                 ((pi->nphy_rccal_value +
18640                                                   reduction_factr) | 0x80));
18641
18642                                 pi->nphy_anarxlpf_adjusted = true;
18643                         }
18644                 } else {
18645                         if (pi->nphy_anarxlpf_adjusted) {
18646                                 write_radio_reg(pi,
18647                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18648                                                  RADIO_2056_RX0),
18649                                                 (pi->nphy_rccal_value | 0x80));
18650
18651                                 pi->nphy_anarxlpf_adjusted = false;
18652                         }
18653                 }
18654         }
18655 }
18656
18657 static void
18658 wlc_phy_adjust_min_noisevar_nphy(phy_info_t *pi, int ntones, int *tone_id_buf,
18659                                  u32 *noise_var_buf)
18660 {
18661         int i;
18662         u32 offset;
18663         int tone_id;
18664         int tbllen =
18665             CHSPEC_IS40(pi->
18666                         radio_chanspec) ? NPHY_NOISEVAR_TBLLEN40 :
18667             NPHY_NOISEVAR_TBLLEN20;
18668
18669         if (pi->nphy_noisevars_adjusted) {
18670                 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
18671                         tone_id = pi->nphy_saved_noisevars.tone_id[i];
18672                         offset = (tone_id >= 0) ?
18673                             ((tone_id * 2) + 1) : (tbllen + (tone_id * 2) + 1);
18674                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18675                                                  offset, 32,
18676                                                  (void *)&pi->
18677                                                  nphy_saved_noisevars.
18678                                                  min_noise_vars[i]);
18679                 }
18680
18681                 pi->nphy_saved_noisevars.bufcount = 0;
18682                 pi->nphy_noisevars_adjusted = false;
18683         }
18684
18685         if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
18686                 pi->nphy_saved_noisevars.bufcount = 0;
18687
18688                 for (i = 0; i < ntones; i++) {
18689                         tone_id = tone_id_buf[i];
18690                         offset = (tone_id >= 0) ?
18691                             ((tone_id * 2) + 1) : (tbllen + (tone_id * 2) + 1);
18692                         pi->nphy_saved_noisevars.tone_id[i] = tone_id;
18693                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18694                                                 offset, 32,
18695                                                 &pi->nphy_saved_noisevars.
18696                                                 min_noise_vars[i]);
18697                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18698                                                  offset, 32,
18699                                                  (void *)&noise_var_buf[i]);
18700                         pi->nphy_saved_noisevars.bufcount++;
18701                 }
18702
18703                 pi->nphy_noisevars_adjusted = true;
18704         }
18705 }
18706
18707 static void wlc_phy_adjust_crsminpwr_nphy(phy_info_t *pi, u8 minpwr)
18708 {
18709         u16 regval;
18710
18711         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18712                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18713                     CHSPEC_IS40(pi->radio_chanspec)) {
18714                         if (!pi->nphy_crsminpwr_adjusted) {
18715                                 regval = read_phy_reg(pi, 0x27d);
18716                                 pi->nphy_crsminpwr[0] = regval & 0xff;
18717                                 regval &= 0xff00;
18718                                 regval |= (u16) minpwr;
18719                                 write_phy_reg(pi, 0x27d, regval);
18720
18721                                 regval = read_phy_reg(pi, 0x280);
18722                                 pi->nphy_crsminpwr[1] = regval & 0xff;
18723                                 regval &= 0xff00;
18724                                 regval |= (u16) minpwr;
18725                                 write_phy_reg(pi, 0x280, regval);
18726
18727                                 regval = read_phy_reg(pi, 0x283);
18728                                 pi->nphy_crsminpwr[2] = regval & 0xff;
18729                                 regval &= 0xff00;
18730                                 regval |= (u16) minpwr;
18731                                 write_phy_reg(pi, 0x283, regval);
18732
18733                                 pi->nphy_crsminpwr_adjusted = true;
18734                         }
18735                 } else {
18736                         if (pi->nphy_crsminpwr_adjusted) {
18737                                 regval = read_phy_reg(pi, 0x27d);
18738                                 regval &= 0xff00;
18739                                 regval |= pi->nphy_crsminpwr[0];
18740                                 write_phy_reg(pi, 0x27d, regval);
18741
18742                                 regval = read_phy_reg(pi, 0x280);
18743                                 regval &= 0xff00;
18744                                 regval |= pi->nphy_crsminpwr[1];
18745                                 write_phy_reg(pi, 0x280, regval);
18746
18747                                 regval = read_phy_reg(pi, 0x283);
18748                                 regval &= 0xff00;
18749                                 regval |= pi->nphy_crsminpwr[2];
18750                                 write_phy_reg(pi, 0x283, regval);
18751
18752                                 pi->nphy_crsminpwr_adjusted = false;
18753                         }
18754                 }
18755         }
18756 }
18757
18758 static void wlc_phy_txlpfbw_nphy(phy_info_t *pi)
18759 {
18760         u8 tx_lpf_bw = 0;
18761
18762         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18763                 if (CHSPEC_IS40(pi->radio_chanspec)) {
18764                         tx_lpf_bw = 3;
18765                 } else {
18766                         tx_lpf_bw = 1;
18767                 }
18768
18769                 if (PHY_IPA(pi)) {
18770                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18771                                 tx_lpf_bw = 5;
18772                         } else {
18773                                 tx_lpf_bw = 4;
18774                         }
18775                 }
18776                 write_phy_reg(pi, 0xe8,
18777                               (tx_lpf_bw << 0) |
18778                               (tx_lpf_bw << 3) |
18779                               (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18780
18781                 if (PHY_IPA(pi)) {
18782
18783                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18784                                 tx_lpf_bw = 4;
18785                         } else {
18786                                 tx_lpf_bw = 1;
18787                         }
18788
18789                         write_phy_reg(pi, 0xe9,
18790                                       (tx_lpf_bw << 0) |
18791                                       (tx_lpf_bw << 3) |
18792                                       (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18793                 }
18794         }
18795 }
18796
18797 static void wlc_phy_spurwar_nphy(phy_info_t *pi)
18798 {
18799         u16 cur_channel = 0;
18800         int nphy_adj_tone_id_buf[] = { 57, 58 };
18801         u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
18802         bool isAdjustNoiseVar = false;
18803         uint numTonesAdjust = 0;
18804         u32 tempval = 0;
18805
18806         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18807                 if (pi->phyhang_avoid)
18808                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
18809
18810                 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
18811
18812                 if (pi->nphy_gband_spurwar_en) {
18813
18814                         wlc_phy_adjust_rx_analpfbw_nphy(pi,
18815                                                         NPHY_ANARXLPFBW_REDUCTIONFACT);
18816
18817                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18818                                 if ((cur_channel == 11)
18819                                     && CHSPEC_IS40(pi->radio_chanspec)) {
18820
18821                                         wlc_phy_adjust_min_noisevar_nphy(pi, 2,
18822                                                                          nphy_adj_tone_id_buf,
18823                                                                          nphy_adj_noise_var_buf);
18824                                 } else {
18825
18826                                         wlc_phy_adjust_min_noisevar_nphy(pi, 0,
18827                                                                          NULL,
18828                                                                          NULL);
18829                                 }
18830                         }
18831                         wlc_phy_adjust_crsminpwr_nphy(pi,
18832                                                       NPHY_ADJUSTED_MINCRSPOWER);
18833                 }
18834
18835                 if ((pi->nphy_gband_spurwar2_en)
18836                     && CHSPEC_IS2G(pi->radio_chanspec)) {
18837
18838                         if (CHSPEC_IS40(pi->radio_chanspec)) {
18839                                 switch (cur_channel) {
18840                                 case 3:
18841                                         nphy_adj_tone_id_buf[0] = 57;
18842                                         nphy_adj_tone_id_buf[1] = 58;
18843                                         nphy_adj_noise_var_buf[0] = 0x22f;
18844                                         nphy_adj_noise_var_buf[1] = 0x25f;
18845                                         isAdjustNoiseVar = true;
18846                                         break;
18847                                 case 4:
18848                                         nphy_adj_tone_id_buf[0] = 41;
18849                                         nphy_adj_tone_id_buf[1] = 42;
18850                                         nphy_adj_noise_var_buf[0] = 0x22f;
18851                                         nphy_adj_noise_var_buf[1] = 0x25f;
18852                                         isAdjustNoiseVar = true;
18853                                         break;
18854                                 case 5:
18855                                         nphy_adj_tone_id_buf[0] = 25;
18856                                         nphy_adj_tone_id_buf[1] = 26;
18857                                         nphy_adj_noise_var_buf[0] = 0x24f;
18858                                         nphy_adj_noise_var_buf[1] = 0x25f;
18859                                         isAdjustNoiseVar = true;
18860                                         break;
18861                                 case 6:
18862                                         nphy_adj_tone_id_buf[0] = 9;
18863                                         nphy_adj_tone_id_buf[1] = 10;
18864                                         nphy_adj_noise_var_buf[0] = 0x22f;
18865                                         nphy_adj_noise_var_buf[1] = 0x24f;
18866                                         isAdjustNoiseVar = true;
18867                                         break;
18868                                 case 7:
18869                                         nphy_adj_tone_id_buf[0] = 121;
18870                                         nphy_adj_tone_id_buf[1] = 122;
18871                                         nphy_adj_noise_var_buf[0] = 0x18f;
18872                                         nphy_adj_noise_var_buf[1] = 0x24f;
18873                                         isAdjustNoiseVar = true;
18874                                         break;
18875                                 case 8:
18876                                         nphy_adj_tone_id_buf[0] = 105;
18877                                         nphy_adj_tone_id_buf[1] = 106;
18878                                         nphy_adj_noise_var_buf[0] = 0x22f;
18879                                         nphy_adj_noise_var_buf[1] = 0x25f;
18880                                         isAdjustNoiseVar = true;
18881                                         break;
18882                                 case 9:
18883                                         nphy_adj_tone_id_buf[0] = 89;
18884                                         nphy_adj_tone_id_buf[1] = 90;
18885                                         nphy_adj_noise_var_buf[0] = 0x22f;
18886                                         nphy_adj_noise_var_buf[1] = 0x24f;
18887                                         isAdjustNoiseVar = true;
18888                                         break;
18889                                 case 10:
18890                                         nphy_adj_tone_id_buf[0] = 73;
18891                                         nphy_adj_tone_id_buf[1] = 74;
18892                                         nphy_adj_noise_var_buf[0] = 0x22f;
18893                                         nphy_adj_noise_var_buf[1] = 0x24f;
18894                                         isAdjustNoiseVar = true;
18895                                         break;
18896                                 default:
18897                                         isAdjustNoiseVar = false;
18898                                         break;
18899                                 }
18900                         }
18901
18902                         if (isAdjustNoiseVar) {
18903                                 numTonesAdjust = sizeof(nphy_adj_tone_id_buf) /
18904                                     sizeof(nphy_adj_tone_id_buf[0]);
18905
18906                                 wlc_phy_adjust_min_noisevar_nphy(pi,
18907                                                                  numTonesAdjust,
18908                                                                  nphy_adj_tone_id_buf,
18909                                                                  nphy_adj_noise_var_buf);
18910
18911                                 tempval = 0;
18912
18913                         } else {
18914
18915                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
18916                                                                  NULL);
18917                         }
18918                 }
18919
18920                 if ((pi->nphy_aband_spurwar_en) &&
18921                     (CHSPEC_IS5G(pi->radio_chanspec))) {
18922                         switch (cur_channel) {
18923                         case 54:
18924                                 nphy_adj_tone_id_buf[0] = 32;
18925                                 nphy_adj_noise_var_buf[0] = 0x25f;
18926                                 break;
18927                         case 38:
18928                         case 102:
18929                         case 118:
18930                                 if ((CHIPID(pi->sh->chip) == BCM4716_CHIP_ID) &&
18931                                     (pi->sh->chippkg == BCM4717_PKG_ID)) {
18932                                         nphy_adj_tone_id_buf[0] = 32;
18933                                         nphy_adj_noise_var_buf[0] = 0x21f;
18934                                 } else {
18935                                         nphy_adj_tone_id_buf[0] = 0;
18936                                         nphy_adj_noise_var_buf[0] = 0x0;
18937                                 }
18938                                 break;
18939                         case 134:
18940                                 nphy_adj_tone_id_buf[0] = 32;
18941                                 nphy_adj_noise_var_buf[0] = 0x21f;
18942                                 break;
18943                         case 151:
18944                                 nphy_adj_tone_id_buf[0] = 16;
18945                                 nphy_adj_noise_var_buf[0] = 0x23f;
18946                                 break;
18947                         case 153:
18948                         case 161:
18949                                 nphy_adj_tone_id_buf[0] = 48;
18950                                 nphy_adj_noise_var_buf[0] = 0x23f;
18951                                 break;
18952                         default:
18953                                 nphy_adj_tone_id_buf[0] = 0;
18954                                 nphy_adj_noise_var_buf[0] = 0x0;
18955                                 break;
18956                         }
18957
18958                         if (nphy_adj_tone_id_buf[0]
18959                             && nphy_adj_noise_var_buf[0]) {
18960                                 wlc_phy_adjust_min_noisevar_nphy(pi, 1,
18961                                                                  nphy_adj_tone_id_buf,
18962                                                                  nphy_adj_noise_var_buf);
18963                         } else {
18964                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
18965                                                                  NULL);
18966                         }
18967                 }
18968
18969                 if (pi->phyhang_avoid)
18970                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
18971         }
18972 }
18973
18974 static void
18975 wlc_phy_chanspec_nphy_setup(phy_info_t *pi, chanspec_t chanspec,
18976                             const nphy_sfo_cfg_t *ci)
18977 {
18978         u16 val;
18979
18980         val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
18981         if (CHSPEC_IS5G(chanspec) && !val) {
18982
18983                 val = R_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param);
18984                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param,
18985                       (val | MAC_PHY_FORCE_CLK));
18986
18987                 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
18988                            (BBCFG_RESETCCA | BBCFG_RESETRX));
18989
18990                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param, val);
18991
18992                 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
18993         } else if (!CHSPEC_IS5G(chanspec) && val) {
18994
18995                 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
18996
18997                 val = R_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param);
18998                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param,
18999                       (val | MAC_PHY_FORCE_CLK));
19000
19001                 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
19002                             (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
19003
19004                 W_REG(pi->sh->osh, &pi->regs->psm_phy_hdr_param, val);
19005         }
19006
19007         write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
19008         write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
19009         write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
19010
19011         write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
19012         write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
19013         write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
19014
19015         if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
19016                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
19017
19018                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
19019         } else {
19020                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
19021                                         NPHY_ClassifierCtrl_ofdm_en);
19022
19023                 if (CHSPEC_IS2G(chanspec))
19024                         and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
19025         }
19026
19027         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
19028                 wlc_phy_txpwr_fixpower_nphy(pi);
19029         }
19030
19031         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
19032
19033                 wlc_phy_adjust_lnagaintbl_nphy(pi);
19034         }
19035
19036         wlc_phy_txlpfbw_nphy(pi);
19037
19038         if (NREV_GE(pi->pubpi.phy_rev, 3)
19039             && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
19040                 u8 spuravoid = 0;
19041
19042                 val = CHSPEC_CHANNEL(chanspec);
19043                 if (!CHSPEC_IS40(pi->radio_chanspec)) {
19044                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19045                                 if ((val == 13) || (val == 14) || (val == 153)) {
19046                                         spuravoid = 1;
19047                                 }
19048                         } else {
19049
19050                                 if (((val >= 5) && (val <= 8)) || (val == 13)
19051                                     || (val == 14)) {
19052                                         spuravoid = 1;
19053                                 }
19054                         }
19055                 } else {
19056                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19057                                 if (val == 54) {
19058                                         spuravoid = 1;
19059                                 }
19060                         } else {
19061
19062                                 if (pi->nphy_aband_spurwar_en &&
19063                                     ((val == 38) || (val == 102)
19064                                      || (val == 118))) {
19065                                         if ((CHIPID(pi->sh->chip) ==
19066                                              BCM4716_CHIP_ID)
19067                                             && (pi->sh->chippkg ==
19068                                                 BCM4717_PKG_ID)) {
19069                                                 spuravoid = 0;
19070                                         } else {
19071                                                 spuravoid = 1;
19072                                         }
19073                                 }
19074                         }
19075                 }
19076
19077                 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
19078                         spuravoid = 1;
19079
19080                 if ((CHIPID(pi->sh->chip) == BCM4716_CHIP_ID) ||
19081                     (CHIPID(pi->sh->chip) == BCM47162_CHIP_ID)) {
19082                         si_pmu_spuravoid(pi->sh->sih, pi->sh->osh, spuravoid);
19083                 } else {
19084                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
19085                         si_pmu_spuravoid(pi->sh->sih, pi->sh->osh, spuravoid);
19086                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
19087                 }
19088
19089                 if ((CHIPID(pi->sh->chip) == BCM43224_CHIP_ID) ||
19090                     (CHIPID(pi->sh->chip) == BCM43225_CHIP_ID) ||
19091                     (CHIPID(pi->sh->chip) == BCM43421_CHIP_ID)) {
19092
19093                         if (spuravoid == 1) {
19094
19095                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_l,
19096                                       0x5341);
19097                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_h,
19098                                       0x8);
19099                         } else {
19100
19101                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_l,
19102                                       0x8889);
19103                                 W_REG(pi->sh->osh, &pi->regs->tsf_clk_frac_h,
19104                                       0x8);
19105                         }
19106                 }
19107
19108                 if (!((CHIPID(pi->sh->chip) == BCM4716_CHIP_ID) ||
19109                       (CHIPID(pi->sh->chip) == BCM47162_CHIP_ID))) {
19110                         wlapi_bmac_core_phypll_reset(pi->sh->physhim);
19111                 }
19112
19113                 mod_phy_reg(pi, 0x01, (0x1 << 15),
19114                             ((spuravoid > 0) ? (0x1 << 15) : 0));
19115
19116                 wlc_phy_resetcca_nphy(pi);
19117
19118                 pi->phy_isspuravoid = (spuravoid > 0);
19119         }
19120
19121         if (NREV_LT(pi->pubpi.phy_rev, 7))
19122                 write_phy_reg(pi, 0x17e, 0x3830);
19123
19124         wlc_phy_spurwar_nphy(pi);
19125 }
19126
19127 void wlc_phy_chanspec_set_nphy(phy_info_t *pi, chanspec_t chanspec)
19128 {
19129         int freq;
19130         chan_info_nphy_radio2057_t *t0 = NULL;
19131         chan_info_nphy_radio205x_t *t1 = NULL;
19132         chan_info_nphy_radio2057_rev5_t *t2 = NULL;
19133         chan_info_nphy_2055_t *t3 = NULL;
19134
19135         if (NORADIO_ENAB(pi->pubpi)) {
19136                 return;
19137         }
19138
19139         if (!wlc_phy_chan2freq_nphy
19140             (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
19141                 return;
19142
19143         wlc_phy_chanspec_radio_set((wlc_phy_t *) pi, chanspec);
19144
19145         if (CHSPEC_BW(chanspec) != pi->bw)
19146                 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
19147
19148         if (CHSPEC_IS40(chanspec)) {
19149                 if (CHSPEC_SB_UPPER(chanspec)) {
19150                         or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
19151                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19152                                 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
19153                         }
19154                 } else {
19155                         and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
19156                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19157                                 and_phy_reg(pi, 0x310,
19158                                             (~PRIM_SEL_UP20 & 0xffff));
19159                         }
19160                 }
19161         }
19162
19163         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19164                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19165
19166                         if ((pi->pubpi.radiorev <= 4)
19167                             || (pi->pubpi.radiorev == 6)) {
19168                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
19169                                               0x2,
19170                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
19171                                                : 0));
19172                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
19173                                               0x2,
19174                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
19175                                                : 0));
19176                         }
19177
19178                         wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
19179                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
19180                                                     (pi->pubpi.radiorev ==
19181                                                      5) ? (const nphy_sfo_cfg_t
19182                                                            *)&(t2->
19183                                                                PHY_BW1a)
19184                                                     : (const nphy_sfo_cfg_t *)
19185                                                     &(t0->PHY_BW1a));
19186
19187                 } else {
19188
19189                         mod_radio_reg(pi,
19190                                       RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
19191                                       0x4,
19192                                       (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
19193                         wlc_phy_chanspec_radio2056_setup(pi, t1);
19194
19195                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
19196                                                     (const nphy_sfo_cfg_t *)
19197                                                     &(t1->PHY_BW1a));
19198                 }
19199
19200         } else {
19201
19202                 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
19203                               (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
19204                                : (0x05 << 4)));
19205
19206                 wlc_phy_chanspec_radio2055_setup(pi, t3);
19207                 wlc_phy_chanspec_nphy_setup(pi, chanspec,
19208                                             (const nphy_sfo_cfg_t *)&(t3->
19209                                                                       PHY_BW1a));
19210         }
19211
19212 }
19213
19214 static void wlc_phy_savecal_nphy(phy_info_t *pi)
19215 {
19216         void *tbl_ptr;
19217         int coreNum;
19218         u16 *txcal_radio_regs = NULL;
19219
19220         if (pi->phyhang_avoid)
19221                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19222
19223         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19224
19225                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
19226                                           &pi->calibration_cache.
19227                                           rxcal_coeffs_2G);
19228
19229                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19230                         txcal_radio_regs =
19231                             pi->calibration_cache.txcal_radio_regs_2G;
19232                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19233
19234                         pi->calibration_cache.txcal_radio_regs_2G[0] =
19235                             read_radio_reg(pi,
19236                                            RADIO_2056_TX_LOFT_FINE_I |
19237                                            RADIO_2056_TX0);
19238                         pi->calibration_cache.txcal_radio_regs_2G[1] =
19239                             read_radio_reg(pi,
19240                                            RADIO_2056_TX_LOFT_FINE_Q |
19241                                            RADIO_2056_TX0);
19242                         pi->calibration_cache.txcal_radio_regs_2G[2] =
19243                             read_radio_reg(pi,
19244                                            RADIO_2056_TX_LOFT_FINE_I |
19245                                            RADIO_2056_TX1);
19246                         pi->calibration_cache.txcal_radio_regs_2G[3] =
19247                             read_radio_reg(pi,
19248                                            RADIO_2056_TX_LOFT_FINE_Q |
19249                                            RADIO_2056_TX1);
19250
19251                         pi->calibration_cache.txcal_radio_regs_2G[4] =
19252                             read_radio_reg(pi,
19253                                            RADIO_2056_TX_LOFT_COARSE_I |
19254                                            RADIO_2056_TX0);
19255                         pi->calibration_cache.txcal_radio_regs_2G[5] =
19256                             read_radio_reg(pi,
19257                                            RADIO_2056_TX_LOFT_COARSE_Q |
19258                                            RADIO_2056_TX0);
19259                         pi->calibration_cache.txcal_radio_regs_2G[6] =
19260                             read_radio_reg(pi,
19261                                            RADIO_2056_TX_LOFT_COARSE_I |
19262                                            RADIO_2056_TX1);
19263                         pi->calibration_cache.txcal_radio_regs_2G[7] =
19264                             read_radio_reg(pi,
19265                                            RADIO_2056_TX_LOFT_COARSE_Q |
19266                                            RADIO_2056_TX1);
19267                 } else {
19268                         pi->calibration_cache.txcal_radio_regs_2G[0] =
19269                             read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
19270                         pi->calibration_cache.txcal_radio_regs_2G[1] =
19271                             read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
19272                         pi->calibration_cache.txcal_radio_regs_2G[2] =
19273                             read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
19274                         pi->calibration_cache.txcal_radio_regs_2G[3] =
19275                             read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
19276                 }
19277
19278                 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
19279                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
19280         } else {
19281
19282                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
19283                                           &pi->calibration_cache.
19284                                           rxcal_coeffs_5G);
19285
19286                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19287                         txcal_radio_regs =
19288                             pi->calibration_cache.txcal_radio_regs_5G;
19289                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19290
19291                         pi->calibration_cache.txcal_radio_regs_5G[0] =
19292                             read_radio_reg(pi,
19293                                            RADIO_2056_TX_LOFT_FINE_I |
19294                                            RADIO_2056_TX0);
19295                         pi->calibration_cache.txcal_radio_regs_5G[1] =
19296                             read_radio_reg(pi,
19297                                            RADIO_2056_TX_LOFT_FINE_Q |
19298                                            RADIO_2056_TX0);
19299                         pi->calibration_cache.txcal_radio_regs_5G[2] =
19300                             read_radio_reg(pi,
19301                                            RADIO_2056_TX_LOFT_FINE_I |
19302                                            RADIO_2056_TX1);
19303                         pi->calibration_cache.txcal_radio_regs_5G[3] =
19304                             read_radio_reg(pi,
19305                                            RADIO_2056_TX_LOFT_FINE_Q |
19306                                            RADIO_2056_TX1);
19307
19308                         pi->calibration_cache.txcal_radio_regs_5G[4] =
19309                             read_radio_reg(pi,
19310                                            RADIO_2056_TX_LOFT_COARSE_I |
19311                                            RADIO_2056_TX0);
19312                         pi->calibration_cache.txcal_radio_regs_5G[5] =
19313                             read_radio_reg(pi,
19314                                            RADIO_2056_TX_LOFT_COARSE_Q |
19315                                            RADIO_2056_TX0);
19316                         pi->calibration_cache.txcal_radio_regs_5G[6] =
19317                             read_radio_reg(pi,
19318                                            RADIO_2056_TX_LOFT_COARSE_I |
19319                                            RADIO_2056_TX1);
19320                         pi->calibration_cache.txcal_radio_regs_5G[7] =
19321                             read_radio_reg(pi,
19322                                            RADIO_2056_TX_LOFT_COARSE_Q |
19323                                            RADIO_2056_TX1);
19324                 } else {
19325                         pi->calibration_cache.txcal_radio_regs_5G[0] =
19326                             read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
19327                         pi->calibration_cache.txcal_radio_regs_5G[1] =
19328                             read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
19329                         pi->calibration_cache.txcal_radio_regs_5G[2] =
19330                             read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
19331                         pi->calibration_cache.txcal_radio_regs_5G[3] =
19332                             read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
19333                 }
19334
19335                 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
19336                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
19337         }
19338         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19339                 for (coreNum = 0; coreNum <= 1; coreNum++) {
19340
19341                         txcal_radio_regs[2 * coreNum] =
19342                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19343                                             LOFT_FINE_I);
19344                         txcal_radio_regs[2 * coreNum + 1] =
19345                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19346                                             LOFT_FINE_Q);
19347
19348                         txcal_radio_regs[2 * coreNum + 4] =
19349                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19350                                             LOFT_COARSE_I);
19351                         txcal_radio_regs[2 * coreNum + 5] =
19352                             READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19353                                             LOFT_COARSE_Q);
19354                 }
19355         }
19356
19357         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
19358
19359         if (pi->phyhang_avoid)
19360                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19361 }
19362
19363 static void wlc_phy_restorecal_nphy(phy_info_t *pi)
19364 {
19365         u16 *loft_comp;
19366         u16 txcal_coeffs_bphy[4];
19367         u16 *tbl_ptr;
19368         int coreNum;
19369         u16 *txcal_radio_regs = NULL;
19370
19371         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19372                 if (pi->nphy_iqcal_chanspec_2G == 0)
19373                         return;
19374
19375                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
19376                 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
19377         } else {
19378                 if (pi->nphy_iqcal_chanspec_5G == 0)
19379                         return;
19380
19381                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
19382                 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
19383         }
19384
19385         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16,
19386                                  (void *)tbl_ptr);
19387
19388         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19389                 txcal_coeffs_bphy[0] = tbl_ptr[0];
19390                 txcal_coeffs_bphy[1] = tbl_ptr[1];
19391                 txcal_coeffs_bphy[2] = tbl_ptr[2];
19392                 txcal_coeffs_bphy[3] = tbl_ptr[3];
19393         } else {
19394                 txcal_coeffs_bphy[0] = 0;
19395                 txcal_coeffs_bphy[1] = 0;
19396                 txcal_coeffs_bphy[2] = 0;
19397                 txcal_coeffs_bphy[3] = 0;
19398         }
19399
19400         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
19401                                  txcal_coeffs_bphy);
19402
19403         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
19404
19405         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
19406
19407         if (NREV_LT(pi->pubpi.phy_rev, 2))
19408                 wlc_phy_tx_iq_war_nphy(pi);
19409
19410         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19411                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19412                         txcal_radio_regs =
19413                             pi->calibration_cache.txcal_radio_regs_2G;
19414                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19415
19416                         write_radio_reg(pi,
19417                                         RADIO_2056_TX_LOFT_FINE_I |
19418                                         RADIO_2056_TX0,
19419                                         pi->calibration_cache.
19420                                         txcal_radio_regs_2G[0]);
19421                         write_radio_reg(pi,
19422                                         RADIO_2056_TX_LOFT_FINE_Q |
19423                                         RADIO_2056_TX0,
19424                                         pi->calibration_cache.
19425                                         txcal_radio_regs_2G[1]);
19426                         write_radio_reg(pi,
19427                                         RADIO_2056_TX_LOFT_FINE_I |
19428                                         RADIO_2056_TX1,
19429                                         pi->calibration_cache.
19430                                         txcal_radio_regs_2G[2]);
19431                         write_radio_reg(pi,
19432                                         RADIO_2056_TX_LOFT_FINE_Q |
19433                                         RADIO_2056_TX1,
19434                                         pi->calibration_cache.
19435                                         txcal_radio_regs_2G[3]);
19436
19437                         write_radio_reg(pi,
19438                                         RADIO_2056_TX_LOFT_COARSE_I |
19439                                         RADIO_2056_TX0,
19440                                         pi->calibration_cache.
19441                                         txcal_radio_regs_2G[4]);
19442                         write_radio_reg(pi,
19443                                         RADIO_2056_TX_LOFT_COARSE_Q |
19444                                         RADIO_2056_TX0,
19445                                         pi->calibration_cache.
19446                                         txcal_radio_regs_2G[5]);
19447                         write_radio_reg(pi,
19448                                         RADIO_2056_TX_LOFT_COARSE_I |
19449                                         RADIO_2056_TX1,
19450                                         pi->calibration_cache.
19451                                         txcal_radio_regs_2G[6]);
19452                         write_radio_reg(pi,
19453                                         RADIO_2056_TX_LOFT_COARSE_Q |
19454                                         RADIO_2056_TX1,
19455                                         pi->calibration_cache.
19456                                         txcal_radio_regs_2G[7]);
19457                 } else {
19458                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
19459                                         pi->calibration_cache.
19460                                         txcal_radio_regs_2G[0]);
19461                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19462                                         pi->calibration_cache.
19463                                         txcal_radio_regs_2G[1]);
19464                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19465                                         pi->calibration_cache.
19466                                         txcal_radio_regs_2G[2]);
19467                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19468                                         pi->calibration_cache.
19469                                         txcal_radio_regs_2G[3]);
19470                 }
19471
19472                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19473                                           &pi->calibration_cache.
19474                                           rxcal_coeffs_2G);
19475         } else {
19476                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19477                         txcal_radio_regs =
19478                             pi->calibration_cache.txcal_radio_regs_5G;
19479                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19480
19481                         write_radio_reg(pi,
19482                                         RADIO_2056_TX_LOFT_FINE_I |
19483                                         RADIO_2056_TX0,
19484                                         pi->calibration_cache.
19485                                         txcal_radio_regs_5G[0]);
19486                         write_radio_reg(pi,
19487                                         RADIO_2056_TX_LOFT_FINE_Q |
19488                                         RADIO_2056_TX0,
19489                                         pi->calibration_cache.
19490                                         txcal_radio_regs_5G[1]);
19491                         write_radio_reg(pi,
19492                                         RADIO_2056_TX_LOFT_FINE_I |
19493                                         RADIO_2056_TX1,
19494                                         pi->calibration_cache.
19495                                         txcal_radio_regs_5G[2]);
19496                         write_radio_reg(pi,
19497                                         RADIO_2056_TX_LOFT_FINE_Q |
19498                                         RADIO_2056_TX1,
19499                                         pi->calibration_cache.
19500                                         txcal_radio_regs_5G[3]);
19501
19502                         write_radio_reg(pi,
19503                                         RADIO_2056_TX_LOFT_COARSE_I |
19504                                         RADIO_2056_TX0,
19505                                         pi->calibration_cache.
19506                                         txcal_radio_regs_5G[4]);
19507                         write_radio_reg(pi,
19508                                         RADIO_2056_TX_LOFT_COARSE_Q |
19509                                         RADIO_2056_TX0,
19510                                         pi->calibration_cache.
19511                                         txcal_radio_regs_5G[5]);
19512                         write_radio_reg(pi,
19513                                         RADIO_2056_TX_LOFT_COARSE_I |
19514                                         RADIO_2056_TX1,
19515                                         pi->calibration_cache.
19516                                         txcal_radio_regs_5G[6]);
19517                         write_radio_reg(pi,
19518                                         RADIO_2056_TX_LOFT_COARSE_Q |
19519                                         RADIO_2056_TX1,
19520                                         pi->calibration_cache.
19521                                         txcal_radio_regs_5G[7]);
19522                 } else {
19523                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
19524                                         pi->calibration_cache.
19525                                         txcal_radio_regs_5G[0]);
19526                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19527                                         pi->calibration_cache.
19528                                         txcal_radio_regs_5G[1]);
19529                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19530                                         pi->calibration_cache.
19531                                         txcal_radio_regs_5G[2]);
19532                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19533                                         pi->calibration_cache.
19534                                         txcal_radio_regs_5G[3]);
19535                 }
19536
19537                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19538                                           &pi->calibration_cache.
19539                                           rxcal_coeffs_5G);
19540         }
19541
19542         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19543                 for (coreNum = 0; coreNum <= 1; coreNum++) {
19544
19545                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19546                                          LOFT_FINE_I,
19547                                          txcal_radio_regs[2 * coreNum]);
19548                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19549                                          LOFT_FINE_Q,
19550                                          txcal_radio_regs[2 * coreNum + 1]);
19551
19552                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19553                                          LOFT_COARSE_I,
19554                                          txcal_radio_regs[2 * coreNum + 4]);
19555                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19556                                          LOFT_COARSE_Q,
19557                                          txcal_radio_regs[2 * coreNum + 5]);
19558                 }
19559         }
19560 }
19561
19562 void wlc_phy_antsel_init(wlc_phy_t *ppi, bool lut_init)
19563 {
19564         phy_info_t *pi = (phy_info_t *) ppi;
19565         u16 mask = 0xfc00;
19566         u32 mc = 0;
19567
19568         if (NREV_GE(pi->pubpi.phy_rev, 7))
19569                 return;
19570
19571         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19572                 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
19573
19574                 if (lut_init == false)
19575                         return;
19576
19577                 if (pi->srom_fem2g.antswctrllut == 0) {
19578                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19579                                                  1, 0x02, 16, &v0);
19580                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19581                                                  1, 0x03, 16, &v1);
19582                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19583                                                  1, 0x08, 16, &v2);
19584                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19585                                                  1, 0x0C, 16, &v3);
19586                 } else {
19587                         ASSERT(0);
19588                 }
19589
19590                 if (pi->srom_fem5g.antswctrllut == 0) {
19591                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19592                                                  1, 0x12, 16, &v0);
19593                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19594                                                  1, 0x13, 16, &v1);
19595                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19596                                                  1, 0x18, 16, &v2);
19597                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
19598                                                  1, 0x1C, 16, &v3);
19599                 } else {
19600                         ASSERT(0);
19601                 }
19602         } else {
19603
19604                 write_phy_reg(pi, 0xc8, 0x0);
19605                 write_phy_reg(pi, 0xc9, 0x0);
19606
19607                 si_gpiocontrol(pi->sh->sih, mask, mask, GPIO_DRV_PRIORITY);
19608
19609                 mc = R_REG(pi->sh->osh, &pi->regs->maccontrol);
19610                 mc &= ~MCTL_GPOUT_SEL_MASK;
19611                 W_REG(pi->sh->osh, &pi->regs->maccontrol, mc);
19612
19613                 OR_REG(pi->sh->osh, &pi->regs->psm_gpio_oe, mask);
19614
19615                 AND_REG(pi->sh->osh, &pi->regs->psm_gpio_out, ~mask);
19616
19617                 if (lut_init) {
19618                         write_phy_reg(pi, 0xf8, 0x02d8);
19619                         write_phy_reg(pi, 0xf9, 0x0301);
19620                         write_phy_reg(pi, 0xfa, 0x02d8);
19621                         write_phy_reg(pi, 0xfb, 0x0301);
19622                 }
19623         }
19624 }
19625
19626 u16 wlc_phy_classifier_nphy(phy_info_t *pi, u16 mask, u16 val)
19627 {
19628         u16 curr_ctl, new_ctl;
19629         bool suspended = false;
19630
19631         if (D11REV_IS(pi->sh->corerev, 16)) {
19632                 suspended =
19633                     (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC) ?
19634                     false : true;
19635                 if (!suspended)
19636                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
19637         }
19638
19639         curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
19640
19641         new_ctl = (curr_ctl & (~mask)) | (val & mask);
19642
19643         mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
19644
19645         if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
19646                 wlapi_enable_mac(pi->sh->physhim);
19647
19648         return new_ctl;
19649 }
19650
19651 static void wlc_phy_clip_det_nphy(phy_info_t *pi, u8 write, u16 *vals)
19652 {
19653
19654         if (write == 0) {
19655                 vals[0] = read_phy_reg(pi, 0x2c);
19656                 vals[1] = read_phy_reg(pi, 0x42);
19657         } else {
19658                 write_phy_reg(pi, 0x2c, vals[0]);
19659                 write_phy_reg(pi, 0x42, vals[1]);
19660         }
19661 }
19662
19663 void wlc_phy_force_rfseq_nphy(phy_info_t *pi, u8 cmd)
19664 {
19665         u16 trigger_mask, status_mask;
19666         u16 orig_RfseqCoreActv;
19667
19668         switch (cmd) {
19669         case NPHY_RFSEQ_RX2TX:
19670                 trigger_mask = NPHY_RfseqTrigger_rx2tx;
19671                 status_mask = NPHY_RfseqStatus_rx2tx;
19672                 break;
19673         case NPHY_RFSEQ_TX2RX:
19674                 trigger_mask = NPHY_RfseqTrigger_tx2rx;
19675                 status_mask = NPHY_RfseqStatus_tx2rx;
19676                 break;
19677         case NPHY_RFSEQ_RESET2RX:
19678                 trigger_mask = NPHY_RfseqTrigger_reset2rx;
19679                 status_mask = NPHY_RfseqStatus_reset2rx;
19680                 break;
19681         case NPHY_RFSEQ_UPDATEGAINH:
19682                 trigger_mask = NPHY_RfseqTrigger_updategainh;
19683                 status_mask = NPHY_RfseqStatus_updategainh;
19684                 break;
19685         case NPHY_RFSEQ_UPDATEGAINL:
19686                 trigger_mask = NPHY_RfseqTrigger_updategainl;
19687                 status_mask = NPHY_RfseqStatus_updategainl;
19688                 break;
19689         case NPHY_RFSEQ_UPDATEGAINU:
19690                 trigger_mask = NPHY_RfseqTrigger_updategainu;
19691                 status_mask = NPHY_RfseqStatus_updategainu;
19692                 break;
19693         default:
19694                 return;
19695         }
19696
19697         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
19698         or_phy_reg(pi, 0xa1,
19699                    (NPHY_RfseqMode_CoreActv_override |
19700                     NPHY_RfseqMode_Trigger_override));
19701         or_phy_reg(pi, 0xa3, trigger_mask);
19702         SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
19703         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
19704
19705         ASSERT((read_phy_reg(pi, 0xa4) & status_mask) == 0);
19706 }
19707
19708 static void
19709 wlc_phy_set_rfseq_nphy(phy_info_t *pi, u8 cmd, u8 *events, u8 *dlys,
19710                        u8 len)
19711 {
19712         u32 t1_offset, t2_offset;
19713         u8 ctr;
19714         u8 end_event =
19715             NREV_GE(pi->pubpi.phy_rev,
19716                     3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
19717         u8 end_dly = 1;
19718
19719         ASSERT(len <= 16);
19720
19721         if (pi->phyhang_avoid)
19722                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19723
19724         t1_offset = cmd << 4;
19725         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
19726                                  events);
19727         t2_offset = t1_offset + 0x080;
19728         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
19729                                  dlys);
19730
19731         for (ctr = len; ctr < 16; ctr++) {
19732                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19733                                          t1_offset + ctr, 8, &end_event);
19734                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19735                                          t2_offset + ctr, 8, &end_dly);
19736         }
19737
19738         if (pi->phyhang_avoid)
19739                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19740 }
19741
19742 static u16 wlc_phy_read_lpf_bw_ctl_nphy(phy_info_t *pi, u16 offset)
19743 {
19744         u16 lpf_bw_ctl_val = 0;
19745         u16 rx2tx_lpf_rc_lut_offset = 0;
19746
19747         if (offset == 0) {
19748                 if (CHSPEC_IS40(pi->radio_chanspec)) {
19749                         rx2tx_lpf_rc_lut_offset = 0x159;
19750                 } else {
19751                         rx2tx_lpf_rc_lut_offset = 0x154;
19752                 }
19753         } else {
19754                 rx2tx_lpf_rc_lut_offset = offset;
19755         }
19756         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
19757                                 (u32) rx2tx_lpf_rc_lut_offset, 16,
19758                                 &lpf_bw_ctl_val);
19759
19760         lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
19761
19762         return lpf_bw_ctl_val;
19763 }
19764
19765 static void
19766 wlc_phy_rfctrl_override_nphy_rev7(phy_info_t *pi, u16 field, u16 value,
19767                                   u8 core_mask, u8 off, u8 override_id)
19768 {
19769         u8 core_num;
19770         u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
19771         u8 val_shift = 0;
19772
19773         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19774                 en_mask = field;
19775                 for (core_num = 0; core_num < 2; core_num++) {
19776                         if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
19777
19778                                 switch (field) {
19779                                 case (0x1 << 2):
19780                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19781                                         val_addr = (core_num == 0) ? 0x7a :
19782                                             0x7d;
19783                                         val_mask = (0x1 << 1);
19784                                         val_shift = 1;
19785                                         break;
19786                                 case (0x1 << 3):
19787                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19788                                         val_addr = (core_num == 0) ? 0x7a :
19789                                             0x7d;
19790                                         val_mask = (0x1 << 2);
19791                                         val_shift = 2;
19792                                         break;
19793                                 case (0x1 << 4):
19794                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19795                                         val_addr = (core_num == 0) ? 0x7a :
19796                                             0x7d;
19797                                         val_mask = (0x1 << 4);
19798                                         val_shift = 4;
19799                                         break;
19800                                 case (0x1 << 5):
19801                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19802                                         val_addr = (core_num == 0) ? 0x7a :
19803                                             0x7d;
19804                                         val_mask = (0x1 << 5);
19805                                         val_shift = 5;
19806                                         break;
19807                                 case (0x1 << 6):
19808                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19809                                         val_addr = (core_num == 0) ? 0x7a :
19810                                             0x7d;
19811                                         val_mask = (0x1 << 6);
19812                                         val_shift = 6;
19813                                         break;
19814                                 case (0x1 << 7):
19815                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19816                                         val_addr = (core_num == 0) ? 0x7a :
19817                                             0x7d;
19818                                         val_mask = (0x1 << 7);
19819                                         val_shift = 7;
19820                                         break;
19821                                 case (0x1 << 10):
19822                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19823                                         val_addr = (core_num == 0) ? 0xf8 :
19824                                             0xfa;
19825                                         val_mask = (0x7 << 4);
19826                                         val_shift = 4;
19827                                         break;
19828                                 case (0x1 << 11):
19829                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19830                                         val_addr = (core_num == 0) ? 0x7b :
19831                                             0x7e;
19832                                         val_mask = (0xffff << 0);
19833                                         val_shift = 0;
19834                                         break;
19835                                 case (0x1 << 12):
19836                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19837                                         val_addr = (core_num == 0) ? 0x7c :
19838                                             0x7f;
19839                                         val_mask = (0xffff << 0);
19840                                         val_shift = 0;
19841                                         break;
19842                                 case (0x3 << 13):
19843                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19844                                         val_addr = (core_num == 0) ? 0x348 :
19845                                             0x349;
19846                                         val_mask = (0xff << 0);
19847                                         val_shift = 0;
19848                                         break;
19849                                 case (0x1 << 13):
19850                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
19851                                         val_addr = (core_num == 0) ? 0x348 :
19852                                             0x349;
19853                                         val_mask = (0xf << 0);
19854                                         val_shift = 0;
19855                                         break;
19856                                 default:
19857                                         addr = 0xffff;
19858                                         break;
19859                                 }
19860                         } else if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID1) {
19861
19862                                 switch (field) {
19863                                 case (0x1 << 1):
19864                                         en_addr = (core_num == 0) ? 0x342 :
19865                                             0x343;
19866                                         val_addr = (core_num == 0) ? 0x340 :
19867                                             0x341;
19868                                         val_mask = (0x1 << 1);
19869                                         val_shift = 1;
19870                                         break;
19871                                 case (0x1 << 3):
19872                                         en_addr = (core_num == 0) ? 0x342 :
19873                                             0x343;
19874                                         val_addr = (core_num == 0) ? 0x340 :
19875                                             0x341;
19876                                         val_mask = (0x1 << 3);
19877                                         val_shift = 3;
19878                                         break;
19879                                 case (0x1 << 5):
19880                                         en_addr = (core_num == 0) ? 0x342 :
19881                                             0x343;
19882                                         val_addr = (core_num == 0) ? 0x340 :
19883                                             0x341;
19884                                         val_mask = (0x1 << 5);
19885                                         val_shift = 5;
19886                                         break;
19887                                 case (0x1 << 4):
19888                                         en_addr = (core_num == 0) ? 0x342 :
19889                                             0x343;
19890                                         val_addr = (core_num == 0) ? 0x340 :
19891                                             0x341;
19892                                         val_mask = (0x1 << 4);
19893                                         val_shift = 4;
19894                                         break;
19895                                 case (0x1 << 2):
19896
19897                                         en_addr = (core_num == 0) ? 0x342 :
19898                                             0x343;
19899                                         val_addr = (core_num == 0) ? 0x340 :
19900                                             0x341;
19901                                         val_mask = (0x1 << 2);
19902                                         val_shift = 2;
19903                                         break;
19904                                 case (0x1 << 7):
19905
19906                                         en_addr = (core_num == 0) ? 0x342 :
19907                                             0x343;
19908                                         val_addr = (core_num == 0) ? 0x340 :
19909                                             0x341;
19910                                         val_mask = (0x7 << 8);
19911                                         val_shift = 8;
19912                                         break;
19913                                 case (0x1 << 11):
19914                                         en_addr = (core_num == 0) ? 0x342 :
19915                                             0x343;
19916                                         val_addr = (core_num == 0) ? 0x340 :
19917                                             0x341;
19918                                         val_mask = (0x1 << 14);
19919                                         val_shift = 14;
19920                                         break;
19921                                 case (0x1 << 10):
19922                                         en_addr = (core_num == 0) ? 0x342 :
19923                                             0x343;
19924                                         val_addr = (core_num == 0) ? 0x340 :
19925                                             0x341;
19926                                         val_mask = (0x1 << 13);
19927                                         val_shift = 13;
19928                                         break;
19929                                 case (0x1 << 9):
19930                                         en_addr = (core_num == 0) ? 0x342 :
19931                                             0x343;
19932                                         val_addr = (core_num == 0) ? 0x340 :
19933                                             0x341;
19934                                         val_mask = (0x1 << 12);
19935                                         val_shift = 12;
19936                                         break;
19937                                 case (0x1 << 8):
19938                                         en_addr = (core_num == 0) ? 0x342 :
19939                                             0x343;
19940                                         val_addr = (core_num == 0) ? 0x340 :
19941                                             0x341;
19942                                         val_mask = (0x1 << 11);
19943                                         val_shift = 11;
19944                                         break;
19945                                 case (0x1 << 6):
19946                                         en_addr = (core_num == 0) ? 0x342 :
19947                                             0x343;
19948                                         val_addr = (core_num == 0) ? 0x340 :
19949                                             0x341;
19950                                         val_mask = (0x1 << 6);
19951                                         val_shift = 6;
19952                                         break;
19953                                 case (0x1 << 0):
19954                                         en_addr = (core_num == 0) ? 0x342 :
19955                                             0x343;
19956                                         val_addr = (core_num == 0) ? 0x340 :
19957                                             0x341;
19958                                         val_mask = (0x1 << 0);
19959                                         val_shift = 0;
19960                                         break;
19961                                 default:
19962                                         addr = 0xffff;
19963                                         break;
19964                                 }
19965                         } else if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID2) {
19966
19967                                 switch (field) {
19968                                 case (0x1 << 3):
19969                                         en_addr = (core_num == 0) ? 0x346 :
19970                                             0x347;
19971                                         val_addr = (core_num == 0) ? 0x344 :
19972                                             0x345;
19973                                         val_mask = (0x1 << 3);
19974                                         val_shift = 3;
19975                                         break;
19976                                 case (0x1 << 1):
19977                                         en_addr = (core_num == 0) ? 0x346 :
19978                                             0x347;
19979                                         val_addr = (core_num == 0) ? 0x344 :
19980                                             0x345;
19981                                         val_mask = (0x1 << 1);
19982                                         val_shift = 1;
19983                                         break;
19984                                 case (0x1 << 0):
19985                                         en_addr = (core_num == 0) ? 0x346 :
19986                                             0x347;
19987                                         val_addr = (core_num == 0) ? 0x344 :
19988                                             0x345;
19989                                         val_mask = (0x1 << 0);
19990                                         val_shift = 0;
19991                                         break;
19992                                 case (0x1 << 2):
19993                                         en_addr = (core_num == 0) ? 0x346 :
19994                                             0x347;
19995                                         val_addr = (core_num == 0) ? 0x344 :
19996                                             0x345;
19997                                         val_mask = (0x1 << 2);
19998                                         val_shift = 2;
19999                                         break;
20000                                 case (0x1 << 4):
20001                                         en_addr = (core_num == 0) ? 0x346 :
20002                                             0x347;
20003                                         val_addr = (core_num == 0) ? 0x344 :
20004                                             0x345;
20005                                         val_mask = (0x1 << 4);
20006                                         val_shift = 4;
20007                                         break;
20008                                 default:
20009                                         addr = 0xffff;
20010                                         break;
20011                                 }
20012                         }
20013
20014                         if (off) {
20015                                 and_phy_reg(pi, en_addr, ~en_mask);
20016                                 and_phy_reg(pi, val_addr, ~val_mask);
20017                         } else {
20018
20019                                 if ((core_mask == 0)
20020                                     || (core_mask & (1 << core_num))) {
20021                                         or_phy_reg(pi, en_addr, en_mask);
20022
20023                                         if (addr != 0xffff) {
20024                                                 mod_phy_reg(pi, val_addr,
20025                                                             val_mask,
20026                                                             (value <<
20027                                                              val_shift));
20028                                         }
20029                                 }
20030                         }
20031                 }
20032         }
20033 }
20034
20035 static void
20036 wlc_phy_rfctrl_override_nphy(phy_info_t *pi, u16 field, u16 value,
20037                              u8 core_mask, u8 off)
20038 {
20039         u8 core_num;
20040         u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
20041             0, val_mask = 0;
20042         u8 shift = 0, val_shift = 0;
20043
20044         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
20045
20046                 en_mask = field;
20047                 for (core_num = 0; core_num < 2; core_num++) {
20048
20049                         switch (field) {
20050                         case (0x1 << 1):
20051                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20052                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20053                                 val_mask = (0x1 << 0);
20054                                 val_shift = 0;
20055                                 break;
20056                         case (0x1 << 2):
20057                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20058                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20059                                 val_mask = (0x1 << 1);
20060                                 val_shift = 1;
20061                                 break;
20062                         case (0x1 << 3):
20063                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20064                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20065                                 val_mask = (0x1 << 2);
20066                                 val_shift = 2;
20067                                 break;
20068                         case (0x1 << 4):
20069                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20070                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20071                                 val_mask = (0x1 << 4);
20072                                 val_shift = 4;
20073                                 break;
20074                         case (0x1 << 5):
20075                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20076                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20077                                 val_mask = (0x1 << 5);
20078                                 val_shift = 5;
20079                                 break;
20080                         case (0x1 << 6):
20081                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20082                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20083                                 val_mask = (0x1 << 6);
20084                                 val_shift = 6;
20085                                 break;
20086                         case (0x1 << 7):
20087                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20088                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20089                                 val_mask = (0x1 << 7);
20090                                 val_shift = 7;
20091                                 break;
20092                         case (0x1 << 8):
20093                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20094                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20095                                 val_mask = (0x7 << 8);
20096                                 val_shift = 8;
20097                                 break;
20098                         case (0x1 << 11):
20099                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20100                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
20101                                 val_mask = (0x7 << 13);
20102                                 val_shift = 13;
20103                                 break;
20104
20105                         case (0x1 << 9):
20106                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20107                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
20108                                 val_mask = (0x7 << 0);
20109                                 val_shift = 0;
20110                                 break;
20111
20112                         case (0x1 << 10):
20113                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20114                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
20115                                 val_mask = (0x7 << 4);
20116                                 val_shift = 4;
20117                                 break;
20118
20119                         case (0x1 << 12):
20120                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20121                                 val_addr = (core_num == 0) ? 0x7b : 0x7e;
20122                                 val_mask = (0xffff << 0);
20123                                 val_shift = 0;
20124                                 break;
20125                         case (0x1 << 13):
20126                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20127                                 val_addr = (core_num == 0) ? 0x7c : 0x7f;
20128                                 val_mask = (0xffff << 0);
20129                                 val_shift = 0;
20130                                 break;
20131                         case (0x1 << 14):
20132                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
20133                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
20134                                 val_mask = (0x3 << 6);
20135                                 val_shift = 6;
20136                                 break;
20137                         case (0x1 << 0):
20138                                 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
20139                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
20140                                 val_mask = (0x1 << 15);
20141                                 val_shift = 15;
20142                                 break;
20143                         default:
20144                                 addr = 0xffff;
20145                                 break;
20146                         }
20147
20148                         if (off) {
20149                                 and_phy_reg(pi, en_addr, ~en_mask);
20150                                 and_phy_reg(pi, val_addr, ~val_mask);
20151                         } else {
20152
20153                                 if ((core_mask == 0)
20154                                     || (core_mask & (1 << core_num))) {
20155                                         or_phy_reg(pi, en_addr, en_mask);
20156
20157                                         if (addr != 0xffff) {
20158                                                 mod_phy_reg(pi, val_addr,
20159                                                             val_mask,
20160                                                             (value <<
20161                                                              val_shift));
20162                                         }
20163                                 }
20164                         }
20165                 }
20166         } else {
20167
20168                 if (off) {
20169                         and_phy_reg(pi, 0xec, ~field);
20170                         value = 0x0;
20171                 } else {
20172                         or_phy_reg(pi, 0xec, field);
20173                 }
20174
20175                 for (core_num = 0; core_num < 2; core_num++) {
20176
20177                         switch (field) {
20178                         case (0x1 << 1):
20179                         case (0x1 << 9):
20180                         case (0x1 << 12):
20181                         case (0x1 << 13):
20182                         case (0x1 << 14):
20183                                 addr = 0x78;
20184
20185                                 core_mask = 0x1;
20186                                 break;
20187                         case (0x1 << 2):
20188                         case (0x1 << 3):
20189                         case (0x1 << 4):
20190                         case (0x1 << 5):
20191                         case (0x1 << 6):
20192                         case (0x1 << 7):
20193                         case (0x1 << 8):
20194                                 addr = (core_num == 0) ? 0x7a : 0x7d;
20195                                 break;
20196                         case (0x1 << 10):
20197                                 addr = (core_num == 0) ? 0x7b : 0x7e;
20198                                 break;
20199                         case (0x1 << 11):
20200                                 addr = (core_num == 0) ? 0x7c : 0x7f;
20201                                 break;
20202                         default:
20203                                 addr = 0xffff;
20204                         }
20205
20206                         switch (field) {
20207                         case (0x1 << 1):
20208                                 mask = (0x7 << 3);
20209                                 shift = 3;
20210                                 break;
20211                         case (0x1 << 9):
20212                                 mask = (0x1 << 2);
20213                                 shift = 2;
20214                                 break;
20215                         case (0x1 << 12):
20216                                 mask = (0x1 << 8);
20217                                 shift = 8;
20218                                 break;
20219                         case (0x1 << 13):
20220                                 mask = (0x1 << 9);
20221                                 shift = 9;
20222                                 break;
20223                         case (0x1 << 14):
20224                                 mask = (0xf << 12);
20225                                 shift = 12;
20226                                 break;
20227                         case (0x1 << 2):
20228                                 mask = (0x1 << 0);
20229                                 shift = 0;
20230                                 break;
20231                         case (0x1 << 3):
20232                                 mask = (0x1 << 1);
20233                                 shift = 1;
20234                                 break;
20235                         case (0x1 << 4):
20236                                 mask = (0x1 << 2);
20237                                 shift = 2;
20238                                 break;
20239                         case (0x1 << 5):
20240                                 mask = (0x3 << 4);
20241                                 shift = 4;
20242                                 break;
20243                         case (0x1 << 6):
20244                                 mask = (0x3 << 6);
20245                                 shift = 6;
20246                                 break;
20247                         case (0x1 << 7):
20248                                 mask = (0x1 << 8);
20249                                 shift = 8;
20250                                 break;
20251                         case (0x1 << 8):
20252                                 mask = (0x1 << 9);
20253                                 shift = 9;
20254                                 break;
20255                         case (0x1 << 10):
20256                                 mask = 0x1fff;
20257                                 shift = 0x0;
20258                                 break;
20259                         case (0x1 << 11):
20260                                 mask = 0x1fff;
20261                                 shift = 0x0;
20262                                 break;
20263                         default:
20264                                 mask = 0x0;
20265                                 shift = 0x0;
20266                                 break;
20267                         }
20268
20269                         if ((addr != 0xffff) && (core_mask & (1 << core_num))) {
20270                                 mod_phy_reg(pi, addr, mask, (value << shift));
20271                         }
20272                 }
20273
20274                 or_phy_reg(pi, 0xec, (0x1 << 0));
20275                 or_phy_reg(pi, 0x78, (0x1 << 0));
20276                 OSL_DELAY(1);
20277                 and_phy_reg(pi, 0xec, ~(0x1 << 0));
20278         }
20279 }
20280
20281 static void
20282 wlc_phy_rfctrl_override_1tomany_nphy(phy_info_t *pi, u16 cmd, u16 value,
20283                                      u8 core_mask, u8 off)
20284 {
20285         u16 rfmxgain = 0, lpfgain = 0;
20286         u16 tgain = 0;
20287
20288         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20289
20290                 switch (cmd) {
20291                 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
20292                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
20293                                                           value, core_mask, off,
20294                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20295                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), value,
20296                                                           core_mask, off,
20297                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20298                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), value,
20299                                                           core_mask, off,
20300                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20301                         break;
20302                 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
20303                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
20304                                                           value, core_mask, off,
20305                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20306                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20307                                                           core_mask, off,
20308                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20309                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), value,
20310                                                           core_mask, off,
20311                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20312                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20313                                                           core_mask, off,
20314                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20315                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0,
20316                                                           core_mask, off,
20317                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20318                         break;
20319                 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
20320                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
20321                                                           value, core_mask, off,
20322                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20323                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), value,
20324                                                           core_mask, off,
20325                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20326                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), value,
20327                                                           core_mask, off,
20328                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20329                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), value,
20330                                                           core_mask, off,
20331                                                           NPHY_REV7_RFCTRLOVERRIDE_ID2);
20332                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1,
20333                                                           core_mask, off,
20334                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
20335                         break;
20336                 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
20337                         rfmxgain = value & 0x000ff;
20338                         lpfgain = value & 0x0ff00;
20339                         lpfgain = lpfgain >> 8;
20340
20341                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
20342                                                           rfmxgain, core_mask,
20343                                                           off,
20344                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20345                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x3 << 13),
20346                                                           lpfgain, core_mask,
20347                                                           off,
20348                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20349                         break;
20350                 case NPHY_REV7_RfctrlOverride_cmd_txgain:
20351                         tgain = value & 0x7fff;
20352                         lpfgain = value & 0x8000;
20353                         lpfgain = lpfgain >> 14;
20354
20355                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
20356                                                           tgain, core_mask, off,
20357                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20358                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 13),
20359                                                           lpfgain, core_mask,
20360                                                           off,
20361                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
20362                         break;
20363                 }
20364         }
20365 }
20366
20367 static void
20368 wlc_phy_scale_offset_rssi_nphy(phy_info_t *pi, u16 scale, s8 offset,
20369                                u8 coresel, u8 rail, u8 rssi_type)
20370 {
20371         u16 valuetostuff;
20372
20373         offset = (offset > NPHY_RSSICAL_MAXREAD) ?
20374             NPHY_RSSICAL_MAXREAD : offset;
20375         offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
20376             -NPHY_RSSICAL_MAXREAD - 1 : offset;
20377
20378         valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
20379
20380         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20381              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20382             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20383                 write_phy_reg(pi, 0x1a6, valuetostuff);
20384         }
20385         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20386              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20387             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20388                 write_phy_reg(pi, 0x1ac, valuetostuff);
20389         }
20390         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20391              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20392             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20393                 write_phy_reg(pi, 0x1b2, valuetostuff);
20394         }
20395         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20396              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20397             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB)) {
20398                 write_phy_reg(pi, 0x1b8, valuetostuff);
20399         }
20400
20401         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20402              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20403             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20404                 write_phy_reg(pi, 0x1a4, valuetostuff);
20405         }
20406         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20407              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20408             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20409                 write_phy_reg(pi, 0x1aa, valuetostuff);
20410         }
20411         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20412              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20413             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20414                 write_phy_reg(pi, 0x1b0, valuetostuff);
20415         }
20416         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20417              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20418             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1)) {
20419                 write_phy_reg(pi, 0x1b6, valuetostuff);
20420         }
20421
20422         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20423              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20424             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20425                 write_phy_reg(pi, 0x1a5, valuetostuff);
20426         }
20427         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20428              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20429             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20430                 write_phy_reg(pi, 0x1ab, valuetostuff);
20431         }
20432         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20433              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20434             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20435                 write_phy_reg(pi, 0x1b1, valuetostuff);
20436         }
20437         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20438              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20439             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2)) {
20440                 write_phy_reg(pi, 0x1b7, valuetostuff);
20441         }
20442
20443         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20444              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20445             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20446                 write_phy_reg(pi, 0x1a7, valuetostuff);
20447         }
20448         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20449              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20450             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20451                 write_phy_reg(pi, 0x1ad, valuetostuff);
20452         }
20453         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20454              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20455             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20456                 write_phy_reg(pi, 0x1b3, valuetostuff);
20457         }
20458         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20459              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20460             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD)) {
20461                 write_phy_reg(pi, 0x1b9, valuetostuff);
20462         }
20463
20464         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20465              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20466             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20467                 write_phy_reg(pi, 0x1a8, valuetostuff);
20468         }
20469         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20470              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20471             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20472                 write_phy_reg(pi, 0x1ae, valuetostuff);
20473         }
20474         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20475              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20476             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20477                 write_phy_reg(pi, 0x1b4, valuetostuff);
20478         }
20479         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20480              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20481             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ)) {
20482                 write_phy_reg(pi, 0x1ba, valuetostuff);
20483         }
20484
20485         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20486              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20487             (rssi_type == NPHY_RSSI_SEL_TSSI_2G)) {
20488                 write_phy_reg(pi, 0x1a9, valuetostuff);
20489         }
20490         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20491              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20492             (rssi_type == NPHY_RSSI_SEL_TSSI_2G)) {
20493                 write_phy_reg(pi, 0x1b5, valuetostuff);
20494         }
20495
20496         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
20497              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20498             (rssi_type == NPHY_RSSI_SEL_TSSI_5G)) {
20499                 write_phy_reg(pi, 0x1af, valuetostuff);
20500         }
20501         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
20502              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
20503             (rssi_type == NPHY_RSSI_SEL_TSSI_5G)) {
20504                 write_phy_reg(pi, 0x1bb, valuetostuff);
20505         }
20506 }
20507
20508 void wlc_phy_rssisel_nphy(phy_info_t *pi, u8 core_code, u8 rssi_type)
20509 {
20510         u16 mask, val;
20511         u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
20512             startseq;
20513         u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
20514             rfctrlovr_trigger_val;
20515         u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
20516         u16 rfctrlcmd_val, rfctrlovr_val;
20517         u8 core;
20518
20519         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20520                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
20521                         mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
20522                         mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
20523
20524                         mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
20525                         mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
20526
20527                         mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
20528                         mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
20529
20530                         mask = (0x1 << 2) |
20531                             (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
20532                         mod_phy_reg(pi, 0xf9, mask, 0);
20533                         mod_phy_reg(pi, 0xfb, mask, 0);
20534
20535                 } else {
20536                         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20537                                 if (core_code == RADIO_MIMO_CORESEL_CORE1
20538                                     && core == PHY_CORE_1)
20539                                         continue;
20540                                 else if (core_code == RADIO_MIMO_CORESEL_CORE2
20541                                          && core == PHY_CORE_0)
20542                                         continue;
20543
20544                                 mod_phy_reg(pi, (core == PHY_CORE_0) ?
20545                                             0x8f : 0xa5, (0x1 << 9), 1 << 9);
20546
20547                                 if (rssi_type == NPHY_RSSI_SEL_W1 ||
20548                                     rssi_type == NPHY_RSSI_SEL_W2 ||
20549                                     rssi_type == NPHY_RSSI_SEL_NB) {
20550
20551                                         mod_phy_reg(pi,
20552                                                     (core ==
20553                                                      PHY_CORE_0) ? 0xa6 : 0xa7,
20554                                                     (0x3 << 8), 0);
20555
20556                                         mask = (0x1 << 2) |
20557                                             (0x1 << 3) |
20558                                             (0x1 << 4) | (0x1 << 5);
20559                                         mod_phy_reg(pi,
20560                                                     (core ==
20561                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
20562                                                     mask, 0);
20563
20564                                         if (rssi_type == NPHY_RSSI_SEL_W1) {
20565                                                 if (CHSPEC_IS5G
20566                                                     (pi->radio_chanspec)) {
20567                                                         mask = (0x1 << 2);
20568                                                         val = 1 << 2;
20569                                                 } else {
20570                                                         mask = (0x1 << 3);
20571                                                         val = 1 << 3;
20572                                                 }
20573                                         } else if (rssi_type ==
20574                                                    NPHY_RSSI_SEL_W2) {
20575                                                 mask = (0x1 << 4);
20576                                                 val = 1 << 4;
20577                                         } else {
20578                                                 mask = (0x1 << 5);
20579                                                 val = 1 << 5;
20580                                         }
20581                                         mod_phy_reg(pi,
20582                                                     (core ==
20583                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
20584                                                     mask, val);
20585
20586                                         mask = (0x1 << 5);
20587                                         val = 1 << 5;
20588                                         mod_phy_reg(pi, (core == PHY_CORE_0) ?
20589                                                     0xe5 : 0xe6, mask, val);
20590                                 } else {
20591                                         if (rssi_type == NPHY_RSSI_SEL_TBD) {
20592
20593                                                 mask = (0x3 << 8);
20594                                                 val = 1 << 8;
20595                                                 mod_phy_reg(pi,
20596                                                             (core ==
20597                                                              PHY_CORE_0) ? 0xa6
20598                                                             : 0xa7, mask, val);
20599                                                 mask = (0x3 << 10);
20600                                                 val = 1 << 10;
20601                                                 mod_phy_reg(pi,
20602                                                             (core ==
20603                                                              PHY_CORE_0) ? 0xa6
20604                                                             : 0xa7, mask, val);
20605                                         } else if (rssi_type ==
20606                                                    NPHY_RSSI_SEL_IQ) {
20607
20608                                                 mask = (0x3 << 8);
20609                                                 val = 2 << 8;
20610                                                 mod_phy_reg(pi,
20611                                                             (core ==
20612                                                              PHY_CORE_0) ? 0xa6
20613                                                             : 0xa7, mask, val);
20614                                                 mask = (0x3 << 10);
20615                                                 val = 2 << 10;
20616                                                 mod_phy_reg(pi,
20617                                                             (core ==
20618                                                              PHY_CORE_0) ? 0xa6
20619                                                             : 0xa7, mask, val);
20620                                         } else {
20621
20622                                                 mask = (0x3 << 8);
20623                                                 val = 3 << 8;
20624                                                 mod_phy_reg(pi,
20625                                                             (core ==
20626                                                              PHY_CORE_0) ? 0xa6
20627                                                             : 0xa7, mask, val);
20628                                                 mask = (0x3 << 10);
20629                                                 val = 3 << 10;
20630                                                 mod_phy_reg(pi,
20631                                                             (core ==
20632                                                              PHY_CORE_0) ? 0xa6
20633                                                             : 0xa7, mask, val);
20634
20635                                                 if (PHY_IPA(pi)) {
20636                                                         if (NREV_GE
20637                                                             (pi->pubpi.phy_rev,
20638                                                              7)) {
20639
20640                                                                 write_radio_reg
20641                                                                     (pi,
20642                                                                      ((core ==
20643                                                                        PHY_CORE_0)
20644                                                                       ?
20645                                                                       RADIO_2057_TX0_TX_SSI_MUX
20646                                                                       :
20647                                                                       RADIO_2057_TX1_TX_SSI_MUX),
20648                                                                      (CHSPEC_IS5G
20649                                                                       (pi->
20650                                                                        radio_chanspec)
20651                                                                       ? 0xc :
20652                                                                       0xe));
20653                                                         } else {
20654                                                                 write_radio_reg
20655                                                                     (pi,
20656                                                                      RADIO_2056_TX_TX_SSI_MUX
20657                                                                      |
20658                                                                      ((core ==
20659                                                                        PHY_CORE_0)
20660                                                                       ?
20661                                                                       RADIO_2056_TX0
20662                                                                       :
20663                                                                       RADIO_2056_TX1),
20664                                                                      (CHSPEC_IS5G
20665                                                                       (pi->
20666                                                                        radio_chanspec)
20667                                                                       ? 0xc :
20668                                                                       0xe));
20669                                                         }
20670                                                 } else {
20671
20672                                                         if (NREV_GE
20673                                                             (pi->pubpi.phy_rev,
20674                                                              7)) {
20675                                                                 write_radio_reg
20676                                                                     (pi,
20677                                                                      ((core ==
20678                                                                        PHY_CORE_0)
20679                                                                       ?
20680                                                                       RADIO_2057_TX0_TX_SSI_MUX
20681                                                                       :
20682                                                                       RADIO_2057_TX1_TX_SSI_MUX),
20683                                                                      0x11);
20684
20685                                                                 if (pi->pubpi.
20686                                                                     radioid ==
20687                                                                     BCM2057_ID)
20688                                                                         write_radio_reg
20689                                                                             (pi,
20690                                                                              RADIO_2057_IQTEST_SEL_PU,
20691                                                                              0x1);
20692
20693                                                         } else {
20694                                                                 write_radio_reg
20695                                                                     (pi,
20696                                                                      RADIO_2056_TX_TX_SSI_MUX
20697                                                                      |
20698                                                                      ((core ==
20699                                                                        PHY_CORE_0)
20700                                                                       ?
20701                                                                       RADIO_2056_TX0
20702                                                                       :
20703                                                                       RADIO_2056_TX1),
20704                                                                      0x11);
20705                                                         }
20706                                                 }
20707
20708                                                 afectrlovr_rssi_val = 1 << 9;
20709                                                 mod_phy_reg(pi,
20710                                                             (core ==
20711                                                              PHY_CORE_0) ? 0x8f
20712                                                             : 0xa5, (0x1 << 9),
20713                                                             afectrlovr_rssi_val);
20714                                         }
20715                                 }
20716                         }
20717                 }
20718         } else {
20719
20720                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20721                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20722                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20723
20724                         val = 0x0;
20725                 } else if (rssi_type == NPHY_RSSI_SEL_TBD) {
20726
20727                         val = 0x1;
20728                 } else if (rssi_type == NPHY_RSSI_SEL_IQ) {
20729
20730                         val = 0x2;
20731                 } else {
20732
20733                         val = 0x3;
20734                 }
20735                 mask = ((0x3 << 12) | (0x3 << 14));
20736                 val = (val << 12) | (val << 14);
20737                 mod_phy_reg(pi, 0xa6, mask, val);
20738                 mod_phy_reg(pi, 0xa7, mask, val);
20739
20740                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20741                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20742                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20743                         if (rssi_type == NPHY_RSSI_SEL_W1) {
20744                                 val = 0x1;
20745                         }
20746                         if (rssi_type == NPHY_RSSI_SEL_W2) {
20747                                 val = 0x2;
20748                         }
20749                         if (rssi_type == NPHY_RSSI_SEL_NB) {
20750                                 val = 0x3;
20751                         }
20752                         mask = (0x3 << 4);
20753                         val = (val << 4);
20754                         mod_phy_reg(pi, 0x7a, mask, val);
20755                         mod_phy_reg(pi, 0x7d, mask, val);
20756                 }
20757
20758                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
20759                         afectrlovr_rssi_val = 0;
20760                         rfctrlcmd_rxen_val = 0;
20761                         rfctrlcmd_coresel_val = 0;
20762                         rfctrlovr_rssi_val = 0;
20763                         rfctrlovr_rxen_val = 0;
20764                         rfctrlovr_coresel_val = 0;
20765                         rfctrlovr_trigger_val = 0;
20766                         startseq = 0;
20767                 } else {
20768                         afectrlovr_rssi_val = 1;
20769                         rfctrlcmd_rxen_val = 1;
20770                         rfctrlcmd_coresel_val = core_code;
20771                         rfctrlovr_rssi_val = 1;
20772                         rfctrlovr_rxen_val = 1;
20773                         rfctrlovr_coresel_val = 1;
20774                         rfctrlovr_trigger_val = 1;
20775                         startseq = 1;
20776                 }
20777
20778                 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
20779                 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
20780                                        12) | (afectrlovr_rssi_val << 13);
20781                 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
20782                             afectrlovr_rssi_val);
20783
20784                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
20785                     (rssi_type == NPHY_RSSI_SEL_W2) ||
20786                     (rssi_type == NPHY_RSSI_SEL_NB)) {
20787                         rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
20788                         rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
20789                             (rfctrlcmd_coresel_val << 3);
20790
20791                         rfctrlovr_mask = ((0x1 << 5) |
20792                                           (0x1 << 12) |
20793                                           (0x1 << 1) | (0x1 << 0));
20794                         rfctrlovr_val = (rfctrlovr_rssi_val <<
20795                                          5) |
20796                             (rfctrlovr_rxen_val << 12) |
20797                             (rfctrlovr_coresel_val << 1) |
20798                             (rfctrlovr_trigger_val << 0);
20799
20800                         mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
20801                         mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
20802
20803                         mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
20804                         OSL_DELAY(20);
20805
20806                         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
20807                 }
20808         }
20809 }
20810
20811 int
20812 wlc_phy_poll_rssi_nphy(phy_info_t *pi, u8 rssi_type, s32 *rssi_buf,
20813                        u8 nsamps)
20814 {
20815         s16 rssi0, rssi1;
20816         u16 afectrlCore1_save = 0;
20817         u16 afectrlCore2_save = 0;
20818         u16 afectrlOverride1_save = 0;
20819         u16 afectrlOverride2_save = 0;
20820         u16 rfctrlOverrideAux0_save = 0;
20821         u16 rfctrlOverrideAux1_save = 0;
20822         u16 rfctrlMiscReg1_save = 0;
20823         u16 rfctrlMiscReg2_save = 0;
20824         u16 rfctrlcmd_save = 0;
20825         u16 rfctrloverride_save = 0;
20826         u16 rfctrlrssiothers1_save = 0;
20827         u16 rfctrlrssiothers2_save = 0;
20828         s8 tmp_buf[4];
20829         u8 ctr = 0, samp = 0;
20830         s32 rssi_out_val;
20831         u16 gpiosel_orig;
20832
20833         afectrlCore1_save = read_phy_reg(pi, 0xa6);
20834         afectrlCore2_save = read_phy_reg(pi, 0xa7);
20835         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20836                 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
20837                 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
20838                 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
20839                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
20840                 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
20841                 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
20842         } else {
20843                 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
20844                 rfctrlcmd_save = read_phy_reg(pi, 0x78);
20845                 rfctrloverride_save = read_phy_reg(pi, 0xec);
20846                 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
20847                 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
20848         }
20849
20850         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
20851
20852         gpiosel_orig = read_phy_reg(pi, 0xca);
20853         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20854                 write_phy_reg(pi, 0xca, 5);
20855         }
20856
20857         for (ctr = 0; ctr < 4; ctr++) {
20858                 rssi_buf[ctr] = 0;
20859         }
20860
20861         for (samp = 0; samp < nsamps; samp++) {
20862                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20863                         rssi0 = read_phy_reg(pi, 0x1c9);
20864                         rssi1 = read_phy_reg(pi, 0x1ca);
20865                 } else {
20866                         rssi0 = read_phy_reg(pi, 0x219);
20867                         rssi1 = read_phy_reg(pi, 0x21a);
20868                 }
20869
20870                 ctr = 0;
20871                 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
20872                 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
20873                 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
20874                 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
20875
20876                 for (ctr = 0; ctr < 4; ctr++) {
20877                         rssi_buf[ctr] += tmp_buf[ctr];
20878                 }
20879
20880         }
20881
20882         rssi_out_val = rssi_buf[3] & 0xff;
20883         rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
20884         rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
20885         rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
20886
20887         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
20888                 write_phy_reg(pi, 0xca, gpiosel_orig);
20889         }
20890
20891         write_phy_reg(pi, 0xa6, afectrlCore1_save);
20892         write_phy_reg(pi, 0xa7, afectrlCore2_save);
20893         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20894                 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
20895                 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
20896                 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
20897                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
20898                 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
20899                 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
20900         } else {
20901                 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
20902                 write_phy_reg(pi, 0x78, rfctrlcmd_save);
20903                 write_phy_reg(pi, 0xec, rfctrloverride_save);
20904                 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
20905                 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
20906         }
20907
20908         return rssi_out_val;
20909 }
20910
20911 s16 wlc_phy_tempsense_nphy(phy_info_t *pi)
20912 {
20913         u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
20914         u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
20915         u16 pwrdet_rxtx_core1_save;
20916         u16 pwrdet_rxtx_core2_save;
20917         u16 afectrlCore1_save;
20918         u16 afectrlCore2_save;
20919         u16 afectrlOverride_save;
20920         u16 afectrlOverride2_save;
20921         u16 pd_pll_ts_save;
20922         u16 gpioSel_save;
20923         s32 radio_temp[4];
20924         s32 radio_temp2[4];
20925         u16 syn_tempprocsense_save;
20926         s16 offset = 0;
20927
20928         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20929                 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
20930                 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
20931                 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
20932                 s32 auxADC_Vl;
20933                 u16 RfctrlOverride5_save, RfctrlOverride6_save;
20934                 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
20935                 u16 RSSIMultCoef0QPowerDet_save;
20936                 u16 tempsense_Rcal;
20937
20938                 syn_tempprocsense_save =
20939                     read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
20940
20941                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
20942                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
20943                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
20944                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
20945                 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
20946                 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
20947                 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
20948                 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
20949                 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
20950
20951                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
20952                                         &auxADC_Vmid_save);
20953                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
20954                                         &auxADC_Av_save);
20955                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
20956                                         &auxADC_rssi_ctrlL_save);
20957                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
20958                                         &auxADC_rssi_ctrlH_save);
20959
20960                 write_phy_reg(pi, 0x1ae, 0x0);
20961
20962                 auxADC_rssi_ctrlL = 0x0;
20963                 auxADC_rssi_ctrlH = 0x20;
20964                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
20965                                          &auxADC_rssi_ctrlL);
20966                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
20967                                          &auxADC_rssi_ctrlH);
20968
20969                 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
20970
20971                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
20972                                 tempsense_Rcal | 0x01);
20973
20974                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
20975                                                   1, 0, 0,
20976                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
20977                 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
20978                 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
20979                 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
20980                 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
20981
20982                 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
20983                 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
20984                 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
20985                 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
20986                 OSL_DELAY(5);
20987                 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
20988                 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
20989                 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
20990                 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
20991                 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
20992                 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
20993                 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
20994                 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
20995                 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
20996                 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
20997
20998                 auxADC_Vmid = 0xA3;
20999                 auxADC_Av = 0x0;
21000                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21001                                          &auxADC_Vmid);
21002                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21003                                          &auxADC_Av);
21004
21005                 OSL_DELAY(3);
21006
21007                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21008                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21009                                 tempsense_Rcal | 0x03);
21010
21011                 OSL_DELAY(5);
21012                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21013
21014                 auxADC_Av = 0x7;
21015                 if (radio_temp[1] + radio_temp2[1] < -30) {
21016                         auxADC_Vmid = 0x45;
21017                         auxADC_Vl = 263;
21018                 } else if (radio_temp[1] + radio_temp2[1] < -9) {
21019                         auxADC_Vmid = 0x200;
21020                         auxADC_Vl = 467;
21021                 } else if (radio_temp[1] + radio_temp2[1] < 11) {
21022                         auxADC_Vmid = 0x266;
21023                         auxADC_Vl = 634;
21024                 } else {
21025                         auxADC_Vmid = 0x2D5;
21026                         auxADC_Vl = 816;
21027                 }
21028
21029                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21030                                          &auxADC_Vmid);
21031                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21032                                          &auxADC_Av);
21033
21034                 OSL_DELAY(3);
21035
21036                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21037                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21038                                 tempsense_Rcal | 0x01);
21039
21040                 OSL_DELAY(5);
21041                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21042
21043                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
21044                                 syn_tempprocsense_save);
21045
21046                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21047                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21048                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
21049                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21050                 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
21051                 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
21052                 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
21053                 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
21054                 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
21055
21056                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21057                                          &auxADC_Vmid_save);
21058                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21059                                          &auxADC_Av_save);
21060                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
21061                                          &auxADC_rssi_ctrlL_save);
21062                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
21063                                          &auxADC_rssi_ctrlH_save);
21064
21065                 if (CHIPID(pi->sh->chip) == BCM5357_CHIP_ID) {
21066                         radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
21067                                          + 88 * (auxADC_Vl) - 27111 +
21068                                          128) / 256;
21069                 } else if (CHIPID(pi->sh->chip) == BCM43236_CHIP_ID) {
21070                         radio_temp[0] = (198 * (radio_temp[1] + radio_temp2[1])
21071                                          + 91 * (auxADC_Vl) - 27243 +
21072                                          128) / 256;
21073                 } else {
21074                         radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
21075                                          + 82 * (auxADC_Vl) - 28861 +
21076                                          128) / 256;
21077                 }
21078
21079                 offset = (s16) pi->phy_tempsense_offset;
21080
21081         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21082                 syn_tempprocsense_save =
21083                     read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
21084
21085                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21086                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21087                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
21088                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21089                 gpioSel_save = read_phy_reg(pi, 0xca);
21090
21091                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
21092
21093                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21094                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21095                 } else {
21096                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
21097                 }
21098
21099                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21100                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21101                         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
21102                 } else {
21103                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
21104                 }
21105
21106                 radio_temp[0] =
21107                     (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
21108
21109                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
21110                                 syn_tempprocsense_save);
21111
21112                 write_phy_reg(pi, 0xca, gpioSel_save);
21113                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21114                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21115                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
21116                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21117
21118                 offset = (s16) pi->phy_tempsense_offset;
21119         } else {
21120
21121                 pwrdet_rxtx_core1_save =
21122                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
21123                 pwrdet_rxtx_core2_save =
21124                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
21125                 core1_txrf_iqcal1_save =
21126                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
21127                 core1_txrf_iqcal2_save =
21128                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
21129                 core2_txrf_iqcal1_save =
21130                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
21131                 core2_txrf_iqcal2_save =
21132                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
21133                 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
21134
21135                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21136                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21137                 afectrlOverride_save = read_phy_reg(pi, 0xa5);
21138                 gpioSel_save = read_phy_reg(pi, 0xca);
21139
21140                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
21141                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
21142                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
21143                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
21144                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
21145                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
21146                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
21147
21148                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21149                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21150
21151                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
21152                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21153
21154                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
21155                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
21156
21157                 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
21158                 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
21159                 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
21160                 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
21161
21162                 radio_temp[0] =
21163                     (radio_temp[0] + radio_temp[1] + radio_temp[2] +
21164                      radio_temp[3]);
21165
21166                 radio_temp[0] =
21167                     (radio_temp[0] + (8 * 32)) * (950 - 350) / 63 + (350 * 8);
21168
21169                 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
21170
21171                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
21172                                 pwrdet_rxtx_core1_save);
21173                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
21174                                 pwrdet_rxtx_core2_save);
21175                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
21176                                 core1_txrf_iqcal1_save);
21177                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
21178                                 core2_txrf_iqcal1_save);
21179                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
21180                                 core1_txrf_iqcal2_save);
21181                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
21182                                 core2_txrf_iqcal2_save);
21183                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
21184
21185                 write_phy_reg(pi, 0xca, gpioSel_save);
21186                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21187                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21188                 write_phy_reg(pi, 0xa5, afectrlOverride_save);
21189         }
21190
21191         return (s16) radio_temp[0] + offset;
21192 }
21193
21194 static void
21195 wlc_phy_set_rssi_2055_vcm(phy_info_t *pi, u8 rssi_type, u8 *vcm_buf)
21196 {
21197         u8 core;
21198
21199         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21200                 if (rssi_type == NPHY_RSSI_SEL_NB) {
21201                         if (core == PHY_CORE_0) {
21202                                 mod_radio_reg(pi,
21203                                               RADIO_2055_CORE1_B0_NBRSSI_VCM,
21204                                               RADIO_2055_NBRSSI_VCM_I_MASK,
21205                                               vcm_buf[2 *
21206                                                       core] <<
21207                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
21208                                 mod_radio_reg(pi,
21209                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
21210                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
21211                                               vcm_buf[2 * core +
21212                                                       1] <<
21213                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
21214                         } else {
21215                                 mod_radio_reg(pi,
21216                                               RADIO_2055_CORE2_B0_NBRSSI_VCM,
21217                                               RADIO_2055_NBRSSI_VCM_I_MASK,
21218                                               vcm_buf[2 *
21219                                                       core] <<
21220                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
21221                                 mod_radio_reg(pi,
21222                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
21223                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
21224                                               vcm_buf[2 * core +
21225                                                       1] <<
21226                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
21227                         }
21228                 } else {
21229
21230                         if (core == PHY_CORE_0) {
21231                                 mod_radio_reg(pi,
21232                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
21233                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
21234                                               vcm_buf[2 *
21235                                                       core] <<
21236                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
21237                         } else {
21238                                 mod_radio_reg(pi,
21239                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
21240                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
21241                                               vcm_buf[2 *
21242                                                       core] <<
21243                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
21244                         }
21245                 }
21246         }
21247 }
21248
21249 void wlc_phy_rssi_cal_nphy(phy_info_t *pi)
21250 {
21251         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21252
21253                 wlc_phy_rssi_cal_nphy_rev3(pi);
21254         } else {
21255                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
21256                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
21257                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
21258         }
21259 }
21260
21261 static void wlc_phy_rssi_cal_nphy_rev2(phy_info_t *pi, u8 rssi_type)
21262 {
21263         s32 target_code;
21264         u16 classif_state;
21265         u16 clip_state[2];
21266         u16 rssi_ctrl_state[2], pd_state[2];
21267         u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
21268         u16 rfctrlintc_override_val;
21269         u16 clip_off[] = { 0xffff, 0xffff };
21270         u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
21271         u8 vcm, min_vcm, vcm_tmp[4];
21272         u8 vcm_final[4] = { 0, 0, 0, 0 };
21273         u8 result_idx, ctr;
21274         s32 poll_results[4][4] = {
21275                 {0, 0, 0, 0},
21276                 {0, 0, 0, 0},
21277                 {0, 0, 0, 0},
21278                 {0, 0, 0, 0}
21279         };
21280         s32 poll_miniq[4][2] = {
21281                 {0, 0},
21282                 {0, 0},
21283                 {0, 0},
21284                 {0, 0}
21285         };
21286         s32 min_d, curr_d;
21287         s32 fine_digital_offset[4];
21288         s32 poll_results_min[4] = { 0, 0, 0, 0 };
21289         s32 min_poll;
21290
21291         switch (rssi_type) {
21292         case NPHY_RSSI_SEL_NB:
21293                 target_code = NPHY_RSSICAL_NB_TARGET;
21294                 break;
21295         case NPHY_RSSI_SEL_W1:
21296                 target_code = NPHY_RSSICAL_W1_TARGET;
21297                 break;
21298         case NPHY_RSSI_SEL_W2:
21299                 target_code = NPHY_RSSICAL_W2_TARGET;
21300                 break;
21301         default:
21302                 return;
21303                 break;
21304         }
21305
21306         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
21307         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
21308         wlc_phy_clip_det_nphy(pi, 0, clip_state);
21309         wlc_phy_clip_det_nphy(pi, 1, clip_off);
21310
21311         rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
21312         rfctrlintc_override_val =
21313             CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
21314
21315         rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
21316         rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
21317         write_phy_reg(pi, 0x91, rfctrlintc_override_val);
21318         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
21319
21320         rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
21321         rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
21322         write_phy_reg(pi, 0x92, rfctrlintc_override_val);
21323         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
21324
21325         pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
21326             RADIO_2055_WBRSSI_G2_PD;
21327         pd_state[0] =
21328             read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
21329         pd_state[1] =
21330             read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
21331         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
21332         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
21333         rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
21334             RADIO_2055_WBRSSI_G2_SEL;
21335         rssi_ctrl_state[0] =
21336             read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
21337         rssi_ctrl_state[1] =
21338             read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
21339         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
21340
21341         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
21342                                        NPHY_RAIL_I, rssi_type);
21343         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
21344                                        NPHY_RAIL_Q, rssi_type);
21345
21346         for (vcm = 0; vcm < 4; vcm++) {
21347
21348                 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
21349                 if (rssi_type != NPHY_RSSI_SEL_W2) {
21350                         wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
21351                 }
21352
21353                 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
21354                                        NPHY_RSSICAL_NPOLL);
21355
21356                 if ((rssi_type == NPHY_RSSI_SEL_W1)
21357                     || (rssi_type == NPHY_RSSI_SEL_W2)) {
21358                         for (ctr = 0; ctr < 2; ctr++) {
21359                                 poll_miniq[vcm][ctr] =
21360                                     min(poll_results[vcm][ctr * 2 + 0],
21361                                         poll_results[vcm][ctr * 2 + 1]);
21362                         }
21363                 }
21364         }
21365
21366         for (result_idx = 0; result_idx < 4; result_idx++) {
21367                 min_d = NPHY_RSSICAL_MAXD;
21368                 min_vcm = 0;
21369                 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
21370                 for (vcm = 0; vcm < 4; vcm++) {
21371                         curr_d = ABS(((rssi_type == NPHY_RSSI_SEL_NB) ?
21372                                       poll_results[vcm][result_idx] :
21373                                       poll_miniq[vcm][result_idx / 2]) -
21374                                      (target_code * NPHY_RSSICAL_NPOLL));
21375                         if (curr_d < min_d) {
21376                                 min_d = curr_d;
21377                                 min_vcm = vcm;
21378                         }
21379                         if (poll_results[vcm][result_idx] < min_poll) {
21380                                 min_poll = poll_results[vcm][result_idx];
21381                         }
21382                 }
21383                 vcm_final[result_idx] = min_vcm;
21384                 poll_results_min[result_idx] = min_poll;
21385         }
21386
21387         if (rssi_type != NPHY_RSSI_SEL_W2) {
21388                 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
21389         }
21390
21391         for (result_idx = 0; result_idx < 4; result_idx++) {
21392                 fine_digital_offset[result_idx] =
21393                     (target_code * NPHY_RSSICAL_NPOLL) -
21394                     poll_results[vcm_final[result_idx]][result_idx];
21395                 if (fine_digital_offset[result_idx] < 0) {
21396                         fine_digital_offset[result_idx] =
21397                             ABS(fine_digital_offset[result_idx]);
21398                         fine_digital_offset[result_idx] +=
21399                             (NPHY_RSSICAL_NPOLL / 2);
21400                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
21401                         fine_digital_offset[result_idx] =
21402                             -fine_digital_offset[result_idx];
21403                 } else {
21404                         fine_digital_offset[result_idx] +=
21405                             (NPHY_RSSICAL_NPOLL / 2);
21406                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
21407                 }
21408
21409                 if (poll_results_min[result_idx] ==
21410                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL) {
21411                         fine_digital_offset[result_idx] =
21412                             (target_code - NPHY_RSSICAL_MAXREAD - 1);
21413                 }
21414
21415                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
21416                                                (s8)
21417                                                fine_digital_offset[result_idx],
21418                                                (result_idx / 2 ==
21419                                                 0) ? RADIO_MIMO_CORESEL_CORE1 :
21420                                                RADIO_MIMO_CORESEL_CORE2,
21421                                                (result_idx % 2 ==
21422                                                 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
21423                                                rssi_type);
21424         }
21425
21426         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
21427         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
21428         if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL) {
21429                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21430                                      NPHY_RSSI_SEL_NB);
21431         } else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL) {
21432                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21433                                      NPHY_RSSI_SEL_W1);
21434         } else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G2_SEL) {
21435                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21436                                      NPHY_RSSI_SEL_W2);
21437         } else {
21438                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
21439                                      NPHY_RSSI_SEL_W2);
21440         }
21441         if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL) {
21442                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21443                                      NPHY_RSSI_SEL_NB);
21444         } else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL) {
21445                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21446                                      NPHY_RSSI_SEL_W1);
21447         } else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G2_SEL) {
21448                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21449                                      NPHY_RSSI_SEL_W2);
21450         } else {
21451                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
21452                                      NPHY_RSSI_SEL_W2);
21453         }
21454
21455         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
21456
21457         write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
21458         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
21459         write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
21460         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
21461
21462         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
21463         wlc_phy_clip_det_nphy(pi, 1, clip_state);
21464
21465         wlc_phy_resetcca_nphy(pi);
21466 }
21467
21468 int BCMFASTPATH
21469 wlc_phy_rssi_compute_nphy(phy_info_t *pi, wlc_d11rxhdr_t *wlc_rxh)
21470 {
21471         d11rxhdr_t *rxh = &wlc_rxh->rxhdr;
21472         s16 rxpwr, rxpwr0, rxpwr1;
21473         s16 phyRx0_l, phyRx2_l;
21474
21475         rxpwr = 0;
21476         rxpwr0 = ltoh16(rxh->PhyRxStatus_1) & PRXS1_nphy_PWR0_MASK;
21477         rxpwr1 = (ltoh16(rxh->PhyRxStatus_1) & PRXS1_nphy_PWR1_MASK) >> 8;
21478
21479         if (rxpwr0 > 127)
21480                 rxpwr0 -= 256;
21481         if (rxpwr1 > 127)
21482                 rxpwr1 -= 256;
21483
21484         phyRx0_l = ltoh16(rxh->PhyRxStatus_0) & 0x00ff;
21485         phyRx2_l = ltoh16(rxh->PhyRxStatus_2) & 0x00ff;
21486         if (phyRx2_l > 127)
21487                 phyRx2_l -= 256;
21488
21489         if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
21490                 rxpwr0 = rxpwr1;
21491                 rxpwr1 = phyRx2_l;
21492         }
21493
21494         wlc_rxh->rxpwr[0] = (s8) rxpwr0;
21495         wlc_rxh->rxpwr[1] = (s8) rxpwr1;
21496         wlc_rxh->do_rssi_ma = 0;
21497
21498         if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
21499                 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
21500         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
21501                 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
21502         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
21503                 rxpwr = (rxpwr0 + rxpwr1) >> 1;
21504         else
21505                 ASSERT(0);
21506
21507         return rxpwr;
21508 }
21509
21510 static void
21511 wlc_phy_rfctrlintc_override_nphy(phy_info_t *pi, u8 field, u16 value,
21512                                  u8 core_code)
21513 {
21514         u16 mask;
21515         u16 val;
21516         u8 core;
21517
21518         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21519                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21520                         if (core_code == RADIO_MIMO_CORESEL_CORE1
21521                             && core == PHY_CORE_1)
21522                                 continue;
21523                         else if (core_code == RADIO_MIMO_CORESEL_CORE2
21524                                  && core == PHY_CORE_0)
21525                                 continue;
21526
21527                         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
21528
21529                                 mask = (0x1 << 10);
21530                                 val = 1 << 10;
21531                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
21532                                             0x92, mask, val);
21533                         }
21534
21535                         if (field == NPHY_RfctrlIntc_override_OFF) {
21536
21537                                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
21538                                               0x92, 0);
21539
21540                                 wlc_phy_force_rfseq_nphy(pi,
21541                                                          NPHY_RFSEQ_RESET2RX);
21542                         } else if (field == NPHY_RfctrlIntc_override_TRSW) {
21543
21544                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21545
21546                                         mask = (0x1 << 6) | (0x1 << 7);
21547
21548                                         val = value << 6;
21549                                         mod_phy_reg(pi,
21550                                                     (core ==
21551                                                      PHY_CORE_0) ? 0x91 : 0x92,
21552                                                     mask, val);
21553
21554                                         or_phy_reg(pi,
21555                                                    (core ==
21556                                                     PHY_CORE_0) ? 0x91 : 0x92,
21557                                                    (0x1 << 10));
21558
21559                                         and_phy_reg(pi, 0x2ff, (u16)
21560                                                     ~(0x3 << 14));
21561                                         or_phy_reg(pi, 0x2ff, (0x1 << 13));
21562                                         or_phy_reg(pi, 0x2ff, (0x1 << 0));
21563                                 } else {
21564
21565                                         mask = (0x1 << 6) |
21566                                             (0x1 << 7) |
21567                                             (0x1 << 8) | (0x1 << 9);
21568                                         val = value << 6;
21569                                         mod_phy_reg(pi,
21570                                                     (core ==
21571                                                      PHY_CORE_0) ? 0x91 : 0x92,
21572                                                     mask, val);
21573
21574                                         mask = (0x1 << 0);
21575                                         val = 1 << 0;
21576                                         mod_phy_reg(pi,
21577                                                     (core ==
21578                                                      PHY_CORE_0) ? 0xe7 : 0xec,
21579                                                     mask, val);
21580
21581                                         mask = (core == PHY_CORE_0) ? (0x1 << 0)
21582                                             : (0x1 << 1);
21583                                         val = 1 << ((core == PHY_CORE_0) ?
21584                                                     0 : 1);
21585                                         mod_phy_reg(pi, 0x78, mask, val);
21586
21587                                         SPINWAIT(((read_phy_reg(pi, 0x78) & val)
21588                                                   != 0), 10000);
21589                                         ASSERT((read_phy_reg(pi, 0x78) & val) ==
21590                                                0);
21591
21592                                         mask = (0x1 << 0);
21593                                         val = 0 << 0;
21594                                         mod_phy_reg(pi,
21595                                                     (core ==
21596                                                      PHY_CORE_0) ? 0xe7 : 0xec,
21597                                                     mask, val);
21598                                 }
21599                         } else if (field == NPHY_RfctrlIntc_override_PA) {
21600                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21601
21602                                         mask = (0x1 << 4) | (0x1 << 5);
21603
21604                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21605                                                 val = value << 5;
21606                                         } else {
21607                                                 val = value << 4;
21608                                         }
21609
21610                                         mod_phy_reg(pi,
21611                                                     (core ==
21612                                                      PHY_CORE_0) ? 0x91 : 0x92,
21613                                                     mask, val);
21614
21615                                         or_phy_reg(pi,
21616                                                    (core ==
21617                                                     PHY_CORE_0) ? 0x91 : 0x92,
21618                                                    (0x1 << 12));
21619                                 } else {
21620
21621                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21622                                                 mask = (0x1 << 5);
21623                                                 val = value << 5;
21624                                         } else {
21625                                                 mask = (0x1 << 4);
21626                                                 val = value << 4;
21627                                         }
21628                                         mod_phy_reg(pi,
21629                                                     (core ==
21630                                                      PHY_CORE_0) ? 0x91 : 0x92,
21631                                                     mask, val);
21632                                 }
21633                         } else if (field == NPHY_RfctrlIntc_override_EXT_LNA_PU) {
21634                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21635                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21636
21637                                                 mask = (0x1 << 0);
21638                                                 val = value << 0;
21639                                                 mod_phy_reg(pi,
21640                                                             (core ==
21641                                                              PHY_CORE_0) ? 0x91
21642                                                             : 0x92, mask, val);
21643
21644                                                 mask = (0x1 << 2);
21645                                                 mod_phy_reg(pi,
21646                                                             (core ==
21647                                                              PHY_CORE_0) ? 0x91
21648                                                             : 0x92, mask, 0);
21649                                         } else {
21650
21651                                                 mask = (0x1 << 2);
21652                                                 val = value << 2;
21653                                                 mod_phy_reg(pi,
21654                                                             (core ==
21655                                                              PHY_CORE_0) ? 0x91
21656                                                             : 0x92, mask, val);
21657
21658                                                 mask = (0x1 << 0);
21659                                                 mod_phy_reg(pi,
21660                                                             (core ==
21661                                                              PHY_CORE_0) ? 0x91
21662                                                             : 0x92, mask, 0);
21663                                         }
21664
21665                                         mask = (0x1 << 11);
21666                                         val = 1 << 11;
21667                                         mod_phy_reg(pi,
21668                                                     (core ==
21669                                                      PHY_CORE_0) ? 0x91 : 0x92,
21670                                                     mask, val);
21671                                 } else {
21672
21673                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21674                                                 mask = (0x1 << 0);
21675                                                 val = value << 0;
21676                                         } else {
21677                                                 mask = (0x1 << 2);
21678                                                 val = value << 2;
21679                                         }
21680                                         mod_phy_reg(pi,
21681                                                     (core ==
21682                                                      PHY_CORE_0) ? 0x91 : 0x92,
21683                                                     mask, val);
21684                                 }
21685                         } else if (field ==
21686                                    NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
21687                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21688                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21689
21690                                                 mask = (0x1 << 1);
21691                                                 val = value << 1;
21692                                                 mod_phy_reg(pi,
21693                                                             (core ==
21694                                                              PHY_CORE_0) ? 0x91
21695                                                             : 0x92, mask, val);
21696
21697                                                 mask = (0x1 << 3);
21698                                                 mod_phy_reg(pi,
21699                                                             (core ==
21700                                                              PHY_CORE_0) ? 0x91
21701                                                             : 0x92, mask, 0);
21702                                         } else {
21703
21704                                                 mask = (0x1 << 3);
21705                                                 val = value << 3;
21706                                                 mod_phy_reg(pi,
21707                                                             (core ==
21708                                                              PHY_CORE_0) ? 0x91
21709                                                             : 0x92, mask, val);
21710
21711                                                 mask = (0x1 << 1);
21712                                                 mod_phy_reg(pi,
21713                                                             (core ==
21714                                                              PHY_CORE_0) ? 0x91
21715                                                             : 0x92, mask, 0);
21716                                         }
21717
21718                                         mask = (0x1 << 11);
21719                                         val = 1 << 11;
21720                                         mod_phy_reg(pi,
21721                                                     (core ==
21722                                                      PHY_CORE_0) ? 0x91 : 0x92,
21723                                                     mask, val);
21724                                 } else {
21725
21726                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21727                                                 mask = (0x1 << 1);
21728                                                 val = value << 1;
21729                                         } else {
21730                                                 mask = (0x1 << 3);
21731                                                 val = value << 3;
21732                                         }
21733                                         mod_phy_reg(pi,
21734                                                     (core ==
21735                                                      PHY_CORE_0) ? 0x91 : 0x92,
21736                                                     mask, val);
21737                                 }
21738                         }
21739                 }
21740         } else {
21741                 return;
21742         }
21743 }
21744
21745 static void wlc_phy_rssi_cal_nphy_rev3(phy_info_t *pi)
21746 {
21747         u16 classif_state;
21748         u16 clip_state[2];
21749         u16 clip_off[] = { 0xffff, 0xffff };
21750         s32 target_code;
21751         u8 vcm, min_vcm;
21752         u8 vcm_final = 0;
21753         u8 result_idx;
21754         s32 poll_results[8][4] = {
21755                 {0, 0, 0, 0},
21756                 {0, 0, 0, 0},
21757                 {0, 0, 0, 0},
21758                 {0, 0, 0, 0},
21759                 {0, 0, 0, 0},
21760                 {0, 0, 0, 0},
21761                 {0, 0, 0, 0},
21762                 {0, 0, 0, 0}
21763         };
21764         s32 poll_result_core[4] = { 0, 0, 0, 0 };
21765         s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
21766         s32 fine_digital_offset[4];
21767         s32 poll_results_min[4] = { 0, 0, 0, 0 };
21768         s32 min_poll;
21769         u8 vcm_level_max;
21770         u8 core;
21771         u8 wb_cnt;
21772         u8 rssi_type;
21773         u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
21774         u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
21775         u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
21776         u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
21777         u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
21778         u16 NPHY_RfctrlCmd_save;
21779         u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
21780         u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
21781         u8 rxcore_state;
21782         u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
21783         u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
21784         u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
21785         u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
21786
21787         NPHY_REV7_RfctrlOverride3_save = NPHY_REV7_RfctrlOverride4_save =
21788             NPHY_REV7_RfctrlOverride5_save = NPHY_REV7_RfctrlOverride6_save =
21789             NPHY_REV7_RfctrlMiscReg3_save = NPHY_REV7_RfctrlMiscReg4_save =
21790             NPHY_REV7_RfctrlMiscReg5_save = NPHY_REV7_RfctrlMiscReg6_save = 0;
21791
21792         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
21793         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
21794         wlc_phy_clip_det_nphy(pi, 0, clip_state);
21795         wlc_phy_clip_det_nphy(pi, 1, clip_off);
21796
21797         NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
21798         NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
21799         NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
21800         NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
21801         NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
21802         NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
21803         NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
21804         NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
21805         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21806                 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
21807                 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
21808                 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
21809                 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
21810         }
21811         NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21812         NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21813         NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
21814         NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21815         NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21816         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21817                 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
21818                 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
21819                 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
21820                 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
21821         }
21822         NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
21823         NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
21824
21825         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
21826                                          RADIO_MIMO_CORESEL_ALLRXTX);
21827         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
21828                                          RADIO_MIMO_CORESEL_ALLRXTX);
21829
21830         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21831                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
21832                                                      NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
21833                                                      0, 0, 0);
21834         } else {
21835                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
21836         }
21837
21838         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21839                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
21840                                                      NPHY_REV7_RfctrlOverride_cmd_rx_pu,
21841                                                      1, 0, 0);
21842         } else {
21843                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
21844         }
21845
21846         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21847                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
21848                                                   1, 0, 0,
21849                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
21850                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
21851                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
21852         } else {
21853                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
21854                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
21855         }
21856
21857         if (CHSPEC_IS5G(pi->radio_chanspec)) {
21858                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21859                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
21860                                                           0, 0, 0,
21861                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21862                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 1, 0,
21863                                                           0,
21864                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21865                 } else {
21866                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
21867                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
21868                 }
21869
21870         } else {
21871                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21872                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4),
21873                                                           0, 0, 0,
21874                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21875                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 1, 0,
21876                                                           0,
21877                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
21878                 } else {
21879                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
21880                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
21881                 }
21882         }
21883
21884         rxcore_state = wlc_phy_rxcore_getstate_nphy((wlc_phy_t *) pi);
21885
21886         vcm_level_max = 8;
21887
21888         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21889
21890                 if ((rxcore_state & (1 << core)) == 0)
21891                         continue;
21892
21893                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
21894                                                core ==
21895                                                PHY_CORE_0 ?
21896                                                RADIO_MIMO_CORESEL_CORE1 :
21897                                                RADIO_MIMO_CORESEL_CORE2,
21898                                                NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
21899                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
21900                                                core ==
21901                                                PHY_CORE_0 ?
21902                                                RADIO_MIMO_CORESEL_CORE1 :
21903                                                RADIO_MIMO_CORESEL_CORE2,
21904                                                NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
21905
21906                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
21907                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21908
21909                                 mod_radio_reg(pi, (core == PHY_CORE_0) ?
21910                                               RADIO_2057_NB_MASTER_CORE0 :
21911                                               RADIO_2057_NB_MASTER_CORE1,
21912                                               RADIO_2057_VCM_MASK, vcm);
21913                         } else {
21914
21915                                 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
21916                                               ((core ==
21917                                                 PHY_CORE_0) ? RADIO_2056_RX0 :
21918                                                RADIO_2056_RX1),
21919                                               RADIO_2056_VCM_MASK,
21920                                               vcm << RADIO_2056_RSSI_VCM_SHIFT);
21921                         }
21922
21923                         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
21924                                                &poll_results[vcm][0],
21925                                                NPHY_RSSICAL_NPOLL);
21926                 }
21927
21928                 for (result_idx = 0; result_idx < 4; result_idx++) {
21929                         if ((core == result_idx / 2) && (result_idx % 2 == 0)) {
21930
21931                                 min_d = NPHY_RSSICAL_MAXD;
21932                                 min_vcm = 0;
21933                                 min_poll =
21934                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL +
21935                                     1;
21936                                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
21937                                         curr_d = poll_results[vcm][result_idx] *
21938                                             poll_results[vcm][result_idx] +
21939                                             poll_results[vcm][result_idx + 1] *
21940                                             poll_results[vcm][result_idx + 1];
21941                                         if (curr_d < min_d) {
21942                                                 min_d = curr_d;
21943                                                 min_vcm = vcm;
21944                                         }
21945                                         if (poll_results[vcm][result_idx] <
21946                                             min_poll) {
21947                                                 min_poll =
21948                                                     poll_results[vcm]
21949                                                     [result_idx];
21950                                         }
21951                                 }
21952                                 vcm_final = min_vcm;
21953                                 poll_results_min[result_idx] = min_poll;
21954                         }
21955                 }
21956
21957                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21958                         mod_radio_reg(pi, (core == PHY_CORE_0) ?
21959                                       RADIO_2057_NB_MASTER_CORE0 :
21960                                       RADIO_2057_NB_MASTER_CORE1,
21961                                       RADIO_2057_VCM_MASK, vcm_final);
21962                 } else {
21963                         mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
21964                                       ((core ==
21965                                         PHY_CORE_0) ? RADIO_2056_RX0 :
21966                                        RADIO_2056_RX1), RADIO_2056_VCM_MASK,
21967                                       vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
21968                 }
21969
21970                 for (result_idx = 0; result_idx < 4; result_idx++) {
21971                         if (core == result_idx / 2) {
21972                                 fine_digital_offset[result_idx] =
21973                                     (NPHY_RSSICAL_NB_TARGET *
21974                                      NPHY_RSSICAL_NPOLL) -
21975                                     poll_results[vcm_final][result_idx];
21976                                 if (fine_digital_offset[result_idx] < 0) {
21977                                         fine_digital_offset[result_idx] =
21978                                             ABS(fine_digital_offset
21979                                                 [result_idx]);
21980                                         fine_digital_offset[result_idx] +=
21981                                             (NPHY_RSSICAL_NPOLL / 2);
21982                                         fine_digital_offset[result_idx] /=
21983                                             NPHY_RSSICAL_NPOLL;
21984                                         fine_digital_offset[result_idx] =
21985                                             -fine_digital_offset[result_idx];
21986                                 } else {
21987                                         fine_digital_offset[result_idx] +=
21988                                             (NPHY_RSSICAL_NPOLL / 2);
21989                                         fine_digital_offset[result_idx] /=
21990                                             NPHY_RSSICAL_NPOLL;
21991                                 }
21992
21993                                 if (poll_results_min[result_idx] ==
21994                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL) {
21995                                         fine_digital_offset[result_idx] =
21996                                             (NPHY_RSSICAL_NB_TARGET -
21997                                              NPHY_RSSICAL_MAXREAD - 1);
21998                                 }
21999
22000                                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22001                                                                (s8)
22002                                                                fine_digital_offset
22003                                                                [result_idx],
22004                                                                (result_idx /
22005                                                                 2 ==
22006                                                                 0) ?
22007                                                                RADIO_MIMO_CORESEL_CORE1
22008                                                                :
22009                                                                RADIO_MIMO_CORESEL_CORE2,
22010                                                                (result_idx %
22011                                                                 2 ==
22012                                                                 0) ? NPHY_RAIL_I
22013                                                                : NPHY_RAIL_Q,
22014                                                                NPHY_RSSI_SEL_NB);
22015                         }
22016                 }
22017
22018         }
22019
22020         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22021
22022                 if ((rxcore_state & (1 << core)) == 0)
22023                         continue;
22024
22025                 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22026                         if (wb_cnt == 0) {
22027                                 rssi_type = NPHY_RSSI_SEL_W1;
22028                                 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22029                         } else {
22030                                 rssi_type = NPHY_RSSI_SEL_W2;
22031                                 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22032                         }
22033
22034                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22035                                                        core ==
22036                                                        PHY_CORE_0 ?
22037                                                        RADIO_MIMO_CORESEL_CORE1
22038                                                        :
22039                                                        RADIO_MIMO_CORESEL_CORE2,
22040                                                        NPHY_RAIL_I, rssi_type);
22041                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22042                                                        core ==
22043                                                        PHY_CORE_0 ?
22044                                                        RADIO_MIMO_CORESEL_CORE1
22045                                                        :
22046                                                        RADIO_MIMO_CORESEL_CORE2,
22047                                                        NPHY_RAIL_Q, rssi_type);
22048
22049                         wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22050                                                NPHY_RSSICAL_NPOLL);
22051
22052                         for (result_idx = 0; result_idx < 4; result_idx++) {
22053                                 if (core == result_idx / 2) {
22054                                         fine_digital_offset[result_idx] =
22055                                             (target_code * NPHY_RSSICAL_NPOLL) -
22056                                             poll_result_core[result_idx];
22057                                         if (fine_digital_offset[result_idx] < 0) {
22058                                                 fine_digital_offset[result_idx]
22059                                                     =
22060                                                     ABS(fine_digital_offset
22061                                                         [result_idx]);
22062                                                 fine_digital_offset[result_idx]
22063                                                     += (NPHY_RSSICAL_NPOLL / 2);
22064                                                 fine_digital_offset[result_idx]
22065                                                     /= NPHY_RSSICAL_NPOLL;
22066                                                 fine_digital_offset[result_idx]
22067                                                     =
22068                                                     -fine_digital_offset
22069                                                     [result_idx];
22070                                         } else {
22071                                                 fine_digital_offset[result_idx]
22072                                                     += (NPHY_RSSICAL_NPOLL / 2);
22073                                                 fine_digital_offset[result_idx]
22074                                                     /= NPHY_RSSICAL_NPOLL;
22075                                         }
22076
22077                                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22078                                                                        (s8)
22079                                                                        fine_digital_offset
22080                                                                        [core *
22081                                                                         2],
22082                                                                        (core ==
22083                                                                         PHY_CORE_0)
22084                                                                        ?
22085                                                                        RADIO_MIMO_CORESEL_CORE1
22086                                                                        :
22087                                                                        RADIO_MIMO_CORESEL_CORE2,
22088                                                                        (result_idx
22089                                                                         % 2 ==
22090                                                                         0) ?
22091                                                                        NPHY_RAIL_I
22092                                                                        :
22093                                                                        NPHY_RAIL_Q,
22094                                                                        rssi_type);
22095                                 }
22096                         }
22097
22098                 }
22099         }
22100
22101         write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22102         write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22103
22104         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22105
22106         mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22107         mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22108         mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22109
22110         mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22111         mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22112         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22113
22114         write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22115         write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22116         write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22117         write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22118         write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22119         write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22120         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22121                 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22122                 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22123                 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22124                 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22125         }
22126         write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22127         write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22128         write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22129         write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22130         write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22131         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22132                 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22133                 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22134                 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22135                 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22136         }
22137         write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22138         write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22139
22140         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22141                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22142                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22143                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22144                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22145                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22146                 } else {
22147                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22148                             read_radio_reg(pi,
22149                                            RADIO_2056_RX_RSSI_MISC |
22150                                            RADIO_2056_RX0);
22151                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22152                             read_radio_reg(pi,
22153                                            RADIO_2056_RX_RSSI_MISC |
22154                                            RADIO_2056_RX1);
22155                 }
22156
22157                 pi->rssical_cache.rssical_phyregs_2G[0] =
22158                     read_phy_reg(pi, 0x1a6);
22159                 pi->rssical_cache.rssical_phyregs_2G[1] =
22160                     read_phy_reg(pi, 0x1ac);
22161                 pi->rssical_cache.rssical_phyregs_2G[2] =
22162                     read_phy_reg(pi, 0x1b2);
22163                 pi->rssical_cache.rssical_phyregs_2G[3] =
22164                     read_phy_reg(pi, 0x1b8);
22165                 pi->rssical_cache.rssical_phyregs_2G[4] =
22166                     read_phy_reg(pi, 0x1a4);
22167                 pi->rssical_cache.rssical_phyregs_2G[5] =
22168                     read_phy_reg(pi, 0x1aa);
22169                 pi->rssical_cache.rssical_phyregs_2G[6] =
22170                     read_phy_reg(pi, 0x1b0);
22171                 pi->rssical_cache.rssical_phyregs_2G[7] =
22172                     read_phy_reg(pi, 0x1b6);
22173                 pi->rssical_cache.rssical_phyregs_2G[8] =
22174                     read_phy_reg(pi, 0x1a5);
22175                 pi->rssical_cache.rssical_phyregs_2G[9] =
22176                     read_phy_reg(pi, 0x1ab);
22177                 pi->rssical_cache.rssical_phyregs_2G[10] =
22178                     read_phy_reg(pi, 0x1b1);
22179                 pi->rssical_cache.rssical_phyregs_2G[11] =
22180                     read_phy_reg(pi, 0x1b7);
22181
22182                 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22183         } else {
22184                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22185                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22186                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22187                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22188                             read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22189                 } else {
22190                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22191                             read_radio_reg(pi,
22192                                            RADIO_2056_RX_RSSI_MISC |
22193                                            RADIO_2056_RX0);
22194                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22195                             read_radio_reg(pi,
22196                                            RADIO_2056_RX_RSSI_MISC |
22197                                            RADIO_2056_RX1);
22198                 }
22199
22200                 pi->rssical_cache.rssical_phyregs_5G[0] =
22201                     read_phy_reg(pi, 0x1a6);
22202                 pi->rssical_cache.rssical_phyregs_5G[1] =
22203                     read_phy_reg(pi, 0x1ac);
22204                 pi->rssical_cache.rssical_phyregs_5G[2] =
22205                     read_phy_reg(pi, 0x1b2);
22206                 pi->rssical_cache.rssical_phyregs_5G[3] =
22207                     read_phy_reg(pi, 0x1b8);
22208                 pi->rssical_cache.rssical_phyregs_5G[4] =
22209                     read_phy_reg(pi, 0x1a4);
22210                 pi->rssical_cache.rssical_phyregs_5G[5] =
22211                     read_phy_reg(pi, 0x1aa);
22212                 pi->rssical_cache.rssical_phyregs_5G[6] =
22213                     read_phy_reg(pi, 0x1b0);
22214                 pi->rssical_cache.rssical_phyregs_5G[7] =
22215                     read_phy_reg(pi, 0x1b6);
22216                 pi->rssical_cache.rssical_phyregs_5G[8] =
22217                     read_phy_reg(pi, 0x1a5);
22218                 pi->rssical_cache.rssical_phyregs_5G[9] =
22219                     read_phy_reg(pi, 0x1ab);
22220                 pi->rssical_cache.rssical_phyregs_5G[10] =
22221                     read_phy_reg(pi, 0x1b1);
22222                 pi->rssical_cache.rssical_phyregs_5G[11] =
22223                     read_phy_reg(pi, 0x1b7);
22224
22225                 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22226         }
22227
22228         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22229         wlc_phy_clip_det_nphy(pi, 1, clip_state);
22230 }
22231
22232 static void wlc_phy_restore_rssical_nphy(phy_info_t *pi)
22233 {
22234         ASSERT(NREV_GE(pi->pubpi.phy_rev, 3));
22235
22236         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22237                 if (pi->nphy_rssical_chanspec_2G == 0)
22238                         return;
22239
22240                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22241                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
22242                                       RADIO_2057_VCM_MASK,
22243                                       pi->rssical_cache.
22244                                       rssical_radio_regs_2G[0]);
22245                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
22246                                       RADIO_2057_VCM_MASK,
22247                                       pi->rssical_cache.
22248                                       rssical_radio_regs_2G[1]);
22249                 } else {
22250                         mod_radio_reg(pi,
22251                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
22252                                       RADIO_2056_VCM_MASK,
22253                                       pi->rssical_cache.
22254                                       rssical_radio_regs_2G[0]);
22255                         mod_radio_reg(pi,
22256                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
22257                                       RADIO_2056_VCM_MASK,
22258                                       pi->rssical_cache.
22259                                       rssical_radio_regs_2G[1]);
22260                 }
22261
22262                 write_phy_reg(pi, 0x1a6,
22263                               pi->rssical_cache.rssical_phyregs_2G[0]);
22264                 write_phy_reg(pi, 0x1ac,
22265                               pi->rssical_cache.rssical_phyregs_2G[1]);
22266                 write_phy_reg(pi, 0x1b2,
22267                               pi->rssical_cache.rssical_phyregs_2G[2]);
22268                 write_phy_reg(pi, 0x1b8,
22269                               pi->rssical_cache.rssical_phyregs_2G[3]);
22270                 write_phy_reg(pi, 0x1a4,
22271                               pi->rssical_cache.rssical_phyregs_2G[4]);
22272                 write_phy_reg(pi, 0x1aa,
22273                               pi->rssical_cache.rssical_phyregs_2G[5]);
22274                 write_phy_reg(pi, 0x1b0,
22275                               pi->rssical_cache.rssical_phyregs_2G[6]);
22276                 write_phy_reg(pi, 0x1b6,
22277                               pi->rssical_cache.rssical_phyregs_2G[7]);
22278                 write_phy_reg(pi, 0x1a5,
22279                               pi->rssical_cache.rssical_phyregs_2G[8]);
22280                 write_phy_reg(pi, 0x1ab,
22281                               pi->rssical_cache.rssical_phyregs_2G[9]);
22282                 write_phy_reg(pi, 0x1b1,
22283                               pi->rssical_cache.rssical_phyregs_2G[10]);
22284                 write_phy_reg(pi, 0x1b7,
22285                               pi->rssical_cache.rssical_phyregs_2G[11]);
22286
22287         } else {
22288                 if (pi->nphy_rssical_chanspec_5G == 0)
22289                         return;
22290
22291                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22292                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
22293                                       RADIO_2057_VCM_MASK,
22294                                       pi->rssical_cache.
22295                                       rssical_radio_regs_5G[0]);
22296                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
22297                                       RADIO_2057_VCM_MASK,
22298                                       pi->rssical_cache.
22299                                       rssical_radio_regs_5G[1]);
22300                 } else {
22301                         mod_radio_reg(pi,
22302                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
22303                                       RADIO_2056_VCM_MASK,
22304                                       pi->rssical_cache.
22305                                       rssical_radio_regs_5G[0]);
22306                         mod_radio_reg(pi,
22307                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
22308                                       RADIO_2056_VCM_MASK,
22309                                       pi->rssical_cache.
22310                                       rssical_radio_regs_5G[1]);
22311                 }
22312
22313                 write_phy_reg(pi, 0x1a6,
22314                               pi->rssical_cache.rssical_phyregs_5G[0]);
22315                 write_phy_reg(pi, 0x1ac,
22316                               pi->rssical_cache.rssical_phyregs_5G[1]);
22317                 write_phy_reg(pi, 0x1b2,
22318                               pi->rssical_cache.rssical_phyregs_5G[2]);
22319                 write_phy_reg(pi, 0x1b8,
22320                               pi->rssical_cache.rssical_phyregs_5G[3]);
22321                 write_phy_reg(pi, 0x1a4,
22322                               pi->rssical_cache.rssical_phyregs_5G[4]);
22323                 write_phy_reg(pi, 0x1aa,
22324                               pi->rssical_cache.rssical_phyregs_5G[5]);
22325                 write_phy_reg(pi, 0x1b0,
22326                               pi->rssical_cache.rssical_phyregs_5G[6]);
22327                 write_phy_reg(pi, 0x1b6,
22328                               pi->rssical_cache.rssical_phyregs_5G[7]);
22329                 write_phy_reg(pi, 0x1a5,
22330                               pi->rssical_cache.rssical_phyregs_5G[8]);
22331                 write_phy_reg(pi, 0x1ab,
22332                               pi->rssical_cache.rssical_phyregs_5G[9]);
22333                 write_phy_reg(pi, 0x1b1,
22334                               pi->rssical_cache.rssical_phyregs_5G[10]);
22335                 write_phy_reg(pi, 0x1b7,
22336                               pi->rssical_cache.rssical_phyregs_5G[11]);
22337         }
22338 }
22339
22340 static u16
22341 wlc_phy_gen_load_samples_nphy(phy_info_t *pi, u32 f_kHz, u16 max_val,
22342                               u8 dac_test_mode)
22343 {
22344         u8 phy_bw, is_phybw40;
22345         u16 num_samps, t, spur;
22346         fixed theta = 0, rot = 0;
22347         u32 tbl_len;
22348         cs32 *tone_buf = NULL;
22349
22350         is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
22351         phy_bw = (is_phybw40 == 1) ? 40 : 20;
22352         tbl_len = (phy_bw << 3);
22353
22354         if (dac_test_mode == 1) {
22355                 spur = read_phy_reg(pi, 0x01);
22356                 spur = (spur >> 15) & 1;
22357                 phy_bw = (spur == 1) ? 82 : 80;
22358                 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
22359
22360                 tbl_len = (phy_bw << 1);
22361         }
22362
22363         tone_buf = (cs32 *) MALLOC(pi->sh->osh, sizeof(cs32) * tbl_len);
22364         if (tone_buf == NULL) {
22365                 return 0;
22366         }
22367
22368         num_samps = (u16) tbl_len;
22369         rot = FIXED((f_kHz * 36) / phy_bw) / 100;
22370         theta = 0;
22371
22372         for (t = 0; t < num_samps; t++) {
22373
22374                 wlc_phy_cordic(theta, &tone_buf[t]);
22375
22376                 theta += rot;
22377
22378                 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
22379                 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
22380         }
22381
22382         wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
22383
22384         if (tone_buf != NULL)
22385                 MFREE(pi->sh->osh, tone_buf, sizeof(cs32) * tbl_len);
22386
22387         return num_samps;
22388 }
22389
22390 int
22391 wlc_phy_tx_tone_nphy(phy_info_t *pi, u32 f_kHz, u16 max_val,
22392                      u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
22393 {
22394         u16 num_samps;
22395         u16 loops = 0xffff;
22396         u16 wait = 0;
22397
22398         num_samps =
22399                 wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val, dac_test_mode);
22400         if (num_samps == 0) {
22401                 return BCME_ERROR;
22402         }
22403
22404         wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
22405                                 dac_test_mode, modify_bbmult);
22406
22407         return BCME_OK;
22408 }
22409
22410 static void
22411 wlc_phy_loadsampletable_nphy(phy_info_t *pi, cs32 *tone_buf,
22412                              u16 num_samps)
22413 {
22414         u16 t;
22415         u32 *data_buf = NULL;
22416
22417         data_buf = (u32 *) MALLOC(pi->sh->osh, sizeof(u32) * num_samps);
22418         if (data_buf == NULL) {
22419                 return;
22420         }
22421
22422         if (pi->phyhang_avoid)
22423                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22424
22425         for (t = 0; t < num_samps; t++) {
22426                 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
22427                     (((unsigned int)tone_buf[t].q) & 0x3ff);
22428         }
22429         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
22430                                  data_buf);
22431
22432         if (data_buf != NULL)
22433                 MFREE(pi->sh->osh, data_buf, sizeof(u32) * num_samps);
22434
22435         if (pi->phyhang_avoid)
22436                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22437 }
22438
22439 static void
22440 wlc_phy_runsamples_nphy(phy_info_t *pi, u16 num_samps, u16 loops,
22441                         u16 wait, u8 iqmode, u8 dac_test_mode,
22442                         bool modify_bbmult)
22443 {
22444         u16 bb_mult;
22445         u8 phy_bw, sample_cmd;
22446         u16 orig_RfseqCoreActv;
22447         u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
22448             lpf_bw_ctl_miscreg4;
22449
22450         if (pi->phyhang_avoid)
22451                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22452
22453         phy_bw = 20;
22454         if (CHSPEC_IS40(pi->radio_chanspec))
22455                 phy_bw = 40;
22456
22457         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22458
22459                 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
22460                 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
22461                 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
22462                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
22463                             (0x7 << 8);
22464                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
22465                             (0x7 << 8);
22466                 } else {
22467                         wlc_phy_rfctrl_override_nphy_rev7(pi,
22468                                                           (0x1 << 7),
22469                                                           wlc_phy_read_lpf_bw_ctl_nphy
22470                                                           (pi, 0), 0, 0,
22471                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
22472
22473                         pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
22474
22475                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
22476                             (0x7 << 8);
22477                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
22478                             (0x7 << 8);
22479                 }
22480         }
22481
22482         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
22483
22484                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22485                                         &bb_mult);
22486                 pi->nphy_bb_mult_save =
22487                     BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
22488         }
22489
22490         if (modify_bbmult) {
22491                 bb_mult = (phy_bw == 20) ? 100 : 71;
22492                 bb_mult = (bb_mult << 8) + bb_mult;
22493                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22494                                          &bb_mult);
22495         }
22496
22497         if (pi->phyhang_avoid)
22498                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22499
22500         write_phy_reg(pi, 0xc6, num_samps - 1);
22501
22502         if (loops != 0xffff) {
22503                 write_phy_reg(pi, 0xc4, loops - 1);
22504         } else {
22505                 write_phy_reg(pi, 0xc4, loops);
22506         }
22507         write_phy_reg(pi, 0xc5, wait);
22508
22509         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
22510         or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
22511         if (iqmode) {
22512
22513                 and_phy_reg(pi, 0xc2, 0x7FFF);
22514
22515                 or_phy_reg(pi, 0xc2, 0x8000);
22516         } else {
22517
22518                 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
22519                 write_phy_reg(pi, 0xc3, sample_cmd);
22520         }
22521
22522         SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
22523
22524         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
22525 }
22526
22527 void wlc_phy_stopplayback_nphy(phy_info_t *pi)
22528 {
22529         u16 playback_status;
22530         u16 bb_mult;
22531
22532         if (pi->phyhang_avoid)
22533                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
22534
22535         playback_status = read_phy_reg(pi, 0xc7);
22536         if (playback_status & 0x1) {
22537                 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
22538         } else if (playback_status & 0x2) {
22539
22540                 and_phy_reg(pi, 0xc2,
22541                             (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
22542         }
22543
22544         and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
22545
22546         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
22547
22548                 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
22549                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
22550                                          &bb_mult);
22551
22552                 pi->nphy_bb_mult_save = 0;
22553         }
22554
22555         if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
22556                 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
22557                         wlc_phy_rfctrl_override_nphy_rev7(pi,
22558                                                           (0x1 << 7),
22559                                                           0, 0, 1,
22560                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
22561                         pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
22562                 }
22563         }
22564
22565         if (pi->phyhang_avoid)
22566                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
22567 }
22568
22569 nphy_txgains_t wlc_phy_get_tx_gain_nphy(phy_info_t *pi)
22570 {
22571         u16 base_idx[2], curr_gain[2];
22572         u8 core_no;
22573         nphy_txgains_t target_gain;
22574         u32 *tx_pwrctrl_tbl = NULL;
22575
22576         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
22577                 if (pi->phyhang_avoid)
22578                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
22579
22580                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
22581                                         curr_gain);
22582
22583                 if (pi->phyhang_avoid)
22584                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
22585
22586                 for (core_no = 0; core_no < 2; core_no++) {
22587                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22588                                 target_gain.ipa[core_no] =
22589                                     curr_gain[core_no] & 0x0007;
22590                                 target_gain.pad[core_no] =
22591                                     ((curr_gain[core_no] & 0x00F8) >> 3);
22592                                 target_gain.pga[core_no] =
22593                                     ((curr_gain[core_no] & 0x0F00) >> 8);
22594                                 target_gain.txgm[core_no] =
22595                                     ((curr_gain[core_no] & 0x7000) >> 12);
22596                                 target_gain.txlpf[core_no] =
22597                                     ((curr_gain[core_no] & 0x8000) >> 15);
22598                         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22599                                 target_gain.ipa[core_no] =
22600                                     curr_gain[core_no] & 0x000F;
22601                                 target_gain.pad[core_no] =
22602                                     ((curr_gain[core_no] & 0x00F0) >> 4);
22603                                 target_gain.pga[core_no] =
22604                                     ((curr_gain[core_no] & 0x0F00) >> 8);
22605                                 target_gain.txgm[core_no] =
22606                                     ((curr_gain[core_no] & 0x7000) >> 12);
22607                         } else {
22608                                 target_gain.ipa[core_no] =
22609                                     curr_gain[core_no] & 0x0003;
22610                                 target_gain.pad[core_no] =
22611                                     ((curr_gain[core_no] & 0x000C) >> 2);
22612                                 target_gain.pga[core_no] =
22613                                     ((curr_gain[core_no] & 0x0070) >> 4);
22614                                 target_gain.txgm[core_no] =
22615                                     ((curr_gain[core_no] & 0x0380) >> 7);
22616                         }
22617                 }
22618         } else {
22619                 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
22620                 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
22621                 for (core_no = 0; core_no < 2; core_no++) {
22622                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22623                                 if (PHY_IPA(pi)) {
22624                                         tx_pwrctrl_tbl =
22625                                             wlc_phy_get_ipa_gaintbl_nphy(pi);
22626                                 } else {
22627                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22628                                                 if NREV_IS
22629                                                         (pi->pubpi.phy_rev, 3) {
22630                                                         tx_pwrctrl_tbl =
22631                                                             nphy_tpc_5GHz_txgain_rev3;
22632                                                 } else if NREV_IS
22633                                                         (pi->pubpi.phy_rev, 4) {
22634                                                         tx_pwrctrl_tbl =
22635                                                             (pi->srom_fem5g.
22636                                                              extpagain ==
22637                                                              3) ?
22638                                                             nphy_tpc_5GHz_txgain_HiPwrEPA
22639                                                             :
22640                                                             nphy_tpc_5GHz_txgain_rev4;
22641                                                 } else {
22642                                                         tx_pwrctrl_tbl =
22643                                                             nphy_tpc_5GHz_txgain_rev5;
22644                                                 }
22645                                         } else {
22646                                                 if (NREV_GE
22647                                                     (pi->pubpi.phy_rev, 7)) {
22648                                                         if (pi->pubpi.
22649                                                             radiorev == 3) {
22650                                                                 tx_pwrctrl_tbl =
22651                                                                     nphy_tpc_txgain_epa_2057rev3;
22652                                                         } else if (pi->pubpi.
22653                                                                    radiorev ==
22654                                                                    5) {
22655                                                                 tx_pwrctrl_tbl =
22656                                                                     nphy_tpc_txgain_epa_2057rev5;
22657                                                         }
22658
22659                                                 } else {
22660                                                         if (NREV_GE
22661                                                             (pi->pubpi.phy_rev,
22662                                                              5)
22663                                                             && (pi->srom_fem2g.
22664                                                                 extpagain ==
22665                                                                 3)) {
22666                                                                 tx_pwrctrl_tbl =
22667                                                                     nphy_tpc_txgain_HiPwrEPA;
22668                                                         } else {
22669                                                                 tx_pwrctrl_tbl =
22670                                                                     nphy_tpc_txgain_rev3;
22671                                                         }
22672                                                 }
22673                                         }
22674                                 }
22675                                 if NREV_GE
22676                                         (pi->pubpi.phy_rev, 7) {
22677                                         target_gain.ipa[core_no] =
22678                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22679                                              >> 16) & 0x7;
22680                                         target_gain.pad[core_no] =
22681                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22682                                              >> 19) & 0x1f;
22683                                         target_gain.pga[core_no] =
22684                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22685                                              >> 24) & 0xf;
22686                                         target_gain.txgm[core_no] =
22687                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22688                                              >> 28) & 0x7;
22689                                         target_gain.txlpf[core_no] =
22690                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22691                                              >> 31) & 0x1;
22692                                 } else {
22693                                         target_gain.ipa[core_no] =
22694                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22695                                              >> 16) & 0xf;
22696                                         target_gain.pad[core_no] =
22697                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22698                                              >> 20) & 0xf;
22699                                         target_gain.pga[core_no] =
22700                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22701                                              >> 24) & 0xf;
22702                                         target_gain.txgm[core_no] =
22703                                             (tx_pwrctrl_tbl[base_idx[core_no]]
22704                                              >> 28) & 0x7;
22705                                 }
22706                         } else {
22707                                 target_gain.ipa[core_no] =
22708                                     (nphy_tpc_txgain[base_idx[core_no]] >> 16) &
22709                                     0x3;
22710                                 target_gain.pad[core_no] =
22711                                     (nphy_tpc_txgain[base_idx[core_no]] >> 18) &
22712                                     0x3;
22713                                 target_gain.pga[core_no] =
22714                                     (nphy_tpc_txgain[base_idx[core_no]] >> 20) &
22715                                     0x7;
22716                                 target_gain.txgm[core_no] =
22717                                     (nphy_tpc_txgain[base_idx[core_no]] >> 23) &
22718                                     0x7;
22719                         }
22720                 }
22721         }
22722
22723         return target_gain;
22724 }
22725
22726 static void
22727 wlc_phy_iqcal_gainparams_nphy(phy_info_t *pi, u16 core_no,
22728                               nphy_txgains_t target_gain,
22729                               nphy_iqcal_params_t *params)
22730 {
22731         u8 k;
22732         int idx;
22733         u16 gain_index;
22734         u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
22735
22736         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22737                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22738                         params->txlpf = target_gain.txlpf[core_no];
22739                 }
22740                 params->txgm = target_gain.txgm[core_no];
22741                 params->pga = target_gain.pga[core_no];
22742                 params->pad = target_gain.pad[core_no];
22743                 params->ipa = target_gain.ipa[core_no];
22744                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22745                         params->cal_gain =
22746                             ((params->txlpf << 15) | (params->
22747                                                       txgm << 12) | (params->
22748                                                                      pga << 8) |
22749                              (params->pad << 3) | (params->ipa));
22750                 } else {
22751                         params->cal_gain =
22752                             ((params->txgm << 12) | (params->
22753                                                      pga << 8) | (params->
22754                                                                   pad << 4) |
22755                              (params->ipa));
22756                 }
22757                 params->ncorr[0] = 0x79;
22758                 params->ncorr[1] = 0x79;
22759                 params->ncorr[2] = 0x79;
22760                 params->ncorr[3] = 0x79;
22761                 params->ncorr[4] = 0x79;
22762         } else {
22763
22764                 gain_index = ((target_gain.pad[core_no] << 0) |
22765                               (target_gain.pga[core_no] << 4) | (target_gain.
22766                                                                  txgm[core_no]
22767                                                                  << 8));
22768
22769                 idx = -1;
22770                 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
22771                         if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
22772                             gain_index) {
22773                                 idx = k;
22774                                 break;
22775                         }
22776                 }
22777
22778                 ASSERT(idx != -1);
22779
22780                 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
22781                 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
22782                 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
22783                 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
22784                                     (params->pad << 2));
22785                 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
22786                 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
22787                 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
22788                 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
22789         }
22790 }
22791
22792 static void wlc_phy_txcal_radio_setup_nphy(phy_info_t *pi)
22793 {
22794         u16 jtag_core, core;
22795
22796         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22797
22798                 for (core = 0; core <= 1; core++) {
22799
22800                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
22801                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22802                                             TX_SSI_MASTER);
22803
22804                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
22805                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22806                                             IQCAL_VCM_HG);
22807
22808                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
22809                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22810                                             IQCAL_IDAC);
22811
22812                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
22813                             READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM);
22814
22815                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
22816
22817                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
22818                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22819                                             TX_SSI_MUX);
22820
22821                         if (pi->pubpi.radiorev != 5)
22822                                 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
22823                                     READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22824                                                     TSSIA);
22825
22826                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
22827                             READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
22828
22829                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
22830                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
22831                                             TSSI_MISC1);
22832
22833                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22834                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22835                                                  TX_SSI_MASTER, 0x0a);
22836                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22837                                                  IQCAL_VCM_HG, 0x43);
22838                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22839                                                  IQCAL_IDAC, 0x55);
22840                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22841                                                  TSSI_VCM, 0x00);
22842                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22843                                                  TSSIG, 0x00);
22844                                 if (pi->use_int_tx_iqlo_cal_nphy) {
22845                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22846                                                          core, TX_SSI_MUX, 0x4);
22847                                         if (!
22848                                             (pi->
22849                                              internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
22850
22851                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22852                                                                  TX, core,
22853                                                                  TSSIA, 0x31);
22854                                         } else {
22855
22856                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22857                                                                  TX, core,
22858                                                                  TSSIA, 0x21);
22859                                         }
22860                                 }
22861                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22862                                                  TSSI_MISC1, 0x00);
22863                         } else {
22864                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22865                                                  TX_SSI_MASTER, 0x06);
22866                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22867                                                  IQCAL_VCM_HG, 0x43);
22868                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22869                                                  IQCAL_IDAC, 0x55);
22870                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22871                                                  TSSI_VCM, 0x00);
22872
22873                                 if (pi->pubpi.radiorev != 5)
22874                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22875                                                          core, TSSIA, 0x00);
22876                                 if (pi->use_int_tx_iqlo_cal_nphy) {
22877                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
22878                                                          core, TX_SSI_MUX,
22879                                                          0x06);
22880                                         if (!
22881                                             (pi->
22882                                              internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
22883
22884                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22885                                                                  TX, core,
22886                                                                  TSSIG, 0x31);
22887                                         } else {
22888
22889                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
22890                                                                  TX, core,
22891                                                                  TSSIG, 0x21);
22892                                         }
22893                                 }
22894                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
22895                                                  TSSI_MISC1, 0x00);
22896                         }
22897                 }
22898         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22899
22900                 for (core = 0; core <= 1; core++) {
22901                         jtag_core =
22902                             (core ==
22903                              PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
22904
22905                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
22906                             read_radio_reg(pi,
22907                                            RADIO_2056_TX_TX_SSI_MASTER |
22908                                            jtag_core);
22909
22910                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
22911                             read_radio_reg(pi,
22912                                            RADIO_2056_TX_IQCAL_VCM_HG |
22913                                            jtag_core);
22914
22915                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
22916                             read_radio_reg(pi,
22917                                            RADIO_2056_TX_IQCAL_IDAC |
22918                                            jtag_core);
22919
22920                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
22921                             read_radio_reg(pi,
22922                                            RADIO_2056_TX_TSSI_VCM | jtag_core);
22923
22924                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
22925                             read_radio_reg(pi,
22926                                            RADIO_2056_TX_TX_AMP_DET |
22927                                            jtag_core);
22928
22929                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
22930                             read_radio_reg(pi,
22931                                            RADIO_2056_TX_TX_SSI_MUX |
22932                                            jtag_core);
22933
22934                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
22935                             read_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core);
22936
22937                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
22938                             read_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core);
22939
22940                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
22941                             read_radio_reg(pi,
22942                                            RADIO_2056_TX_TSSI_MISC1 |
22943                                            jtag_core);
22944
22945                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
22946                             read_radio_reg(pi,
22947                                            RADIO_2056_TX_TSSI_MISC2 |
22948                                            jtag_core);
22949
22950                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
22951                             read_radio_reg(pi,
22952                                            RADIO_2056_TX_TSSI_MISC3 |
22953                                            jtag_core);
22954
22955                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22956                                 write_radio_reg(pi,
22957                                                 RADIO_2056_TX_TX_SSI_MASTER |
22958                                                 jtag_core, 0x0a);
22959                                 write_radio_reg(pi,
22960                                                 RADIO_2056_TX_IQCAL_VCM_HG |
22961                                                 jtag_core, 0x40);
22962                                 write_radio_reg(pi,
22963                                                 RADIO_2056_TX_IQCAL_IDAC |
22964                                                 jtag_core, 0x55);
22965                                 write_radio_reg(pi,
22966                                                 RADIO_2056_TX_TSSI_VCM |
22967                                                 jtag_core, 0x00);
22968                                 write_radio_reg(pi,
22969                                                 RADIO_2056_TX_TX_AMP_DET |
22970                                                 jtag_core, 0x00);
22971
22972                                 if (PHY_IPA(pi)) {
22973                                         write_radio_reg(pi,
22974                                                         RADIO_2056_TX_TX_SSI_MUX
22975                                                         | jtag_core, 0x4);
22976                                         write_radio_reg(pi,
22977                                                         RADIO_2056_TX_TSSIA |
22978                                                         jtag_core, 0x1);
22979                                 } else {
22980                                         write_radio_reg(pi,
22981                                                         RADIO_2056_TX_TX_SSI_MUX
22982                                                         | jtag_core, 0x00);
22983                                         write_radio_reg(pi,
22984                                                         RADIO_2056_TX_TSSIA |
22985                                                         jtag_core, 0x2f);
22986                                 }
22987                                 write_radio_reg(pi,
22988                                                 RADIO_2056_TX_TSSIG | jtag_core,
22989                                                 0x00);
22990                                 write_radio_reg(pi,
22991                                                 RADIO_2056_TX_TSSI_MISC1 |
22992                                                 jtag_core, 0x00);
22993
22994                                 write_radio_reg(pi,
22995                                                 RADIO_2056_TX_TSSI_MISC2 |
22996                                                 jtag_core, 0x00);
22997                                 write_radio_reg(pi,
22998                                                 RADIO_2056_TX_TSSI_MISC3 |
22999                                                 jtag_core, 0x00);
23000                         } else {
23001                                 write_radio_reg(pi,
23002                                                 RADIO_2056_TX_TX_SSI_MASTER |
23003                                                 jtag_core, 0x06);
23004                                 write_radio_reg(pi,
23005                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23006                                                 jtag_core, 0x40);
23007                                 write_radio_reg(pi,
23008                                                 RADIO_2056_TX_IQCAL_IDAC |
23009                                                 jtag_core, 0x55);
23010                                 write_radio_reg(pi,
23011                                                 RADIO_2056_TX_TSSI_VCM |
23012                                                 jtag_core, 0x00);
23013                                 write_radio_reg(pi,
23014                                                 RADIO_2056_TX_TX_AMP_DET |
23015                                                 jtag_core, 0x00);
23016                                 write_radio_reg(pi,
23017                                                 RADIO_2056_TX_TSSIA | jtag_core,
23018                                                 0x00);
23019
23020                                 if (PHY_IPA(pi)) {
23021
23022                                         write_radio_reg(pi,
23023                                                         RADIO_2056_TX_TX_SSI_MUX
23024                                                         | jtag_core, 0x06);
23025                                         if (NREV_LT(pi->pubpi.phy_rev, 5)) {
23026
23027                                                 write_radio_reg(pi,
23028                                                                 RADIO_2056_TX_TSSIG
23029                                                                 | jtag_core,
23030                                                                 0x11);
23031                                         } else {
23032
23033                                                 write_radio_reg(pi,
23034                                                                 RADIO_2056_TX_TSSIG
23035                                                                 | jtag_core,
23036                                                                 0x1);
23037                                         }
23038                                 } else {
23039                                         write_radio_reg(pi,
23040                                                         RADIO_2056_TX_TX_SSI_MUX
23041                                                         | jtag_core, 0x00);
23042                                         write_radio_reg(pi,
23043                                                         RADIO_2056_TX_TSSIG |
23044                                                         jtag_core, 0x20);
23045                                 }
23046
23047                                 write_radio_reg(pi,
23048                                                 RADIO_2056_TX_TSSI_MISC1 |
23049                                                 jtag_core, 0x00);
23050                                 write_radio_reg(pi,
23051                                                 RADIO_2056_TX_TSSI_MISC2 |
23052                                                 jtag_core, 0x00);
23053                                 write_radio_reg(pi,
23054                                                 RADIO_2056_TX_TSSI_MISC3 |
23055                                                 jtag_core, 0x00);
23056                         }
23057                 }
23058         } else {
23059
23060                 pi->tx_rx_cal_radio_saveregs[0] =
23061                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23062                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23063                 pi->tx_rx_cal_radio_saveregs[1] =
23064                     read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23065                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23066
23067                 pi->tx_rx_cal_radio_saveregs[2] =
23068                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23069                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23070                 pi->tx_rx_cal_radio_saveregs[3] =
23071                     read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23072                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23073
23074                 pi->tx_rx_cal_radio_saveregs[4] =
23075                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23076                 pi->tx_rx_cal_radio_saveregs[5] =
23077                     read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23078
23079                 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23080                     0) {
23081
23082                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23083                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23084                 } else {
23085
23086                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23087                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23088                 }
23089
23090                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23091
23092                         or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23093                         or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23094                 } else {
23095
23096                         and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23097                         and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23098                 }
23099         }
23100 }
23101
23102 static void wlc_phy_txcal_radio_cleanup_nphy(phy_info_t *pi)
23103 {
23104         u16 jtag_core, core;
23105
23106         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23107                 for (core = 0; core <= 1; core++) {
23108
23109                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23110                                          TX_SSI_MASTER,
23111                                          pi->
23112                                          tx_rx_cal_radio_saveregs[(core * 11) +
23113                                                                   0]);
23114
23115                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23116                                          pi->
23117                                          tx_rx_cal_radio_saveregs[(core * 11) +
23118                                                                   1]);
23119
23120                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23121                                          pi->
23122                                          tx_rx_cal_radio_saveregs[(core * 11) +
23123                                                                   2]);
23124
23125                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23126                                          pi->
23127                                          tx_rx_cal_radio_saveregs[(core * 11) +
23128                                                                   3]);
23129
23130                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23131                                          pi->
23132                                          tx_rx_cal_radio_saveregs[(core * 11) +
23133                                                                   5]);
23134
23135                         if (pi->pubpi.radiorev != 5)
23136                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23137                                                  TSSIA,
23138                                                  pi->
23139                                                  tx_rx_cal_radio_saveregs[(core
23140                                                                            *
23141                                                                            11) +
23142                                                                           6]);
23143
23144                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23145                                          pi->
23146                                          tx_rx_cal_radio_saveregs[(core * 11) +
23147                                                                   7]);
23148
23149                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23150                                          pi->
23151                                          tx_rx_cal_radio_saveregs[(core * 11) +
23152                                                                   8]);
23153                 }
23154         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23155                 for (core = 0; core <= 1; core++) {
23156                         jtag_core =
23157                             (core ==
23158                              PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23159
23160                         write_radio_reg(pi,
23161                                         RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23162                                         pi->
23163                                         tx_rx_cal_radio_saveregs[(core * 11) +
23164                                                                  0]);
23165
23166                         write_radio_reg(pi,
23167                                         RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23168                                         pi->
23169                                         tx_rx_cal_radio_saveregs[(core * 11) +
23170                                                                  1]);
23171
23172                         write_radio_reg(pi,
23173                                         RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23174                                         pi->
23175                                         tx_rx_cal_radio_saveregs[(core * 11) +
23176                                                                  2]);
23177
23178                         write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23179                                         pi->
23180                                         tx_rx_cal_radio_saveregs[(core * 11) +
23181                                                                  3]);
23182
23183                         write_radio_reg(pi,
23184                                         RADIO_2056_TX_TX_AMP_DET | jtag_core,
23185                                         pi->
23186                                         tx_rx_cal_radio_saveregs[(core * 11) +
23187                                                                  4]);
23188
23189                         write_radio_reg(pi,
23190                                         RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23191                                         pi->
23192                                         tx_rx_cal_radio_saveregs[(core * 11) +
23193                                                                  5]);
23194
23195                         write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23196                                         pi->
23197                                         tx_rx_cal_radio_saveregs[(core * 11) +
23198                                                                  6]);
23199
23200                         write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23201                                         pi->
23202                                         tx_rx_cal_radio_saveregs[(core * 11) +
23203                                                                  7]);
23204
23205                         write_radio_reg(pi,
23206                                         RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23207                                         pi->
23208                                         tx_rx_cal_radio_saveregs[(core * 11) +
23209                                                                  8]);
23210
23211                         write_radio_reg(pi,
23212                                         RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23213                                         pi->
23214                                         tx_rx_cal_radio_saveregs[(core * 11) +
23215                                                                  9]);
23216
23217                         write_radio_reg(pi,
23218                                         RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23219                                         pi->
23220                                         tx_rx_cal_radio_saveregs[(core * 11) +
23221                                                                  10]);
23222                 }
23223         } else {
23224
23225                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23226                                 pi->tx_rx_cal_radio_saveregs[0]);
23227                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23228                                 pi->tx_rx_cal_radio_saveregs[1]);
23229                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23230                                 pi->tx_rx_cal_radio_saveregs[2]);
23231                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23232                                 pi->tx_rx_cal_radio_saveregs[3]);
23233                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23234                                 pi->tx_rx_cal_radio_saveregs[4]);
23235                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23236                                 pi->tx_rx_cal_radio_saveregs[5]);
23237         }
23238 }
23239
23240 static void wlc_phy_txcal_physetup_nphy(phy_info_t *pi)
23241 {
23242         u16 val, mask;
23243
23244         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23245                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23246                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23247
23248                 mask = ((0x3 << 8) | (0x3 << 10));
23249                 val = (0x2 << 8);
23250                 val |= (0x2 << 10);
23251                 mod_phy_reg(pi, 0xa6, mask, val);
23252                 mod_phy_reg(pi, 0xa7, mask, val);
23253
23254                 val = read_phy_reg(pi, 0x8f);
23255                 pi->tx_rx_cal_phy_saveregs[2] = val;
23256                 val |= ((0x1 << 9) | (0x1 << 10));
23257                 write_phy_reg(pi, 0x8f, val);
23258
23259                 val = read_phy_reg(pi, 0xa5);
23260                 pi->tx_rx_cal_phy_saveregs[3] = val;
23261                 val |= ((0x1 << 9) | (0x1 << 10));
23262                 write_phy_reg(pi, 0xa5, val);
23263
23264                 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
23265                 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23266
23267                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23268                                         &val);
23269                 pi->tx_rx_cal_phy_saveregs[5] = val;
23270                 val = 0;
23271                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23272                                          &val);
23273
23274                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23275                                         &val);
23276                 pi->tx_rx_cal_phy_saveregs[6] = val;
23277                 val = 0;
23278                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23279                                          &val);
23280
23281                 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
23282                 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
23283
23284                 if (!(pi->use_int_tx_iqlo_cal_nphy)) {
23285
23286                         wlc_phy_rfctrlintc_override_nphy(pi,
23287                                                          NPHY_RfctrlIntc_override_PA,
23288                                                          1,
23289                                                          RADIO_MIMO_CORESEL_CORE1
23290                                                          |
23291                                                          RADIO_MIMO_CORESEL_CORE2);
23292                 } else {
23293
23294                         wlc_phy_rfctrlintc_override_nphy(pi,
23295                                                          NPHY_RfctrlIntc_override_PA,
23296                                                          0,
23297                                                          RADIO_MIMO_CORESEL_CORE1
23298                                                          |
23299                                                          RADIO_MIMO_CORESEL_CORE2);
23300                 }
23301
23302                 wlc_phy_rfctrlintc_override_nphy(pi,
23303                                                  NPHY_RfctrlIntc_override_TRSW,
23304                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
23305                 wlc_phy_rfctrlintc_override_nphy(pi,
23306                                                  NPHY_RfctrlIntc_override_TRSW,
23307                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
23308
23309                 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
23310                 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
23311                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
23312                             0x29b, (0x1 << 0), (0) << 0);
23313
23314                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
23315                             0x29b, (0x1 << 0), (0) << 0);
23316
23317                 if (NREV_IS(pi->pubpi.phy_rev, 7)
23318                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
23319                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
23320                                                           wlc_phy_read_lpf_bw_ctl_nphy
23321                                                           (pi, 0), 0, 0,
23322                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
23323                 }
23324
23325                 if (pi->use_int_tx_iqlo_cal_nphy
23326                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23327
23328                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23329
23330                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23331                                               1 << 4);
23332
23333                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23334                                         mod_radio_reg(pi,
23335                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23336                                                       1, 0);
23337                                         mod_radio_reg(pi,
23338                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23339                                                       1, 0);
23340                                 } else {
23341                                         mod_radio_reg(pi,
23342                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23343                                                       1, 0);
23344                                         mod_radio_reg(pi,
23345                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23346                                                       1, 0);
23347                                 }
23348                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
23349                                 wlc_phy_rfctrl_override_nphy_rev7(pi,
23350                                                                   (0x1 << 3), 0,
23351                                                                   0x3, 0,
23352                                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
23353                         }
23354                 }
23355         } else {
23356                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23357                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23358
23359                 mask = ((0x3 << 12) | (0x3 << 14));
23360                 val = (0x2 << 12);
23361                 val |= (0x2 << 14);
23362                 mod_phy_reg(pi, 0xa6, mask, val);
23363                 mod_phy_reg(pi, 0xa7, mask, val);
23364
23365                 val = read_phy_reg(pi, 0xa5);
23366                 pi->tx_rx_cal_phy_saveregs[2] = val;
23367                 val |= ((0x1 << 12) | (0x1 << 13));
23368                 write_phy_reg(pi, 0xa5, val);
23369
23370                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23371                                         &val);
23372                 pi->tx_rx_cal_phy_saveregs[3] = val;
23373                 val |= 0x2000;
23374                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23375                                          &val);
23376
23377                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23378                                         &val);
23379                 pi->tx_rx_cal_phy_saveregs[4] = val;
23380                 val |= 0x2000;
23381                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23382                                          &val);
23383
23384                 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
23385                 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
23386                 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
23387                 write_phy_reg(pi, 0x91, val);
23388                 write_phy_reg(pi, 0x92, val);
23389         }
23390 }
23391
23392 static void wlc_phy_txcal_phycleanup_nphy(phy_info_t *pi)
23393 {
23394         u16 mask;
23395
23396         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23397                 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
23398                 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
23399                 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
23400                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
23401                 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
23402
23403                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23404                                          &pi->tx_rx_cal_phy_saveregs[5]);
23405                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23406                                          &pi->tx_rx_cal_phy_saveregs[6]);
23407
23408                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
23409                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
23410
23411                 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
23412                 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
23413
23414                 if (NREV_IS(pi->pubpi.phy_rev, 7)
23415                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
23416                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7), 0, 0,
23417                                                           1,
23418                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
23419                 }
23420
23421                 wlc_phy_resetcca_nphy(pi);
23422
23423                 if (pi->use_int_tx_iqlo_cal_nphy
23424                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23425
23426                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23427                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23428                                         mod_radio_reg(pi,
23429                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23430                                                       1, 1);
23431                                         mod_radio_reg(pi,
23432                                                       RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23433                                                       1, 1);
23434                                 } else {
23435                                         mod_radio_reg(pi,
23436                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23437                                                       1, 1);
23438                                         mod_radio_reg(pi,
23439                                                       RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23440                                                       1, 1);
23441                                 }
23442
23443                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23444                                               0);
23445                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
23446                                 wlc_phy_rfctrl_override_nphy_rev7(pi,
23447                                                                   (0x1 << 3), 0,
23448                                                                   0x3, 1,
23449                                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
23450                         }
23451                 }
23452         } else {
23453                 mask = ((0x3 << 12) | (0x3 << 14));
23454                 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
23455                 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
23456                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
23457
23458                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
23459                                          &pi->tx_rx_cal_phy_saveregs[3]);
23460
23461                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
23462                                          &pi->tx_rx_cal_phy_saveregs[4]);
23463
23464                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
23465                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
23466         }
23467 }
23468
23469 #define NPHY_CAL_TSSISAMPS      64
23470 #define NPHY_TEST_TONE_FREQ_40MHz 4000
23471 #define NPHY_TEST_TONE_FREQ_20MHz 2500
23472
23473 void
23474 wlc_phy_est_tonepwr_nphy(phy_info_t *pi, s32 *qdBm_pwrbuf, u8 num_samps)
23475 {
23476         u16 tssi_reg;
23477         s32 temp, pwrindex[2];
23478         s32 idle_tssi[2];
23479         s32 rssi_buf[4];
23480         s32 tssival[2];
23481         u8 tssi_type;
23482
23483         tssi_reg = read_phy_reg(pi, 0x1e9);
23484
23485         temp = (s32) (tssi_reg & 0x3f);
23486         idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
23487
23488         temp = (s32) ((tssi_reg >> 8) & 0x3f);
23489         idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
23490
23491         tssi_type =
23492             CHSPEC_IS5G(pi->radio_chanspec) ?
23493             (u8)NPHY_RSSI_SEL_TSSI_5G:(u8)NPHY_RSSI_SEL_TSSI_2G;
23494
23495         wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
23496
23497         tssival[0] = rssi_buf[0] / ((s32) num_samps);
23498         tssival[1] = rssi_buf[2] / ((s32) num_samps);
23499
23500         pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
23501         pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
23502
23503         if (pwrindex[0] < 0) {
23504                 pwrindex[0] = 0;
23505         } else if (pwrindex[0] > 63) {
23506                 pwrindex[0] = 63;
23507         }
23508
23509         if (pwrindex[1] < 0) {
23510                 pwrindex[1] = 0;
23511         } else if (pwrindex[1] > 63) {
23512                 pwrindex[1] = 63;
23513         }
23514
23515         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
23516                                 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
23517         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
23518                                 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
23519 }
23520
23521 static void wlc_phy_internal_cal_txgain_nphy(phy_info_t *pi)
23522 {
23523         u16 txcal_gain[2];
23524
23525         pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
23526         pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
23527         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
23528         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
23529
23530         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23531                                 txcal_gain);
23532
23533         if (CHSPEC_IS2G(pi->radio_chanspec)) {
23534                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
23535                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
23536         } else {
23537                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
23538                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
23539         }
23540
23541         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23542                                  txcal_gain);
23543 }
23544
23545 static void wlc_phy_precal_txgain_nphy(phy_info_t *pi)
23546 {
23547         bool save_bbmult = false;
23548         u8 txcal_index_2057_rev5n7 = 0;
23549         u8 txcal_index_2057_rev3n4n6 = 10;
23550
23551         if (pi->use_int_tx_iqlo_cal_nphy) {
23552                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23553                         if ((pi->pubpi.radiorev == 3) ||
23554                             (pi->pubpi.radiorev == 4) ||
23555                             (pi->pubpi.radiorev == 6)) {
23556
23557                                 pi->nphy_txcal_pwr_idx[0] =
23558                                     txcal_index_2057_rev3n4n6;
23559                                 pi->nphy_txcal_pwr_idx[1] =
23560                                     txcal_index_2057_rev3n4n6;
23561                                 wlc_phy_txpwr_index_nphy(pi, 3,
23562                                                          txcal_index_2057_rev3n4n6,
23563                                                          false);
23564                         } else {
23565
23566                                 pi->nphy_txcal_pwr_idx[0] =
23567                                     txcal_index_2057_rev5n7;
23568                                 pi->nphy_txcal_pwr_idx[1] =
23569                                     txcal_index_2057_rev5n7;
23570                                 wlc_phy_txpwr_index_nphy(pi, 3,
23571                                                          txcal_index_2057_rev5n7,
23572                                                          false);
23573                         }
23574                         save_bbmult = true;
23575
23576                 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
23577                         wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
23578                         if (pi->sh->hw_phytxchain != 3) {
23579                                 pi->nphy_txcal_pwr_idx[1] =
23580                                     pi->nphy_txcal_pwr_idx[0];
23581                                 wlc_phy_txpwr_index_nphy(pi, 3,
23582                                                          pi->
23583                                                          nphy_txcal_pwr_idx[0],
23584                                                          true);
23585                                 save_bbmult = true;
23586                         }
23587
23588                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
23589                         if (PHY_IPA(pi)) {
23590                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23591                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
23592                                                                     false);
23593                                 } else {
23594                                         pi->nphy_txcal_pwr_idx[0] = 80;
23595                                         pi->nphy_txcal_pwr_idx[1] = 80;
23596                                         wlc_phy_txpwr_index_nphy(pi, 3, 80,
23597                                                                  false);
23598                                         save_bbmult = true;
23599                                 }
23600                         } else {
23601
23602                                 wlc_phy_internal_cal_txgain_nphy(pi);
23603                                 save_bbmult = true;
23604                         }
23605
23606                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
23607                         if (PHY_IPA(pi)) {
23608                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23609                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
23610                                                                     false);
23611                                 } else {
23612                                         wlc_phy_cal_txgainctrl_nphy(pi, 14,
23613                                                                     false);
23614                                 }
23615                         } else {
23616
23617                                 wlc_phy_internal_cal_txgain_nphy(pi);
23618                                 save_bbmult = true;
23619                         }
23620                 }
23621
23622         } else {
23623                 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
23624         }
23625
23626         if (save_bbmult) {
23627                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
23628                                         &pi->nphy_txcal_bbmult);
23629         }
23630 }
23631
23632 void
23633 wlc_phy_cal_txgainctrl_nphy(phy_info_t *pi, s32 dBm_targetpower, bool debug)
23634 {
23635         int gainctrl_loopidx;
23636         uint core;
23637         u16 m0m1, curr_m0m1;
23638         s32 delta_power;
23639         s32 txpwrindex;
23640         s32 qdBm_power[2];
23641         u16 orig_BBConfig;
23642         u16 phy_saveregs[4];
23643         u32 freq_test;
23644         u16 ampl_test = 250;
23645         uint stepsize;
23646         bool phyhang_avoid_state = false;
23647
23648         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23649
23650                 stepsize = 2;
23651         } else {
23652
23653                 stepsize = 1;
23654         }
23655
23656         if (CHSPEC_IS40(pi->radio_chanspec)) {
23657                 freq_test = 5000;
23658         } else {
23659                 freq_test = 2500;
23660         }
23661
23662         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
23663         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
23664
23665         if (pi->phyhang_avoid)
23666                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23667
23668         phyhang_avoid_state = pi->phyhang_avoid;
23669         pi->phyhang_avoid = false;
23670
23671         phy_saveregs[0] = read_phy_reg(pi, 0x91);
23672         phy_saveregs[1] = read_phy_reg(pi, 0x92);
23673         phy_saveregs[2] = read_phy_reg(pi, 0xe7);
23674         phy_saveregs[3] = read_phy_reg(pi, 0xec);
23675         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
23676                                          RADIO_MIMO_CORESEL_CORE1 |
23677                                          RADIO_MIMO_CORESEL_CORE2);
23678
23679         if (!debug) {
23680                 wlc_phy_rfctrlintc_override_nphy(pi,
23681                                                  NPHY_RfctrlIntc_override_TRSW,
23682                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
23683                 wlc_phy_rfctrlintc_override_nphy(pi,
23684                                                  NPHY_RfctrlIntc_override_TRSW,
23685                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
23686         } else {
23687                 wlc_phy_rfctrlintc_override_nphy(pi,
23688                                                  NPHY_RfctrlIntc_override_TRSW,
23689                                                  0x1, RADIO_MIMO_CORESEL_CORE1);
23690                 wlc_phy_rfctrlintc_override_nphy(pi,
23691                                                  NPHY_RfctrlIntc_override_TRSW,
23692                                                  0x7, RADIO_MIMO_CORESEL_CORE2);
23693         }
23694
23695         orig_BBConfig = read_phy_reg(pi, 0x01);
23696         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23697
23698         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
23699
23700         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
23701                 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
23702
23703                 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
23704                      gainctrl_loopidx++) {
23705                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
23706                                              false);
23707
23708                         if (core == PHY_CORE_0) {
23709                                 curr_m0m1 = m0m1 & 0xff00;
23710                         } else {
23711                                 curr_m0m1 = m0m1 & 0x00ff;
23712                         }
23713
23714                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
23715                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
23716
23717                         OSL_DELAY(50);
23718
23719                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
23720                                                  NPHY_CAL_TSSISAMPS);
23721
23722                         pi->nphy_bb_mult_save = 0;
23723                         wlc_phy_stopplayback_nphy(pi);
23724
23725                         delta_power = (dBm_targetpower * 4) - qdBm_power[core];
23726
23727                         txpwrindex -= stepsize * delta_power;
23728                         if (txpwrindex < 0) {
23729                                 txpwrindex = 0;
23730                         } else if (txpwrindex > 127) {
23731                                 txpwrindex = 127;
23732                         }
23733
23734                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23735                                 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
23736                                     (pi->srom_fem5g.extpagain == 3)) {
23737                                         if (txpwrindex < 30) {
23738                                                 txpwrindex = 30;
23739                                         }
23740                                 }
23741                         } else {
23742                                 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
23743                                     (pi->srom_fem2g.extpagain == 3)) {
23744                                         if (txpwrindex < 50) {
23745                                                 txpwrindex = 50;
23746                                         }
23747                                 }
23748                         }
23749
23750                         wlc_phy_txpwr_index_nphy(pi, (1 << core),
23751                                                  (u8) txpwrindex, true);
23752                 }
23753
23754                 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
23755
23756                 if (debug) {
23757                         u16 radio_gain;
23758                         u16 dbg_m0m1;
23759
23760                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
23761
23762                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
23763                                              false);
23764
23765                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
23766                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
23767
23768                         OSL_DELAY(100);
23769
23770                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
23771                                                  NPHY_CAL_TSSISAMPS);
23772
23773                         wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
23774                                                 &radio_gain);
23775
23776                         OSL_DELAY(4000000);
23777                         pi->nphy_bb_mult_save = 0;
23778                         wlc_phy_stopplayback_nphy(pi);
23779                 }
23780         }
23781
23782         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
23783         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
23784
23785         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
23786
23787         write_phy_reg(pi, 0x01, orig_BBConfig);
23788
23789         write_phy_reg(pi, 0x91, phy_saveregs[0]);
23790         write_phy_reg(pi, 0x92, phy_saveregs[1]);
23791         write_phy_reg(pi, 0xe7, phy_saveregs[2]);
23792         write_phy_reg(pi, 0xec, phy_saveregs[3]);
23793
23794         pi->phyhang_avoid = phyhang_avoid_state;
23795
23796         if (pi->phyhang_avoid)
23797                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23798 }
23799
23800 static void wlc_phy_update_txcal_ladder_nphy(phy_info_t *pi, u16 core)
23801 {
23802         int index;
23803         u32 bbmult_scale;
23804         u16 bbmult;
23805         u16 tblentry;
23806
23807         nphy_txiqcal_ladder_t ladder_lo[] = {
23808                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
23809                 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
23810                 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
23811         };
23812
23813         nphy_txiqcal_ladder_t ladder_iq[] = {
23814                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
23815                 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
23816                 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
23817         };
23818
23819         bbmult = (core == PHY_CORE_0) ?
23820             ((pi->nphy_txcal_bbmult >> 8) & 0xff) : (pi->
23821                                                      nphy_txcal_bbmult & 0xff);
23822
23823         for (index = 0; index < 18; index++) {
23824                 bbmult_scale = ladder_lo[index].percent * bbmult;
23825                 bbmult_scale /= 100;
23826
23827                 tblentry =
23828                     ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
23829                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
23830                                          &tblentry);
23831
23832                 bbmult_scale = ladder_iq[index].percent * bbmult;
23833                 bbmult_scale /= 100;
23834
23835                 tblentry =
23836                     ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
23837                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
23838                                          16, &tblentry);
23839         }
23840 }
23841
23842 void wlc_phy_cal_perical_nphy_run(phy_info_t *pi, u8 caltype)
23843 {
23844         nphy_txgains_t target_gain;
23845         u8 tx_pwr_ctrl_state;
23846         bool fullcal = true;
23847         bool restore_tx_gain = false;
23848         bool mphase;
23849
23850         if (NORADIO_ENAB(pi->pubpi)) {
23851                 wlc_phy_cal_perical_mphase_reset(pi);
23852                 return;
23853         }
23854
23855         if (PHY_MUTED(pi))
23856                 return;
23857
23858         ASSERT(pi->nphy_perical != PHY_PERICAL_DISABLE);
23859
23860         if (caltype == PHY_PERICAL_AUTO)
23861                 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
23862         else if (caltype == PHY_PERICAL_PARTIAL)
23863                 fullcal = false;
23864
23865         if (pi->cal_type_override != PHY_PERICAL_AUTO) {
23866                 fullcal =
23867                     (pi->cal_type_override == PHY_PERICAL_FULL) ? true : false;
23868         }
23869
23870         if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
23871                 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
23872                         wlc_phy_cal_perical_mphase_restart(pi);
23873         }
23874
23875         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL)) {
23876                 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
23877         }
23878
23879         wlapi_suspend_mac_and_wait(pi->sh->physhim);
23880
23881         wlc_phyreg_enter((wlc_phy_t *) pi);
23882
23883         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
23884             (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
23885                 pi->nphy_cal_orig_pwr_idx[0] =
23886                     (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
23887                 pi->nphy_cal_orig_pwr_idx[1] =
23888                     (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
23889
23890                 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
23891                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
23892                                                 0x110, 16,
23893                                                 pi->nphy_cal_orig_tx_gain);
23894                 } else {
23895                         pi->nphy_cal_orig_tx_gain[0] = 0;
23896                         pi->nphy_cal_orig_tx_gain[1] = 0;
23897                 }
23898         }
23899         target_gain = wlc_phy_get_tx_gain_nphy(pi);
23900         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
23901         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
23902
23903         if (pi->antsel_type == ANTSEL_2x3)
23904                 wlc_phy_antsel_init((wlc_phy_t *) pi, true);
23905
23906         mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
23907         if (!mphase) {
23908
23909                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23910                         wlc_phy_precal_txgain_nphy(pi);
23911                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
23912                         restore_tx_gain = true;
23913
23914                         target_gain = pi->nphy_cal_target_gain;
23915                 }
23916                 if (BCME_OK ==
23917                     wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal, mphase)) {
23918                         if (PHY_IPA(pi))
23919                                 wlc_phy_a4(pi, true);
23920
23921                         wlc_phyreg_exit((wlc_phy_t *) pi);
23922                         wlapi_enable_mac(pi->sh->physhim);
23923                         wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
23924                                              10000);
23925                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
23926                         wlc_phyreg_enter((wlc_phy_t *) pi);
23927
23928                         if (BCME_OK == wlc_phy_cal_rxiq_nphy(pi, target_gain,
23929                                                              (pi->
23930                                                               first_cal_after_assoc
23931                                                               || (pi->
23932                                                                   cal_type_override
23933                                                                   ==
23934                                                                   PHY_PERICAL_FULL))
23935                                                              ? 2 : 0, false)) {
23936                                 wlc_phy_savecal_nphy(pi);
23937
23938                                 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
23939
23940                                 pi->nphy_perical_last = pi->sh->now;
23941                         }
23942                 }
23943                 if (caltype != PHY_PERICAL_AUTO) {
23944                         wlc_phy_rssi_cal_nphy(pi);
23945                 }
23946
23947                 if (pi->first_cal_after_assoc
23948                     || (pi->cal_type_override == PHY_PERICAL_FULL)) {
23949                         pi->first_cal_after_assoc = false;
23950                         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
23951                         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
23952                 }
23953
23954                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23955                         wlc_phy_radio205x_vcocal_nphy(pi);
23956                 }
23957         } else {
23958                 ASSERT(pi->nphy_perical >= PHY_PERICAL_MPHASE);
23959
23960                 switch (pi->mphase_cal_phase_id) {
23961                 case MPHASE_CAL_STATE_INIT:
23962                         pi->nphy_perical_last = pi->sh->now;
23963                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
23964
23965                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23966                                 wlc_phy_precal_txgain_nphy(pi);
23967                         }
23968                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
23969                         pi->mphase_cal_phase_id++;
23970                         break;
23971
23972                 case MPHASE_CAL_STATE_TXPHASE0:
23973                 case MPHASE_CAL_STATE_TXPHASE1:
23974                 case MPHASE_CAL_STATE_TXPHASE2:
23975                 case MPHASE_CAL_STATE_TXPHASE3:
23976                 case MPHASE_CAL_STATE_TXPHASE4:
23977                 case MPHASE_CAL_STATE_TXPHASE5:
23978                         if ((pi->radar_percal_mask & 0x10) != 0)
23979                                 pi->nphy_rxcal_active = true;
23980
23981                         if (wlc_phy_cal_txiqlo_nphy
23982                             (pi, pi->nphy_cal_target_gain, fullcal,
23983                              true) != BCME_OK) {
23984
23985                                 wlc_phy_cal_perical_mphase_reset(pi);
23986                                 break;
23987                         }
23988
23989                         if (NREV_LE(pi->pubpi.phy_rev, 2) &&
23990                             (pi->mphase_cal_phase_id ==
23991                              MPHASE_CAL_STATE_TXPHASE4)) {
23992                                 pi->mphase_cal_phase_id += 2;
23993                         } else {
23994                                 pi->mphase_cal_phase_id++;
23995                         }
23996                         break;
23997
23998                 case MPHASE_CAL_STATE_PAPDCAL:
23999                         if ((pi->radar_percal_mask & 0x2) != 0)
24000                                 pi->nphy_rxcal_active = true;
24001
24002                         if (PHY_IPA(pi)) {
24003                                 wlc_phy_a4(pi, true);
24004                         }
24005                         pi->mphase_cal_phase_id++;
24006                         break;
24007
24008                 case MPHASE_CAL_STATE_RXCAL:
24009                         if ((pi->radar_percal_mask & 0x1) != 0)
24010                                 pi->nphy_rxcal_active = true;
24011                         if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
24012                                                   (pi->first_cal_after_assoc ||
24013                                                    (pi->cal_type_override ==
24014                                                     PHY_PERICAL_FULL)) ? 2 : 0,
24015                                                   false) == BCME_OK) {
24016                                 wlc_phy_savecal_nphy(pi);
24017                         }
24018
24019                         pi->mphase_cal_phase_id++;
24020                         break;
24021
24022                 case MPHASE_CAL_STATE_RSSICAL:
24023                         if ((pi->radar_percal_mask & 0x4) != 0)
24024                                 pi->nphy_rxcal_active = true;
24025                         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
24026                         wlc_phy_rssi_cal_nphy(pi);
24027
24028                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24029                                 wlc_phy_radio205x_vcocal_nphy(pi);
24030                         }
24031                         restore_tx_gain = true;
24032
24033                         if (pi->first_cal_after_assoc) {
24034                                 pi->mphase_cal_phase_id++;
24035                         } else {
24036                                 wlc_phy_cal_perical_mphase_reset(pi);
24037                         }
24038
24039                         break;
24040
24041                 case MPHASE_CAL_STATE_IDLETSSI:
24042                         if ((pi->radar_percal_mask & 0x8) != 0)
24043                                 pi->nphy_rxcal_active = true;
24044
24045                         if (pi->first_cal_after_assoc) {
24046                                 pi->first_cal_after_assoc = false;
24047                                 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
24048                                 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
24049                         }
24050
24051                         wlc_phy_cal_perical_mphase_reset(pi);
24052                         break;
24053
24054                 default:
24055                         ASSERT(0);
24056                         wlc_phy_cal_perical_mphase_reset(pi);
24057                         break;
24058                 }
24059         }
24060
24061         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24062                 if (restore_tx_gain) {
24063                         if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
24064
24065                                 wlc_phy_txpwr_index_nphy(pi, 1,
24066                                                          pi->
24067                                                          nphy_cal_orig_pwr_idx
24068                                                          [0], false);
24069                                 wlc_phy_txpwr_index_nphy(pi, 2,
24070                                                          pi->
24071                                                          nphy_cal_orig_pwr_idx
24072                                                          [1], false);
24073
24074                                 pi->nphy_txpwrindex[0].index = -1;
24075                                 pi->nphy_txpwrindex[1].index = -1;
24076                         } else {
24077                                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
24078                                                          (s8) (pi->
24079                                                                  nphy_txpwrindex
24080                                                                  [0].
24081                                                                  index_internal),
24082                                                          false);
24083                                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
24084                                                          (s8) (pi->
24085                                                                  nphy_txpwrindex
24086                                                                  [1].
24087                                                                  index_internal),
24088                                                          false);
24089                         }
24090                 }
24091         }
24092
24093         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
24094         wlc_phyreg_exit((wlc_phy_t *) pi);
24095         wlapi_enable_mac(pi->sh->physhim);
24096 }
24097
24098 int
24099 wlc_phy_cal_txiqlo_nphy(phy_info_t *pi, nphy_txgains_t target_gain,
24100                         bool fullcal, bool mphase)
24101 {
24102         u16 val;
24103         u16 tbl_buf[11];
24104         u8 cal_cnt;
24105         u16 cal_cmd;
24106         u8 num_cals, max_cal_cmds;
24107         u16 core_no, cal_type;
24108         u16 diq_start = 0;
24109         u8 phy_bw;
24110         u16 max_val;
24111         u16 tone_freq;
24112         u16 gain_save[2];
24113         u16 cal_gain[2];
24114         nphy_iqcal_params_t cal_params[2];
24115         u32 tbl_len;
24116         void *tbl_ptr;
24117         bool ladder_updated[2];
24118         u8 mphase_cal_lastphase = 0;
24119         int bcmerror = BCME_OK;
24120         bool phyhang_avoid_state = false;
24121
24122         u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
24123                 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
24124                     0x1902,
24125                 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
24126                     0x6407
24127         };
24128
24129         u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
24130                 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
24131                     0x3200,
24132                 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
24133                     0x6407
24134         };
24135
24136         u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
24137                 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
24138                     0x1202,
24139                 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
24140                     0x4707
24141         };
24142
24143         u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
24144                 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
24145                     0x2300,
24146                 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
24147                     0x4707
24148         };
24149
24150         u16 tbl_tx_iqlo_cal_startcoefs[] = {
24151                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24152                     0x0000
24153         };
24154
24155         u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
24156                 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
24157                 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
24158         };
24159
24160         u16 tbl_tx_iqlo_cal_cmds_recal[] = {
24161                 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
24162                 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
24163         };
24164
24165         u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
24166                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24167                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
24168                 0x0000
24169         };
24170
24171         u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
24172                 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
24173                 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
24174         };
24175
24176         u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
24177                 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
24178                 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
24179         };
24180
24181         wlc_phy_stay_in_carriersearch_nphy(pi, true);
24182
24183         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
24184                 phyhang_avoid_state = pi->phyhang_avoid;
24185                 pi->phyhang_avoid = false;
24186         }
24187
24188         if (CHSPEC_IS40(pi->radio_chanspec)) {
24189                 phy_bw = 40;
24190         } else {
24191                 phy_bw = 20;
24192         }
24193
24194         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
24195
24196         for (core_no = 0; core_no <= 1; core_no++) {
24197                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
24198                                               &cal_params[core_no]);
24199                 cal_gain[core_no] = cal_params[core_no].cal_gain;
24200         }
24201
24202         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
24203
24204         wlc_phy_txcal_radio_setup_nphy(pi);
24205
24206         wlc_phy_txcal_physetup_nphy(pi);
24207
24208         ladder_updated[0] = ladder_updated[1] = false;
24209         if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
24210               (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
24211                && (CHSPEC_IS2G(pi->radio_chanspec))))) {
24212
24213                 if (phy_bw == 40) {
24214                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
24215                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
24216                 } else {
24217                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
24218                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
24219                 }
24220                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
24221                                          16, tbl_ptr);
24222
24223                 if (phy_bw == 40) {
24224                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
24225                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
24226                 } else {
24227                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
24228                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
24229                 }
24230                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
24231                                          16, tbl_ptr);
24232         }
24233
24234         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24235                 write_phy_reg(pi, 0xc2, 0x8ad9);
24236         } else {
24237                 write_phy_reg(pi, 0xc2, 0x8aa9);
24238         }
24239
24240         max_val = 250;
24241         tone_freq = (phy_bw == 20) ? 2500 : 5000;
24242
24243         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
24244                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
24245                 bcmerror = BCME_OK;
24246         } else {
24247                 bcmerror =
24248                     wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0, false);
24249         }
24250
24251         if (bcmerror == BCME_OK) {
24252
24253                 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
24254                         tbl_ptr = pi->mphase_txcal_bestcoeffs;
24255                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
24256                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24257
24258                                 tbl_len -= 2;
24259                         }
24260                 } else {
24261                         if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
24262
24263                                 tbl_ptr = pi->nphy_txiqlocal_bestc;
24264                                 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
24265                                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24266
24267                                         tbl_len -= 2;
24268                                 }
24269                         } else {
24270
24271                                 fullcal = true;
24272
24273                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24274                                         tbl_ptr =
24275                                             tbl_tx_iqlo_cal_startcoefs_nphyrev3;
24276                                         tbl_len =
24277                                             ARRAY_SIZE
24278                                             (tbl_tx_iqlo_cal_startcoefs_nphyrev3);
24279                                 } else {
24280                                         tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
24281                                         tbl_len =
24282                                             ARRAY_SIZE
24283                                             (tbl_tx_iqlo_cal_startcoefs);
24284                                 }
24285                         }
24286                 }
24287                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
24288                                          16, tbl_ptr);
24289
24290                 if (fullcal) {
24291                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24292                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
24293                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
24294                 } else {
24295                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24296                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
24297                             ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
24298                 }
24299
24300                 if (mphase) {
24301                         cal_cnt = pi->mphase_txcal_cmdidx;
24302                         if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds) {
24303                                 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
24304                         } else {
24305                                 num_cals = max_cal_cmds;
24306                         }
24307                 } else {
24308                         cal_cnt = 0;
24309                         num_cals = max_cal_cmds;
24310                 }
24311
24312                 for (; cal_cnt < num_cals; cal_cnt++) {
24313
24314                         if (fullcal) {
24315                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24316                                     tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
24317                                     [cal_cnt] :
24318                                     tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
24319                         } else {
24320                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
24321                                     tbl_tx_iqlo_cal_cmds_recal_nphyrev3[cal_cnt]
24322                                     : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
24323                         }
24324
24325                         core_no = ((cal_cmd & 0x3000) >> 12);
24326                         cal_type = ((cal_cmd & 0x0F00) >> 8);
24327
24328                         if (NREV_GE(pi->pubpi.phy_rev, 6) ||
24329                             (NREV_IS(pi->pubpi.phy_rev, 5) &&
24330                              PHY_IPA(pi)
24331                              && (CHSPEC_IS2G(pi->radio_chanspec)))) {
24332                                 if (!ladder_updated[core_no]) {
24333                                         wlc_phy_update_txcal_ladder_nphy(pi,
24334                                                                          core_no);
24335                                         ladder_updated[core_no] = true;
24336                                 }
24337                         }
24338
24339                         val =
24340                             (cal_params[core_no].
24341                              ncorr[cal_type] << 8) | NPHY_N_GCTL;
24342                         write_phy_reg(pi, 0xc1, val);
24343
24344                         if ((cal_type == 1) || (cal_type == 3)
24345                             || (cal_type == 4)) {
24346
24347                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24348                                                         1, 69 + core_no, 16,
24349                                                         tbl_buf);
24350
24351                                 diq_start = tbl_buf[0];
24352
24353                                 tbl_buf[0] = 0;
24354                                 wlc_phy_table_write_nphy(pi,
24355                                                          NPHY_TBL_ID_IQLOCAL, 1,
24356                                                          69 + core_no, 16,
24357                                                          tbl_buf);
24358                         }
24359
24360                         write_phy_reg(pi, 0xc0, cal_cmd);
24361
24362                         SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
24363                                  20000);
24364                         ASSERT((read_phy_reg(pi, 0xc0) & 0xc000) == 0);
24365
24366                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24367                                                 tbl_len, 96, 16, tbl_buf);
24368                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24369                                                  tbl_len, 64, 16, tbl_buf);
24370
24371                         if ((cal_type == 1) || (cal_type == 3)
24372                             || (cal_type == 4)) {
24373
24374                                 tbl_buf[0] = diq_start;
24375
24376                         }
24377
24378                 }
24379
24380                 if (mphase) {
24381                         pi->mphase_txcal_cmdidx = num_cals;
24382                         if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
24383                                 pi->mphase_txcal_cmdidx = 0;
24384                 }
24385
24386                 mphase_cal_lastphase =
24387                     (NREV_LE(pi->pubpi.phy_rev, 2)) ?
24388                     MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
24389
24390                 if (!mphase
24391                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
24392
24393                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
24394                                                 16, tbl_buf);
24395                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
24396                                                  16, tbl_buf);
24397
24398                         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
24399
24400                                 tbl_buf[0] = 0;
24401                                 tbl_buf[1] = 0;
24402                                 tbl_buf[2] = 0;
24403                                 tbl_buf[3] = 0;
24404
24405                         }
24406                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
24407                                                  16, tbl_buf);
24408
24409                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
24410                                                 16, tbl_buf);
24411                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
24412                                                  16, tbl_buf);
24413
24414                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
24415                                                  16, tbl_buf);
24416
24417                         tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
24418                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24419
24420                                 tbl_len -= 2;
24421                         }
24422                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24423                                                 tbl_len, 96, 16,
24424                                                 pi->nphy_txiqlocal_bestc);
24425
24426                         pi->nphy_txiqlocal_coeffsvalid = true;
24427                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
24428                 } else {
24429                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
24430                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
24431
24432                                 tbl_len -= 2;
24433                         }
24434                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24435                                                 tbl_len, 96, 16,
24436                                                 pi->mphase_txcal_bestcoeffs);
24437                 }
24438
24439                 wlc_phy_stopplayback_nphy(pi);
24440
24441                 write_phy_reg(pi, 0xc2, 0x0000);
24442
24443         }
24444
24445         wlc_phy_txcal_phycleanup_nphy(pi);
24446
24447         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
24448                                  gain_save);
24449
24450         wlc_phy_txcal_radio_cleanup_nphy(pi);
24451
24452         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
24453                 if (!mphase
24454                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
24455                         wlc_phy_tx_iq_war_nphy(pi);
24456         }
24457
24458         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
24459                 pi->phyhang_avoid = phyhang_avoid_state;
24460         }
24461
24462         wlc_phy_stay_in_carriersearch_nphy(pi, false);
24463
24464         return bcmerror;
24465 }
24466
24467 static void wlc_phy_reapply_txcal_coeffs_nphy(phy_info_t *pi)
24468 {
24469         u16 tbl_buf[7];
24470
24471         ASSERT(NREV_LT(pi->pubpi.phy_rev, 2));
24472
24473         if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
24474             (pi->nphy_txiqlocal_coeffsvalid)) {
24475                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
24476                                         ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
24477
24478                 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
24479                     (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
24480                     (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
24481                     (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
24482
24483                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
24484                                                  16, pi->nphy_txiqlocal_bestc);
24485
24486                         tbl_buf[0] = 0;
24487                         tbl_buf[1] = 0;
24488                         tbl_buf[2] = 0;
24489                         tbl_buf[3] = 0;
24490                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
24491                                                  16, tbl_buf);
24492
24493                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
24494                                                  16,
24495                                                  &pi->nphy_txiqlocal_bestc[5]);
24496
24497                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
24498                                                  16,
24499                                                  &pi->nphy_txiqlocal_bestc[5]);
24500                 }
24501         }
24502 }
24503
24504 static void wlc_phy_tx_iq_war_nphy(phy_info_t *pi)
24505 {
24506         nphy_iq_comp_t tx_comp;
24507
24508         wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, (void *)&tx_comp);
24509
24510         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
24511         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
24512         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
24513         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
24514 }
24515
24516 void
24517 wlc_phy_rx_iq_coeffs_nphy(phy_info_t *pi, u8 write, nphy_iq_comp_t *pcomp)
24518 {
24519         if (write) {
24520                 write_phy_reg(pi, 0x9a, pcomp->a0);
24521                 write_phy_reg(pi, 0x9b, pcomp->b0);
24522                 write_phy_reg(pi, 0x9c, pcomp->a1);
24523                 write_phy_reg(pi, 0x9d, pcomp->b1);
24524         } else {
24525                 pcomp->a0 = read_phy_reg(pi, 0x9a);
24526                 pcomp->b0 = read_phy_reg(pi, 0x9b);
24527                 pcomp->a1 = read_phy_reg(pi, 0x9c);
24528                 pcomp->b1 = read_phy_reg(pi, 0x9d);
24529         }
24530 }
24531
24532 void
24533 wlc_phy_rx_iq_est_nphy(phy_info_t *pi, phy_iq_est_t *est, u16 num_samps,
24534                        u8 wait_time, u8 wait_for_crs)
24535 {
24536         u8 core;
24537
24538         write_phy_reg(pi, 0x12b, num_samps);
24539         mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
24540         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
24541                     (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
24542
24543         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
24544
24545         SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
24546                  10000);
24547         ASSERT((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0);
24548
24549         if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
24550                 ASSERT(pi->pubpi.phy_corenum <= PHY_CORE_MAX);
24551                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24552                         est[core].i_pwr =
24553                             (read_phy_reg(pi, NPHY_IqestipwrAccHi(core)) << 16)
24554                             | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
24555                         est[core].q_pwr =
24556                             (read_phy_reg(pi, NPHY_IqestqpwrAccHi(core)) << 16)
24557                             | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
24558                         est[core].iq_prod =
24559                             (read_phy_reg(pi, NPHY_IqestIqAccHi(core)) << 16) |
24560                             read_phy_reg(pi, NPHY_IqestIqAccLo(core));
24561                 }
24562         }
24563 }
24564
24565 #define CAL_RETRY_CNT 2
24566 static void wlc_phy_calc_rx_iq_comp_nphy(phy_info_t *pi, u8 core_mask)
24567 {
24568         u8 curr_core;
24569         phy_iq_est_t est[PHY_CORE_MAX];
24570         nphy_iq_comp_t old_comp, new_comp;
24571         s32 iq = 0;
24572         u32 ii = 0, qq = 0;
24573         s16 iq_nbits, qq_nbits, brsh, arsh;
24574         s32 a, b, temp;
24575         int bcmerror = BCME_OK;
24576         uint cal_retry = 0;
24577
24578         if (core_mask == 0x0)
24579                 return;
24580
24581         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
24582         new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
24583         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
24584
24585  cal_try:
24586         wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
24587
24588         new_comp = old_comp;
24589
24590         for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
24591
24592                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
24593                         iq = est[curr_core].iq_prod;
24594                         ii = est[curr_core].i_pwr;
24595                         qq = est[curr_core].q_pwr;
24596                 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
24597                         iq = est[curr_core].iq_prod;
24598                         ii = est[curr_core].i_pwr;
24599                         qq = est[curr_core].q_pwr;
24600                 } else {
24601                         continue;
24602                 }
24603
24604                 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
24605                         bcmerror = BCME_ERROR;
24606                         break;
24607                 }
24608
24609                 iq_nbits = wlc_phy_nbits(iq);
24610                 qq_nbits = wlc_phy_nbits(qq);
24611
24612                 arsh = 10 - (30 - iq_nbits);
24613                 if (arsh >= 0) {
24614                         a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
24615                         temp = (s32) (ii >> arsh);
24616                         if (temp == 0) {
24617                                 bcmerror = BCME_ERROR;
24618                                 break;
24619                         }
24620                 } else {
24621                         a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
24622                         temp = (s32) (ii << -arsh);
24623                         if (temp == 0) {
24624                                 bcmerror = BCME_ERROR;
24625                                 break;
24626                         }
24627                 }
24628
24629                 a /= temp;
24630
24631                 brsh = qq_nbits - 31 + 20;
24632                 if (brsh >= 0) {
24633                         b = (qq << (31 - qq_nbits));
24634                         temp = (s32) (ii >> brsh);
24635                         if (temp == 0) {
24636                                 bcmerror = BCME_ERROR;
24637                                 break;
24638                         }
24639                 } else {
24640                         b = (qq << (31 - qq_nbits));
24641                         temp = (s32) (ii << -brsh);
24642                         if (temp == 0) {
24643                                 bcmerror = BCME_ERROR;
24644                                 break;
24645                         }
24646                 }
24647                 b /= temp;
24648                 b -= a * a;
24649                 b = (s32) wlc_phy_sqrt_int((u32) b);
24650                 b -= (1 << 10);
24651
24652                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
24653                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24654                                 new_comp.a0 = (s16) a & 0x3ff;
24655                                 new_comp.b0 = (s16) b & 0x3ff;
24656                         } else {
24657
24658                                 new_comp.a0 = (s16) b & 0x3ff;
24659                                 new_comp.b0 = (s16) a & 0x3ff;
24660                         }
24661                 }
24662                 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
24663                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24664                                 new_comp.a1 = (s16) a & 0x3ff;
24665                                 new_comp.b1 = (s16) b & 0x3ff;
24666                         } else {
24667
24668                                 new_comp.a1 = (s16) b & 0x3ff;
24669                                 new_comp.b1 = (s16) a & 0x3ff;
24670                         }
24671                 }
24672         }
24673
24674         if (bcmerror != BCME_OK) {
24675                 printk("%s: Failed, cnt = %d\n", __func__, cal_retry);
24676
24677                 if (cal_retry < CAL_RETRY_CNT) {
24678                         cal_retry++;
24679                         goto cal_try;
24680                 }
24681
24682                 new_comp = old_comp;
24683         } else if (cal_retry > 0) {
24684         }
24685
24686         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
24687 }
24688
24689 static void wlc_phy_rxcal_radio_setup_nphy(phy_info_t *pi, u8 rx_core)
24690 {
24691         u16 offtune_val;
24692         u16 bias_g = 0;
24693         u16 bias_a = 0;
24694
24695         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24696                 if (rx_core == PHY_CORE_0) {
24697                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24698                                 pi->tx_rx_cal_radio_saveregs[0] =
24699                                     read_radio_reg(pi,
24700                                                    RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
24701                                 pi->tx_rx_cal_radio_saveregs[1] =
24702                                     read_radio_reg(pi,
24703                                                    RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
24704
24705                                 write_radio_reg(pi,
24706                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
24707                                                 0x3);
24708                                 write_radio_reg(pi,
24709                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
24710                                                 0xaf);
24711
24712                         } else {
24713                                 pi->tx_rx_cal_radio_saveregs[0] =
24714                                     read_radio_reg(pi,
24715                                                    RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
24716                                 pi->tx_rx_cal_radio_saveregs[1] =
24717                                     read_radio_reg(pi,
24718                                                    RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
24719
24720                                 write_radio_reg(pi,
24721                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
24722                                                 0x3);
24723                                 write_radio_reg(pi,
24724                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
24725                                                 0x7f);
24726                         }
24727
24728                 } else {
24729                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24730                                 pi->tx_rx_cal_radio_saveregs[0] =
24731                                     read_radio_reg(pi,
24732                                                    RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
24733                                 pi->tx_rx_cal_radio_saveregs[1] =
24734                                     read_radio_reg(pi,
24735                                                    RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
24736
24737                                 write_radio_reg(pi,
24738                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
24739                                                 0x3);
24740                                 write_radio_reg(pi,
24741                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
24742                                                 0xaf);
24743
24744                         } else {
24745                                 pi->tx_rx_cal_radio_saveregs[0] =
24746                                     read_radio_reg(pi,
24747                                                    RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
24748                                 pi->tx_rx_cal_radio_saveregs[1] =
24749                                     read_radio_reg(pi,
24750                                                    RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
24751
24752                                 write_radio_reg(pi,
24753                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
24754                                                 0x3);
24755                                 write_radio_reg(pi,
24756                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
24757                                                 0x7f);
24758                         }
24759                 }
24760
24761         } else {
24762                 if (rx_core == PHY_CORE_0) {
24763                         pi->tx_rx_cal_radio_saveregs[0] =
24764                             read_radio_reg(pi,
24765                                            RADIO_2056_TX_RXIQCAL_TXMUX |
24766                                            RADIO_2056_TX1);
24767                         pi->tx_rx_cal_radio_saveregs[1] =
24768                             read_radio_reg(pi,
24769                                            RADIO_2056_RX_RXIQCAL_RXMUX |
24770                                            RADIO_2056_RX0);
24771
24772                         if (pi->pubpi.radiorev >= 5) {
24773                                 pi->tx_rx_cal_radio_saveregs[2] =
24774                                     read_radio_reg(pi,
24775                                                    RADIO_2056_RX_RXSPARE2 |
24776                                                    RADIO_2056_RX0);
24777                                 pi->tx_rx_cal_radio_saveregs[3] =
24778                                     read_radio_reg(pi,
24779                                                    RADIO_2056_TX_TXSPARE2 |
24780                                                    RADIO_2056_TX1);
24781                         }
24782
24783                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24784
24785                                 if (pi->pubpi.radiorev >= 5) {
24786                                         pi->tx_rx_cal_radio_saveregs[4] =
24787                                             read_radio_reg(pi,
24788                                                            RADIO_2056_RX_LNAA_MASTER
24789                                                            | RADIO_2056_RX0);
24790
24791                                         write_radio_reg(pi,
24792                                                         RADIO_2056_RX_LNAA_MASTER
24793                                                         | RADIO_2056_RX0, 0x40);
24794
24795                                         write_radio_reg(pi,
24796                                                         RADIO_2056_TX_TXSPARE2 |
24797                                                         RADIO_2056_TX1, bias_a);
24798
24799                                         write_radio_reg(pi,
24800                                                         RADIO_2056_RX_RXSPARE2 |
24801                                                         RADIO_2056_RX0, bias_a);
24802                                 } else {
24803                                         pi->tx_rx_cal_radio_saveregs[4] =
24804                                             read_radio_reg(pi,
24805                                                            RADIO_2056_RX_LNAA_TUNE
24806                                                            | RADIO_2056_RX0);
24807
24808                                         offtune_val =
24809                                             (pi->
24810                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24811                                             >> 8;
24812                                         offtune_val =
24813                                             (offtune_val <= 0x7) ? 0xF : 0;
24814
24815                                         mod_radio_reg(pi,
24816                                                       RADIO_2056_RX_LNAA_TUNE |
24817                                                       RADIO_2056_RX0, 0xF0,
24818                                                       (offtune_val << 8));
24819                                 }
24820
24821                                 write_radio_reg(pi,
24822                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24823                                                 RADIO_2056_TX1, 0x9);
24824                                 write_radio_reg(pi,
24825                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24826                                                 RADIO_2056_RX0, 0x9);
24827                         } else {
24828                                 if (pi->pubpi.radiorev >= 5) {
24829                                         pi->tx_rx_cal_radio_saveregs[4] =
24830                                             read_radio_reg(pi,
24831                                                            RADIO_2056_RX_LNAG_MASTER
24832                                                            | RADIO_2056_RX0);
24833
24834                                         write_radio_reg(pi,
24835                                                         RADIO_2056_RX_LNAG_MASTER
24836                                                         | RADIO_2056_RX0, 0x40);
24837
24838                                         write_radio_reg(pi,
24839                                                         RADIO_2056_TX_TXSPARE2 |
24840                                                         RADIO_2056_TX1, bias_g);
24841
24842                                         write_radio_reg(pi,
24843                                                         RADIO_2056_RX_RXSPARE2 |
24844                                                         RADIO_2056_RX0, bias_g);
24845
24846                                 } else {
24847                                         pi->tx_rx_cal_radio_saveregs[4] =
24848                                             read_radio_reg(pi,
24849                                                            RADIO_2056_RX_LNAG_TUNE
24850                                                            | RADIO_2056_RX0);
24851
24852                                         offtune_val =
24853                                             (pi->
24854                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24855                                             >> 8;
24856                                         offtune_val =
24857                                             (offtune_val <= 0x7) ? 0xF : 0;
24858
24859                                         mod_radio_reg(pi,
24860                                                       RADIO_2056_RX_LNAG_TUNE |
24861                                                       RADIO_2056_RX0, 0xF0,
24862                                                       (offtune_val << 8));
24863                                 }
24864
24865                                 write_radio_reg(pi,
24866                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24867                                                 RADIO_2056_TX1, 0x6);
24868                                 write_radio_reg(pi,
24869                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24870                                                 RADIO_2056_RX0, 0x6);
24871                         }
24872
24873                 } else {
24874                         pi->tx_rx_cal_radio_saveregs[0] =
24875                             read_radio_reg(pi,
24876                                            RADIO_2056_TX_RXIQCAL_TXMUX |
24877                                            RADIO_2056_TX0);
24878                         pi->tx_rx_cal_radio_saveregs[1] =
24879                             read_radio_reg(pi,
24880                                            RADIO_2056_RX_RXIQCAL_RXMUX |
24881                                            RADIO_2056_RX1);
24882
24883                         if (pi->pubpi.radiorev >= 5) {
24884                                 pi->tx_rx_cal_radio_saveregs[2] =
24885                                     read_radio_reg(pi,
24886                                                    RADIO_2056_RX_RXSPARE2 |
24887                                                    RADIO_2056_RX1);
24888                                 pi->tx_rx_cal_radio_saveregs[3] =
24889                                     read_radio_reg(pi,
24890                                                    RADIO_2056_TX_TXSPARE2 |
24891                                                    RADIO_2056_TX0);
24892                         }
24893
24894                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24895
24896                                 if (pi->pubpi.radiorev >= 5) {
24897                                         pi->tx_rx_cal_radio_saveregs[4] =
24898                                             read_radio_reg(pi,
24899                                                            RADIO_2056_RX_LNAA_MASTER
24900                                                            | RADIO_2056_RX1);
24901
24902                                         write_radio_reg(pi,
24903                                                         RADIO_2056_RX_LNAA_MASTER
24904                                                         | RADIO_2056_RX1, 0x40);
24905
24906                                         write_radio_reg(pi,
24907                                                         RADIO_2056_TX_TXSPARE2 |
24908                                                         RADIO_2056_TX0, bias_a);
24909
24910                                         write_radio_reg(pi,
24911                                                         RADIO_2056_RX_RXSPARE2 |
24912                                                         RADIO_2056_RX1, bias_a);
24913                                 } else {
24914                                         pi->tx_rx_cal_radio_saveregs[4] =
24915                                             read_radio_reg(pi,
24916                                                            RADIO_2056_RX_LNAA_TUNE
24917                                                            | RADIO_2056_RX1);
24918
24919                                         offtune_val =
24920                                             (pi->
24921                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24922                                             >> 8;
24923                                         offtune_val =
24924                                             (offtune_val <= 0x7) ? 0xF : 0;
24925
24926                                         mod_radio_reg(pi,
24927                                                       RADIO_2056_RX_LNAA_TUNE |
24928                                                       RADIO_2056_RX1, 0xF0,
24929                                                       (offtune_val << 8));
24930                                 }
24931
24932                                 write_radio_reg(pi,
24933                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24934                                                 RADIO_2056_TX0, 0x9);
24935                                 write_radio_reg(pi,
24936                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24937                                                 RADIO_2056_RX1, 0x9);
24938                         } else {
24939                                 if (pi->pubpi.radiorev >= 5) {
24940                                         pi->tx_rx_cal_radio_saveregs[4] =
24941                                             read_radio_reg(pi,
24942                                                            RADIO_2056_RX_LNAG_MASTER
24943                                                            | RADIO_2056_RX1);
24944
24945                                         write_radio_reg(pi,
24946                                                         RADIO_2056_RX_LNAG_MASTER
24947                                                         | RADIO_2056_RX1, 0x40);
24948
24949                                         write_radio_reg(pi,
24950                                                         RADIO_2056_TX_TXSPARE2 |
24951                                                         RADIO_2056_TX0, bias_g);
24952
24953                                         write_radio_reg(pi,
24954                                                         RADIO_2056_RX_RXSPARE2 |
24955                                                         RADIO_2056_RX1, bias_g);
24956                                 } else {
24957                                         pi->tx_rx_cal_radio_saveregs[4] =
24958                                             read_radio_reg(pi,
24959                                                            RADIO_2056_RX_LNAG_TUNE
24960                                                            | RADIO_2056_RX1);
24961
24962                                         offtune_val =
24963                                             (pi->
24964                                              tx_rx_cal_radio_saveregs[2] & 0xF0)
24965                                             >> 8;
24966                                         offtune_val =
24967                                             (offtune_val <= 0x7) ? 0xF : 0;
24968
24969                                         mod_radio_reg(pi,
24970                                                       RADIO_2056_RX_LNAG_TUNE |
24971                                                       RADIO_2056_RX1, 0xF0,
24972                                                       (offtune_val << 8));
24973                                 }
24974
24975                                 write_radio_reg(pi,
24976                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
24977                                                 RADIO_2056_TX0, 0x6);
24978                                 write_radio_reg(pi,
24979                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
24980                                                 RADIO_2056_RX1, 0x6);
24981                         }
24982                 }
24983         }
24984 }
24985
24986 static void wlc_phy_rxcal_radio_cleanup_nphy(phy_info_t *pi, u8 rx_core)
24987 {
24988         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24989                 if (rx_core == PHY_CORE_0) {
24990                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
24991                                 write_radio_reg(pi,
24992                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
24993                                                 pi->
24994                                                 tx_rx_cal_radio_saveregs[0]);
24995                                 write_radio_reg(pi,
24996                                                 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
24997                                                 pi->
24998                                                 tx_rx_cal_radio_saveregs[1]);
24999
25000                         } else {
25001                                 write_radio_reg(pi,
25002                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
25003                                                 pi->
25004                                                 tx_rx_cal_radio_saveregs[0]);
25005                                 write_radio_reg(pi,
25006                                                 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
25007                                                 pi->
25008                                                 tx_rx_cal_radio_saveregs[1]);
25009                         }
25010
25011                 } else {
25012                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25013                                 write_radio_reg(pi,
25014                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
25015                                                 pi->
25016                                                 tx_rx_cal_radio_saveregs[0]);
25017                                 write_radio_reg(pi,
25018                                                 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
25019                                                 pi->
25020                                                 tx_rx_cal_radio_saveregs[1]);
25021
25022                         } else {
25023                                 write_radio_reg(pi,
25024                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
25025                                                 pi->
25026                                                 tx_rx_cal_radio_saveregs[0]);
25027                                 write_radio_reg(pi,
25028                                                 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
25029                                                 pi->
25030                                                 tx_rx_cal_radio_saveregs[1]);
25031                         }
25032                 }
25033
25034         } else {
25035                 if (rx_core == PHY_CORE_0) {
25036                         write_radio_reg(pi,
25037                                         RADIO_2056_TX_RXIQCAL_TXMUX |
25038                                         RADIO_2056_TX1,
25039                                         pi->tx_rx_cal_radio_saveregs[0]);
25040
25041                         write_radio_reg(pi,
25042                                         RADIO_2056_RX_RXIQCAL_RXMUX |
25043                                         RADIO_2056_RX0,
25044                                         pi->tx_rx_cal_radio_saveregs[1]);
25045
25046                         if (pi->pubpi.radiorev >= 5) {
25047                                 write_radio_reg(pi,
25048                                                 RADIO_2056_RX_RXSPARE2 |
25049                                                 RADIO_2056_RX0,
25050                                                 pi->
25051                                                 tx_rx_cal_radio_saveregs[2]);
25052
25053                                 write_radio_reg(pi,
25054                                                 RADIO_2056_TX_TXSPARE2 |
25055                                                 RADIO_2056_TX1,
25056                                                 pi->
25057                                                 tx_rx_cal_radio_saveregs[3]);
25058                         }
25059
25060                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25061                                 if (pi->pubpi.radiorev >= 5) {
25062                                         write_radio_reg(pi,
25063                                                         RADIO_2056_RX_LNAA_MASTER
25064                                                         | RADIO_2056_RX0,
25065                                                         pi->
25066                                                         tx_rx_cal_radio_saveregs
25067                                                         [4]);
25068                                 } else {
25069                                         write_radio_reg(pi,
25070                                                         RADIO_2056_RX_LNAA_TUNE
25071                                                         | RADIO_2056_RX0,
25072                                                         pi->
25073                                                         tx_rx_cal_radio_saveregs
25074                                                         [4]);
25075                                 }
25076                         } else {
25077                                 if (pi->pubpi.radiorev >= 5) {
25078                                         write_radio_reg(pi,
25079                                                         RADIO_2056_RX_LNAG_MASTER
25080                                                         | RADIO_2056_RX0,
25081                                                         pi->
25082                                                         tx_rx_cal_radio_saveregs
25083                                                         [4]);
25084                                 } else {
25085                                         write_radio_reg(pi,
25086                                                         RADIO_2056_RX_LNAG_TUNE
25087                                                         | RADIO_2056_RX0,
25088                                                         pi->
25089                                                         tx_rx_cal_radio_saveregs
25090                                                         [4]);
25091                                 }
25092                         }
25093
25094                 } else {
25095                         write_radio_reg(pi,
25096                                         RADIO_2056_TX_RXIQCAL_TXMUX |
25097                                         RADIO_2056_TX0,
25098                                         pi->tx_rx_cal_radio_saveregs[0]);
25099
25100                         write_radio_reg(pi,
25101                                         RADIO_2056_RX_RXIQCAL_RXMUX |
25102                                         RADIO_2056_RX1,
25103                                         pi->tx_rx_cal_radio_saveregs[1]);
25104
25105                         if (pi->pubpi.radiorev >= 5) {
25106                                 write_radio_reg(pi,
25107                                                 RADIO_2056_RX_RXSPARE2 |
25108                                                 RADIO_2056_RX1,
25109                                                 pi->
25110                                                 tx_rx_cal_radio_saveregs[2]);
25111
25112                                 write_radio_reg(pi,
25113                                                 RADIO_2056_TX_TXSPARE2 |
25114                                                 RADIO_2056_TX0,
25115                                                 pi->
25116                                                 tx_rx_cal_radio_saveregs[3]);
25117                         }
25118
25119                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25120                                 if (pi->pubpi.radiorev >= 5) {
25121                                         write_radio_reg(pi,
25122                                                         RADIO_2056_RX_LNAA_MASTER
25123                                                         | RADIO_2056_RX1,
25124                                                         pi->
25125                                                         tx_rx_cal_radio_saveregs
25126                                                         [4]);
25127                                 } else {
25128                                         write_radio_reg(pi,
25129                                                         RADIO_2056_RX_LNAA_TUNE
25130                                                         | RADIO_2056_RX1,
25131                                                         pi->
25132                                                         tx_rx_cal_radio_saveregs
25133                                                         [4]);
25134                                 }
25135                         } else {
25136                                 if (pi->pubpi.radiorev >= 5) {
25137                                         write_radio_reg(pi,
25138                                                         RADIO_2056_RX_LNAG_MASTER
25139                                                         | RADIO_2056_RX1,
25140                                                         pi->
25141                                                         tx_rx_cal_radio_saveregs
25142                                                         [4]);
25143                                 } else {
25144                                         write_radio_reg(pi,
25145                                                         RADIO_2056_RX_LNAG_TUNE
25146                                                         | RADIO_2056_RX1,
25147                                                         pi->
25148                                                         tx_rx_cal_radio_saveregs
25149                                                         [4]);
25150                                 }
25151                         }
25152                 }
25153         }
25154 }
25155
25156 static void wlc_phy_rxcal_physetup_nphy(phy_info_t *pi, u8 rx_core)
25157 {
25158         u8 tx_core;
25159         u16 rx_antval, tx_antval;
25160
25161         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25162
25163                 tx_core = rx_core;
25164         } else {
25165                 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
25166         }
25167
25168         pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
25169         pi->tx_rx_cal_phy_saveregs[1] =
25170             read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
25171         pi->tx_rx_cal_phy_saveregs[2] =
25172             read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
25173         pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
25174         pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
25175         pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
25176         pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
25177         pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
25178         pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
25179         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25180                 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
25181                 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
25182                 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
25183                 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
25184         }
25185
25186         pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
25187         pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
25188         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25189                     0x29b, (0x1 << 0), (0) << 0);
25190
25191         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25192                     0x29b, (0x1 << 0), (0) << 0);
25193
25194         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25195
25196                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25197
25198                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
25199
25200         } else {
25201
25202                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
25203                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25204                 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
25205                 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
25206         }
25207
25208         mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
25209         mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
25210                     (0x1 << 2), (0x1 << 2));
25211         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
25212                 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
25213                             (0x1 << 0) | (0x1 << 1), 0);
25214                 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25215                             0x8f : 0xa5,
25216                             (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
25217         }
25218
25219         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
25220                                          RADIO_MIMO_CORESEL_CORE1 |
25221                                          RADIO_MIMO_CORESEL_CORE2);
25222
25223         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25224                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25225                                                   0, 0, 0,
25226                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
25227                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
25228                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25229                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
25230                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25231                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
25232                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25233                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
25234                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
25235                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
25236                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25237                 if (CHSPEC_IS40(pi->radio_chanspec)) {
25238                         wlc_phy_rfctrl_override_nphy_rev7(pi,
25239                                                           (0x1 << 7),
25240                                                           2, 0, 0,
25241                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
25242                 } else {
25243                         wlc_phy_rfctrl_override_nphy_rev7(pi,
25244                                                           (0x1 << 7),
25245                                                           0, 0, 0,
25246                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
25247                 }
25248                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
25249                                                   0, 0, 0,
25250                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25251                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
25252                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
25253         } else {
25254                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
25255         }
25256
25257         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
25258
25259         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25260
25261                 wlc_phy_rfctrlintc_override_nphy(pi,
25262                                                  NPHY_RfctrlIntc_override_TRSW,
25263                                                  0x1, rx_core + 1);
25264         } else {
25265
25266                 if (rx_core == PHY_CORE_0) {
25267                         rx_antval = 0x1;
25268                         tx_antval = 0x8;
25269                 } else {
25270                         rx_antval = 0x4;
25271                         tx_antval = 0x2;
25272                 }
25273
25274                 wlc_phy_rfctrlintc_override_nphy(pi,
25275                                                  NPHY_RfctrlIntc_override_TRSW,
25276                                                  rx_antval, rx_core + 1);
25277                 wlc_phy_rfctrlintc_override_nphy(pi,
25278                                                  NPHY_RfctrlIntc_override_TRSW,
25279                                                  tx_antval, tx_core + 1);
25280         }
25281 }
25282
25283 static void wlc_phy_rxcal_phycleanup_nphy(phy_info_t *pi, u8 rx_core)
25284 {
25285
25286         write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
25287         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
25288                       pi->tx_rx_cal_phy_saveregs[1]);
25289         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
25290                       pi->tx_rx_cal_phy_saveregs[2]);
25291         write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
25292         write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
25293
25294         write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
25295         write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
25296         write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
25297         write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
25298         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25299                 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
25300                 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
25301                 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
25302                 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
25303         }
25304
25305         write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
25306         write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
25307 }
25308
25309 static void
25310 wlc_phy_rxcal_gainctrl_nphy_rev5(phy_info_t *pi, u8 rx_core,
25311                                  u16 *rxgain, u8 cal_type)
25312 {
25313
25314         u16 num_samps;
25315         phy_iq_est_t est[PHY_CORE_MAX];
25316         u8 tx_core;
25317         nphy_iq_comp_t save_comp, zero_comp;
25318         u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0, thresh_pwr =
25319             10000;
25320         s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
25321         bool gainctrl_done = false;
25322         u8 mix_tia_gain = 3;
25323         s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
25324         s8 curr_gaintbl_index = 3;
25325         u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
25326         nphy_ipa_txrxgain_t *nphy_rxcal_gaintbl;
25327         u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
25328         int fine_gain_idx;
25329         s8 txpwrindex;
25330         u16 nphy_rxcal_txgain[2];
25331
25332         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25333
25334                 tx_core = rx_core;
25335         } else {
25336                 tx_core = 1 - rx_core;
25337         }
25338
25339         num_samps = 1024;
25340         desired_log2_pwr = (cal_type == 0) ? 13 : 13;
25341
25342         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
25343         zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
25344         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
25345
25346         if (CHSPEC_IS5G(pi->radio_chanspec)) {
25347                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25348                         mix_tia_gain = 3;
25349                 } else if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25350                         mix_tia_gain = 4;
25351                 } else {
25352                         mix_tia_gain = 6;
25353                 }
25354                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25355                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
25356                 } else {
25357                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
25358                 }
25359         } else {
25360                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25361                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
25362                 } else {
25363                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
25364                 }
25365         }
25366
25367         do {
25368
25369                 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
25370                     0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
25371                 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
25372                 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
25373                 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
25374                 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
25375                 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
25376
25377                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25378                         wlc_phy_rfctrl_override_1tomany_nphy(pi,
25379                                                              NPHY_REV7_RfctrlOverride_cmd_rxgain,
25380                                                              ((lpf_biq1 << 12) |
25381                                                               (lpf_biq0 << 8) |
25382                                                               (mix_tia_gain <<
25383                                                                4) | (lna2 << 2)
25384                                                               | lna1), 0x3, 0);
25385                 } else {
25386                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
25387                                                      ((hpvga << 12) |
25388                                                       (lpf_biq1 << 10) |
25389                                                       (lpf_biq0 << 8) |
25390                                                       (mix_tia_gain << 4) |
25391                                                       (lna2 << 2) | lna1), 0x3,
25392                                                      0);
25393                 }
25394
25395                 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
25396
25397                 if (txpwrindex == -1) {
25398                         nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
25399                         nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
25400                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
25401                                                  2, 0x110, 16,
25402                                                  nphy_rxcal_txgain);
25403                 } else {
25404                         wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
25405                                                  false);
25406                 }
25407
25408                 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
25409                                      NPHY_RXCAL_TONEFREQ_40MHz :
25410                                      NPHY_RXCAL_TONEFREQ_20MHz,
25411                                      NPHY_RXCAL_TONEAMP, 0, cal_type, false);
25412
25413                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25414                 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
25415                 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
25416                 curr_pwr = i_pwr + q_pwr;
25417
25418                 switch (gainctrl_dirn) {
25419                 case NPHY_RXCAL_GAIN_INIT:
25420                         if (curr_pwr > thresh_pwr) {
25421                                 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
25422                                 prev_gaintbl_index = curr_gaintbl_index;
25423                                 curr_gaintbl_index--;
25424                         } else {
25425                                 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
25426                                 prev_gaintbl_index = curr_gaintbl_index;
25427                                 curr_gaintbl_index++;
25428                         }
25429                         break;
25430
25431                 case NPHY_RXCAL_GAIN_UP:
25432                         if (curr_pwr > thresh_pwr) {
25433                                 gainctrl_done = true;
25434                                 optim_pwr = prev_pwr;
25435                                 optim_gaintbl_index = prev_gaintbl_index;
25436                         } else {
25437                                 prev_gaintbl_index = curr_gaintbl_index;
25438                                 curr_gaintbl_index++;
25439                         }
25440                         break;
25441
25442                 case NPHY_RXCAL_GAIN_DOWN:
25443                         if (curr_pwr > thresh_pwr) {
25444                                 prev_gaintbl_index = curr_gaintbl_index;
25445                                 curr_gaintbl_index--;
25446                         } else {
25447                                 gainctrl_done = true;
25448                                 optim_pwr = curr_pwr;
25449                                 optim_gaintbl_index = curr_gaintbl_index;
25450                         }
25451                         break;
25452
25453                 default:
25454                         ASSERT(0);
25455                 }
25456
25457                 if ((curr_gaintbl_index < 0) ||
25458                     (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
25459                         gainctrl_done = true;
25460                         optim_pwr = curr_pwr;
25461                         optim_gaintbl_index = prev_gaintbl_index;
25462                 } else {
25463                         prev_pwr = curr_pwr;
25464                 }
25465
25466                 wlc_phy_stopplayback_nphy(pi);
25467         } while (!gainctrl_done);
25468
25469         hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
25470         lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
25471         lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
25472         lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
25473         lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
25474         txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
25475
25476         actual_log2_pwr = wlc_phy_nbits(optim_pwr);
25477         delta_pwr = desired_log2_pwr - actual_log2_pwr;
25478
25479         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25480                 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
25481
25482                 if (fine_gain_idx + (int)lpf_biq0 > 10) {
25483                         lpf_biq1 = 10 - lpf_biq0;
25484                 } else {
25485                         lpf_biq1 = (u16) max(fine_gain_idx, 0);
25486                 }
25487                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
25488                                                      NPHY_REV7_RfctrlOverride_cmd_rxgain,
25489                                                      ((lpf_biq1 << 12) |
25490                                                       (lpf_biq0 << 8) |
25491                                                       (mix_tia_gain << 4) |
25492                                                       (lna2 << 2) | lna1), 0x3,
25493                                                      0);
25494         } else {
25495                 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
25496                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
25497                                              ((hpvga << 12) | (lpf_biq1 << 10) |
25498                                               (lpf_biq0 << 8) | (mix_tia_gain <<
25499                                                                  4) | (lna2 <<
25500                                                                        2) |
25501                                               lna1), 0x3, 0);
25502
25503         }
25504
25505         if (rxgain != NULL) {
25506                 *rxgain++ = lna1;
25507                 *rxgain++ = lna2;
25508                 *rxgain++ = mix_tia_gain;
25509                 *rxgain++ = lpf_biq0;
25510                 *rxgain++ = lpf_biq1;
25511                 *rxgain = hpvga;
25512         }
25513
25514         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
25515 }
25516
25517 static void
25518 wlc_phy_rxcal_gainctrl_nphy(phy_info_t *pi, u8 rx_core, u16 *rxgain,
25519                             u8 cal_type)
25520 {
25521         wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
25522 }
25523
25524 static u8
25525 wlc_phy_rc_sweep_nphy(phy_info_t *pi, u8 core_idx, u8 loopback_type)
25526 {
25527         u32 target_bws[2] = { 9500, 21000 };
25528         u32 ref_tones[2] = { 3000, 6000 };
25529         u32 target_bw, ref_tone;
25530
25531         u32 target_pwr_ratios[2] = { 28606, 18468 };
25532         u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
25533
25534         u16 start_rccal_ovr_val = 128;
25535         u16 txlpf_rccal_lpc_ovr_val = 128;
25536         u16 rxlpf_rccal_hpc_ovr_val = 159;
25537
25538         u16 orig_txlpf_rccal_lpc_ovr_val;
25539         u16 orig_rxlpf_rccal_hpc_ovr_val;
25540         u16 radio_addr_offset_rx;
25541         u16 radio_addr_offset_tx;
25542         u16 orig_dcBypass;
25543         u16 orig_RxStrnFilt40Num[6];
25544         u16 orig_RxStrnFilt40Den[4];
25545         u16 orig_rfctrloverride[2];
25546         u16 orig_rfctrlauxreg[2];
25547         u16 orig_rfctrlrssiothers;
25548         u16 tx_lpf_bw = 4;
25549
25550         u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
25551         u16 lpf_hpc = 7, hpvga_hpc = 7;
25552
25553         s8 rccal_stepsize;
25554         u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
25555         u32 ref_iq_vals = 0, target_iq_vals = 0;
25556         u16 num_samps, log_num_samps = 10;
25557         phy_iq_est_t est[PHY_CORE_MAX];
25558
25559         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25560                 return 0;
25561         }
25562
25563         num_samps = (1 << log_num_samps);
25564
25565         if (CHSPEC_IS40(pi->radio_chanspec)) {
25566                 target_bw = target_bws[1];
25567                 target_pwr_ratio = target_pwr_ratios[1];
25568                 ref_tone = ref_tones[1];
25569                 rx_lpf_bw = rx_lpf_bws[1];
25570         } else {
25571                 target_bw = target_bws[0];
25572                 target_pwr_ratio = target_pwr_ratios[0];
25573                 ref_tone = ref_tones[0];
25574                 rx_lpf_bw = rx_lpf_bws[0];
25575         }
25576
25577         if (core_idx == 0) {
25578                 radio_addr_offset_rx = RADIO_2056_RX0;
25579                 radio_addr_offset_tx =
25580                     (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
25581         } else {
25582                 radio_addr_offset_rx = RADIO_2056_RX1;
25583                 radio_addr_offset_tx =
25584                     (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
25585         }
25586
25587         orig_txlpf_rccal_lpc_ovr_val =
25588             read_radio_reg(pi,
25589                            (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx));
25590         orig_rxlpf_rccal_hpc_ovr_val =
25591             read_radio_reg(pi,
25592                            (RADIO_2056_RX_RXLPF_RCCAL_HPC |
25593                             radio_addr_offset_rx));
25594
25595         orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
25596
25597         orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
25598         orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
25599         orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
25600         orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
25601         orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
25602         orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
25603         orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
25604         orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
25605         orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
25606         orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
25607
25608         orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
25609         orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
25610         orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
25611         orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
25612         orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
25613
25614         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
25615                         txlpf_rccal_lpc_ovr_val);
25616
25617         write_radio_reg(pi,
25618                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
25619                         rxlpf_rccal_hpc_ovr_val);
25620
25621         mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
25622
25623         write_phy_reg(pi, 0x267, 0x02d4);
25624         write_phy_reg(pi, 0x268, 0x0000);
25625         write_phy_reg(pi, 0x269, 0x0000);
25626         write_phy_reg(pi, 0x26a, 0x0000);
25627         write_phy_reg(pi, 0x26b, 0x0000);
25628         write_phy_reg(pi, 0x26c, 0x02d4);
25629         write_phy_reg(pi, 0x26d, 0x0000);
25630         write_phy_reg(pi, 0x26e, 0x0000);
25631         write_phy_reg(pi, 0x26f, 0x0000);
25632         write_phy_reg(pi, 0x270, 0x0000);
25633
25634         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
25635         or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
25636         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
25637         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
25638
25639         mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
25640                     (0x7 << 10), (tx_lpf_bw << 10));
25641         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
25642                     (0x7 << 0), (hpvga_hpc << 0));
25643         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
25644                     (0x7 << 4), (lpf_hpc << 4));
25645         mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
25646                     (0x7 << 8), (rx_lpf_bw << 8));
25647
25648         rccal_stepsize = 16;
25649         rccal_val = start_rccal_ovr_val + rccal_stepsize;
25650
25651         while (rccal_stepsize >= 0) {
25652                 write_radio_reg(pi,
25653                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25654                                  radio_addr_offset_rx), rccal_val);
25655
25656                 if (rccal_stepsize == 16) {
25657
25658                         wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
25659                                              0, 1, false);
25660                         OSL_DELAY(2);
25661
25662                         wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25663
25664                         if (core_idx == 0) {
25665                                 ref_iq_vals =
25666                                     max_t(u32, (est[0].i_pwr +
25667                                          est[0].q_pwr) >> (log_num_samps + 1),
25668                                         1);
25669                         } else {
25670                                 ref_iq_vals =
25671                                     max_t(u32, (est[1].i_pwr +
25672                                          est[1].q_pwr) >> (log_num_samps + 1),
25673                                         1);
25674                         }
25675
25676                         wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
25677                                              0, 1, false);
25678                         OSL_DELAY(2);
25679                 }
25680
25681                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
25682
25683                 if (core_idx == 0) {
25684                         target_iq_vals =
25685                             (est[0].i_pwr + est[0].q_pwr) >> (log_num_samps +
25686                                                               1);
25687                 } else {
25688                         target_iq_vals =
25689                             (est[1].i_pwr + est[1].q_pwr) >> (log_num_samps +
25690                                                               1);
25691                 }
25692                 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
25693
25694                 if (rccal_stepsize == 0) {
25695                         rccal_stepsize--;
25696                 } else if (rccal_stepsize == 1) {
25697                         last_rccal_val = rccal_val;
25698                         rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
25699                         last_pwr_ratio = pwr_ratio;
25700                         rccal_stepsize--;
25701                 } else {
25702                         rccal_stepsize = (rccal_stepsize >> 1);
25703                         rccal_val += ((pwr_ratio > target_pwr_ratio) ?
25704                                       rccal_stepsize : (-rccal_stepsize));
25705                 }
25706
25707                 if (rccal_stepsize == -1) {
25708                         best_rccal_val =
25709                             (ABS((int)last_pwr_ratio - (int)target_pwr_ratio) <
25710                              ABS((int)pwr_ratio -
25711                                  (int)target_pwr_ratio)) ? last_rccal_val :
25712                             rccal_val;
25713
25714                         if (CHSPEC_IS40(pi->radio_chanspec)) {
25715                                 if ((best_rccal_val > 140)
25716                                     || (best_rccal_val < 135)) {
25717                                         best_rccal_val = 138;
25718                                 }
25719                         } else {
25720                                 if ((best_rccal_val > 142)
25721                                     || (best_rccal_val < 137)) {
25722                                         best_rccal_val = 140;
25723                                 }
25724                         }
25725
25726                         write_radio_reg(pi,
25727                                         (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25728                                          radio_addr_offset_rx), best_rccal_val);
25729                 }
25730         }
25731
25732         wlc_phy_stopplayback_nphy(pi);
25733
25734         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
25735                         orig_txlpf_rccal_lpc_ovr_val);
25736         write_radio_reg(pi,
25737                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
25738                         orig_rxlpf_rccal_hpc_ovr_val);
25739
25740         mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
25741
25742         write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
25743         write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
25744         write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
25745         write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
25746         write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
25747         write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
25748         write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
25749         write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
25750         write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
25751         write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
25752
25753         write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
25754         write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
25755         write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
25756         write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
25757         write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
25758
25759         pi->nphy_anarxlpf_adjusted = false;
25760
25761         return best_rccal_val - 0x80;
25762 }
25763
25764 #define WAIT_FOR_SCOPE  4000000
25765 static int
25766 wlc_phy_cal_rxiq_nphy_rev3(phy_info_t *pi, nphy_txgains_t target_gain,
25767                            u8 cal_type, bool debug)
25768 {
25769         u16 orig_BBConfig;
25770         u8 core_no, rx_core;
25771         u8 best_rccal[2];
25772         u16 gain_save[2];
25773         u16 cal_gain[2];
25774         nphy_iqcal_params_t cal_params[2];
25775         u8 rxcore_state;
25776         s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
25777         s8 txlpf_idac;
25778         bool phyhang_avoid_state = false;
25779         bool skip_rxiqcal = false;
25780
25781         orig_BBConfig = read_phy_reg(pi, 0x01);
25782         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25783
25784         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25785
25786         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25787                 phyhang_avoid_state = pi->phyhang_avoid;
25788                 pi->phyhang_avoid = false;
25789         }
25790
25791         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25792
25793         for (core_no = 0; core_no <= 1; core_no++) {
25794                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25795                                               &cal_params[core_no]);
25796                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25797         }
25798
25799         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25800
25801         rxcore_state = wlc_phy_rxcore_getstate_nphy((wlc_phy_t *) pi);
25802
25803         for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
25804
25805                 skip_rxiqcal =
25806                     ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
25807
25808                 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
25809
25810                 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
25811
25812                 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
25813
25814                         wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
25815
25816                         wlc_phy_tx_tone_nphy(pi,
25817                                              (CHSPEC_IS40(pi->radio_chanspec)) ?
25818                                              NPHY_RXCAL_TONEFREQ_40MHz :
25819                                              NPHY_RXCAL_TONEFREQ_20MHz,
25820                                              NPHY_RXCAL_TONEAMP, 0, cal_type,
25821                                              false);
25822
25823                         if (debug)
25824                                 OSL_DELAY(WAIT_FOR_SCOPE);
25825
25826                         wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
25827                         wlc_phy_stopplayback_nphy(pi);
25828                 }
25829
25830                 if (((cal_type == 1) || (cal_type == 2))
25831                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
25832
25833                         if (rx_core == PHY_CORE_1) {
25834
25835                                 if (rxcore_state == 1) {
25836                                         wlc_phy_rxcore_setstate_nphy((wlc_phy_t
25837                                                                       *) pi, 3);
25838                                 }
25839
25840                                 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
25841                                                             1);
25842
25843                                 best_rccal[rx_core] =
25844                                     wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
25845                                 pi->nphy_rccal_value = best_rccal[rx_core];
25846
25847                                 if (rxcore_state == 1) {
25848                                         wlc_phy_rxcore_setstate_nphy((wlc_phy_t
25849                                                                       *) pi,
25850                                                                      rxcore_state);
25851                                 }
25852                         }
25853                 }
25854
25855                 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
25856
25857                 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
25858                 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
25859         }
25860
25861         if ((cal_type == 1) || (cal_type == 2)) {
25862
25863                 best_rccal[0] = best_rccal[1];
25864                 write_radio_reg(pi,
25865                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
25866                                  RADIO_2056_RX0), (best_rccal[0] | 0x80));
25867
25868                 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
25869                         rxlpf_rccal_hpc =
25870                             (((int)best_rccal[rx_core] - 12) >> 1) + 10;
25871                         txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
25872
25873                         if (PHY_IPA(pi)) {
25874                                 txlpf_rccal_lpc += IS40MHZ(pi) ? 24 : 12;
25875                                 txlpf_idac = IS40MHZ(pi) ? 0x0e : 0x13;
25876                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
25877                                                  TXLPF_IDAC_4, txlpf_idac);
25878                         }
25879
25880                         rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31), 0);
25881                         txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31), 0);
25882
25883                         write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
25884                                              ((rx_core ==
25885                                                PHY_CORE_0) ? RADIO_2056_RX0 :
25886                                               RADIO_2056_RX1)),
25887                                         (rxlpf_rccal_hpc | 0x80));
25888
25889                         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
25890                                              ((rx_core ==
25891                                                PHY_CORE_0) ? RADIO_2056_TX0 :
25892                                               RADIO_2056_TX1)),
25893                                         (txlpf_rccal_lpc | 0x80));
25894                 }
25895         }
25896
25897         write_phy_reg(pi, 0x01, orig_BBConfig);
25898
25899         wlc_phy_resetcca_nphy(pi);
25900
25901         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25902                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
25903                                                      NPHY_REV7_RfctrlOverride_cmd_rxgain,
25904                                                      0, 0x3, 1);
25905         } else {
25906                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
25907         }
25908         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
25909
25910         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
25911                                  gain_save);
25912
25913         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25914                 pi->phyhang_avoid = phyhang_avoid_state;
25915         }
25916
25917         wlc_phy_stay_in_carriersearch_nphy(pi, false);
25918
25919         return BCME_OK;
25920 }
25921
25922 static int
25923 wlc_phy_cal_rxiq_nphy_rev2(phy_info_t *pi, nphy_txgains_t target_gain,
25924                            bool debug)
25925 {
25926         phy_iq_est_t est[PHY_CORE_MAX];
25927         u8 core_num, rx_core, tx_core;
25928         u16 lna_vals[] = { 0x3, 0x3, 0x1 };
25929         u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
25930         u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
25931         s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
25932         s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
25933         u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
25934         u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
25935         u16 num_samps;
25936         u32 i_pwr, q_pwr, tot_pwr[3];
25937         u8 gain_pass, use_hpf_num;
25938         u16 mask, val1, val2;
25939         u16 core_no;
25940         u16 gain_save[2];
25941         u16 cal_gain[2];
25942         nphy_iqcal_params_t cal_params[2];
25943         u8 phy_bw;
25944         int bcmerror = BCME_OK;
25945         bool first_playtone = true;
25946
25947         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25948
25949         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25950
25951                 wlc_phy_reapply_txcal_coeffs_nphy(pi);
25952         }
25953
25954         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25955
25956         for (core_no = 0; core_no <= 1; core_no++) {
25957                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25958                                               &cal_params[core_no]);
25959                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25960         }
25961
25962         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25963
25964         num_samps = 1024;
25965         desired_log2_pwr = 13;
25966
25967         for (core_num = 0; core_num < 2; core_num++) {
25968
25969                 rx_core = core_num;
25970                 tx_core = 1 - core_num;
25971
25972                 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
25973                 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25974                                                 0xa6 : 0xa7);
25975                 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
25976                 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
25977                                                  0x91 : 0x92);
25978                 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
25979                                                  0x91 : 0x92);
25980
25981                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
25982                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
25983
25984                 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
25985                            ((0x1 << 1) | (0x1 << 2)));
25986                 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
25987
25988                 if (((pi->nphy_rxcalparams) & 0xff000000)) {
25989
25990                         write_phy_reg(pi,
25991                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
25992                                       (CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 :
25993                                        0x110));
25994                 } else {
25995
25996                         write_phy_reg(pi,
25997                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
25998                                       (CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 :
25999                                        0x120));
26000                 }
26001
26002                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
26003                               (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
26004                                0x114));
26005
26006                 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
26007                 if (rx_core == PHY_CORE_0) {
26008                         val1 = RADIO_2055_COUPLE_RX_MASK;
26009                         val2 = RADIO_2055_COUPLE_TX_MASK;
26010                 } else {
26011                         val1 = RADIO_2055_COUPLE_TX_MASK;
26012                         val2 = RADIO_2055_COUPLE_RX_MASK;
26013                 }
26014
26015                 if ((pi->nphy_rxcalparams & 0x10000)) {
26016                         mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
26017                                       val1);
26018                         mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
26019                                       val2);
26020                 }
26021
26022                 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
26023
26024                         if (debug)
26025                                 OSL_DELAY(WAIT_FOR_SCOPE);
26026
26027                         if (gain_pass < 3) {
26028                                 curr_lna = lna_vals[gain_pass];
26029                                 curr_hpf1 = hpf1_vals[gain_pass];
26030                                 curr_hpf2 = hpf2_vals[gain_pass];
26031                         } else {
26032
26033                                 if (tot_pwr[1] > 10000) {
26034                                         curr_lna = lna_vals[2];
26035                                         curr_hpf1 = hpf1_vals[2];
26036                                         curr_hpf2 = hpf2_vals[2];
26037                                         use_hpf_num = 1;
26038                                         curr_hpf = curr_hpf1;
26039                                         actual_log2_pwr =
26040                                             wlc_phy_nbits(tot_pwr[2]);
26041                                 } else {
26042                                         if (tot_pwr[0] > 10000) {
26043                                                 curr_lna = lna_vals[1];
26044                                                 curr_hpf1 = hpf1_vals[1];
26045                                                 curr_hpf2 = hpf2_vals[1];
26046                                                 use_hpf_num = 1;
26047                                                 curr_hpf = curr_hpf1;
26048                                                 actual_log2_pwr =
26049                                                     wlc_phy_nbits(tot_pwr[1]);
26050                                         } else {
26051                                                 curr_lna = lna_vals[0];
26052                                                 curr_hpf1 = hpf1_vals[0];
26053                                                 curr_hpf2 = hpf2_vals[0];
26054                                                 use_hpf_num = 2;
26055                                                 curr_hpf = curr_hpf2;
26056                                                 actual_log2_pwr =
26057                                                     wlc_phy_nbits(tot_pwr[0]);
26058                                         }
26059                                 }
26060
26061                                 hpf_change = desired_log2_pwr - actual_log2_pwr;
26062                                 curr_hpf += hpf_change;
26063                                 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
26064                                 if (use_hpf_num == 1) {
26065                                         curr_hpf1 = curr_hpf;
26066                                 } else {
26067                                         curr_hpf2 = curr_hpf;
26068                                 }
26069                         }
26070
26071                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
26072                                                      ((curr_hpf2 << 8) |
26073                                                       (curr_hpf1 << 4) |
26074                                                       (curr_lna << 2)), 0x3, 0);
26075                         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
26076
26077                         wlc_phy_stopplayback_nphy(pi);
26078
26079                         if (first_playtone) {
26080                                 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
26081                                                                 (u16) (pi->
26082                                                                           nphy_rxcalparams
26083                                                                           &
26084                                                                           0xffff),
26085                                                                 0, 0, true);
26086                                 first_playtone = false;
26087                         } else {
26088                                 phy_bw =
26089                                     (CHSPEC_IS40(pi->radio_chanspec)) ? 40 : 20;
26090                                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
26091                                                         0, 0, 0, true);
26092                         }
26093
26094                         if (bcmerror == BCME_OK) {
26095                                 if (gain_pass < 3) {
26096
26097                                         wlc_phy_rx_iq_est_nphy(pi, est,
26098                                                                num_samps, 32,
26099                                                                0);
26100                                         i_pwr =
26101                                             (est[rx_core].i_pwr +
26102                                              num_samps / 2) / num_samps;
26103                                         q_pwr =
26104                                             (est[rx_core].q_pwr +
26105                                              num_samps / 2) / num_samps;
26106                                         tot_pwr[gain_pass] = i_pwr + q_pwr;
26107                                 } else {
26108
26109                                         wlc_phy_calc_rx_iq_comp_nphy(pi,
26110                                                                      (1 <<
26111                                                                       rx_core));
26112                                 }
26113
26114                                 wlc_phy_stopplayback_nphy(pi);
26115                         }
26116
26117                         if (bcmerror != BCME_OK)
26118                                 break;
26119                 }
26120
26121                 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
26122                 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
26123
26124                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
26125                               0x92, orig_RfctrlIntcTx);
26126                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
26127                               0x92, orig_RfctrlIntcRx);
26128                 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
26129                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
26130                               0xa7, orig_AfectrlCore);
26131                 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
26132
26133                 if (bcmerror != BCME_OK)
26134                         break;
26135         }
26136
26137         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
26138         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
26139
26140         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26141                                  gain_save);
26142
26143         wlc_phy_stay_in_carriersearch_nphy(pi, false);
26144
26145         return bcmerror;
26146 }
26147
26148 int
26149 wlc_phy_cal_rxiq_nphy(phy_info_t *pi, nphy_txgains_t target_gain,
26150                       u8 cal_type, bool debug)
26151 {
26152         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26153
26154                 cal_type = 0;
26155         }
26156         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26157                 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
26158                                                   debug);
26159         } else {
26160                 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
26161         }
26162 }
26163
26164 static void wlc_phy_extpa_set_tx_digi_filts_nphy(phy_info_t *pi)
26165 {
26166         int j, type = 2;
26167         u16 addr_offset = 0x2c5;
26168
26169         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26170                 write_phy_reg(pi, addr_offset + j,
26171                               NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
26172         }
26173 }
26174
26175 static void wlc_phy_ipa_set_tx_digi_filts_nphy(phy_info_t *pi)
26176 {
26177         int j, type;
26178         u16 addr_offset[] = { 0x186, 0x195,
26179                 0x2c5
26180         };
26181
26182         for (type = 0; type < 3; type++) {
26183                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26184                         write_phy_reg(pi, addr_offset[type] + j,
26185                                       NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
26186                 }
26187         }
26188
26189         if (IS40MHZ(pi)) {
26190                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26191                         write_phy_reg(pi, 0x186 + j,
26192                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
26193                 }
26194         } else {
26195                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26196                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26197                                 write_phy_reg(pi, 0x186 + j,
26198                                               NPHY_IPA_REV4_txdigi_filtcoeffs[5]
26199                                               [j]);
26200                         }
26201                 }
26202
26203                 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
26204                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26205                                 write_phy_reg(pi, 0x2c5 + j,
26206                                               NPHY_IPA_REV4_txdigi_filtcoeffs[6]
26207                                               [j]);
26208                         }
26209                 }
26210         }
26211 }
26212
26213 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(phy_info_t *pi)
26214 {
26215         int j;
26216
26217         if (IS40MHZ(pi)) {
26218                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26219                         write_phy_reg(pi, 0x195 + j,
26220                                       NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
26221                 }
26222         } else {
26223                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++) {
26224                         write_phy_reg(pi, 0x186 + j,
26225                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
26226                 }
26227         }
26228 }
26229
26230 static u16 wlc_phy_ipa_get_bbmult_nphy(phy_info_t *pi)
26231 {
26232         u16 m0m1;
26233
26234         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
26235
26236         return m0m1;
26237 }
26238
26239 static void wlc_phy_ipa_set_bbmult_nphy(phy_info_t *pi, u8 m0, u8 m1)
26240 {
26241         u16 m0m1 = (u16) ((m0 << 8) | m1);
26242
26243         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
26244         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
26245 }
26246
26247 static u32 *wlc_phy_get_ipa_gaintbl_nphy(phy_info_t *pi)
26248 {
26249         u32 *tx_pwrctrl_tbl = NULL;
26250
26251         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26252
26253                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26254
26255                         if ((pi->pubpi.radiorev == 4)
26256                             || (pi->pubpi.radiorev == 6)) {
26257
26258                                 tx_pwrctrl_tbl =
26259                                     nphy_tpc_txgain_ipa_2g_2057rev4n6;
26260                         } else if (pi->pubpi.radiorev == 3) {
26261
26262                                 tx_pwrctrl_tbl =
26263                                     nphy_tpc_txgain_ipa_2g_2057rev3;
26264                         } else if (pi->pubpi.radiorev == 5) {
26265
26266                                 tx_pwrctrl_tbl =
26267                                     nphy_tpc_txgain_ipa_2g_2057rev5;
26268                         } else if ((pi->pubpi.radiorev == 7)
26269                                    || (pi->pubpi.radiorev == 8)) {
26270
26271                                 tx_pwrctrl_tbl =
26272                                     nphy_tpc_txgain_ipa_2g_2057rev7;
26273                         } else {
26274                                 ASSERT(0);
26275                         }
26276
26277                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
26278
26279                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
26280                         if (CHIPID(pi->sh->chip) == BCM47162_CHIP_ID) {
26281
26282                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
26283                         }
26284
26285                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
26286
26287                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
26288                 } else {
26289
26290                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
26291                 }
26292
26293         } else {
26294
26295                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26296                         if ((pi->pubpi.radiorev == 3) ||
26297                             (pi->pubpi.radiorev == 4) ||
26298                             (pi->pubpi.radiorev == 6)) {
26299
26300                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
26301                         } else if ((pi->pubpi.radiorev == 7)
26302                                    || (pi->pubpi.radiorev == 8)) {
26303
26304                                 tx_pwrctrl_tbl =
26305                                     nphy_tpc_txgain_ipa_5g_2057rev7;
26306                         } else {
26307                                 ASSERT(0);
26308                         }
26309
26310                 } else {
26311                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
26312                 }
26313         }
26314
26315         return tx_pwrctrl_tbl;
26316 }
26317
26318 static void
26319 wlc_phy_papd_cal_setup_nphy(phy_info_t *pi, nphy_papd_restore_state *state,
26320                             u8 core)
26321 {
26322         s32 tone_freq;
26323         u8 off_core;
26324         u16 mixgain = 0;
26325
26326         off_core = core ^ 0x1;
26327         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26328
26329                 if (NREV_IS(pi->pubpi.phy_rev, 7)
26330                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
26331                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26332                                                           wlc_phy_read_lpf_bw_ctl_nphy
26333                                                           (pi, 0), 0, 0,
26334                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26335                 }
26336
26337                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26338                         if (pi->pubpi.radiorev == 5) {
26339                                 mixgain = (core == 0) ? 0x20 : 0x00;
26340
26341                         } else if ((pi->pubpi.radiorev == 7)
26342                                    || (pi->pubpi.radiorev == 8)) {
26343
26344                                 mixgain = 0x00;
26345
26346                         } else if ((pi->pubpi.radiorev <= 4)
26347                                    || (pi->pubpi.radiorev == 6)) {
26348
26349                                 mixgain = 0x00;
26350                         } else {
26351                                 ASSERT(0);
26352                         }
26353
26354                 } else {
26355                         if ((pi->pubpi.radiorev == 4) ||
26356                             (pi->pubpi.radiorev == 6)) {
26357
26358                                 mixgain = 0x50;
26359                         } else if ((pi->pubpi.radiorev == 3)
26360                                    || (pi->pubpi.radiorev == 7)
26361                                    || (pi->pubpi.radiorev == 8)) {
26362
26363                                 mixgain = 0x0;
26364                         } else {
26365                                 ASSERT(0);
26366                         }
26367                 }
26368
26369                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
26370                                                   mixgain, (1 << core), 0,
26371                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26372
26373                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26374                                                      NPHY_REV7_RfctrlOverride_cmd_tx_pu,
26375                                                      1, (1 << core), 0);
26376                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26377                                                      NPHY_REV7_RfctrlOverride_cmd_tx_pu,
26378                                                      0, (1 << off_core), 0);
26379
26380                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26381                                                   0, 0x3, 0,
26382                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26383                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
26384                                                   (1 << core), 0,
26385                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26386                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
26387                                                   (1 << core), 0,
26388                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26389                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
26390                                                   (1 << core), 0,
26391                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26392                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
26393                                                   (1 << core), 0,
26394                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26395                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
26396                                                   (1 << core), 0,
26397                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26398                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
26399                                                   (1 << core), 0,
26400                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26401                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
26402                                                   (1 << core), 0,
26403                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26404
26405                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
26406                                                   0, (1 << core), 0,
26407                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26408                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
26409                                                   (1 << core), 0,
26410                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26411
26412                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
26413                                                     0xa6 : 0xa7);
26414                 state->afeoverride[core] =
26415                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
26416                 state->afectrl[off_core] =
26417                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
26418                 state->afeoverride[off_core] =
26419                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
26420
26421                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
26422                             (0x1 << 2), 0);
26423                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
26424                                  0xa5), (0x1 << 2), (0x1 << 2));
26425
26426                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
26427                             (0x1 << 2), (0x1 << 2));
26428                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
26429                                  0x8f), (0x1 << 2), (0x1 << 2));
26430
26431                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26432                         state->pwrup[core] =
26433                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26434                                             TXRXCOUPLE_2G_PWRUP);
26435                         state->atten[core] =
26436                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26437                                             TXRXCOUPLE_2G_ATTEN);
26438                         state->pwrup[off_core] =
26439                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26440                                             TXRXCOUPLE_2G_PWRUP);
26441                         state->atten[off_core] =
26442                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26443                                             TXRXCOUPLE_2G_ATTEN);
26444
26445                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26446                                          TXRXCOUPLE_2G_PWRUP, 0xc);
26447
26448                         if ((pi->pubpi.radiorev == 3) ||
26449                             (pi->pubpi.radiorev == 4) ||
26450                             (pi->pubpi.radiorev == 6)) {
26451
26452                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26453                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
26454
26455                         } else if (pi->pubpi.radiorev == 5) {
26456
26457                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26458                                                  TXRXCOUPLE_2G_ATTEN,
26459                                                  (core == 0) ? 0xf7 : 0xf2);
26460
26461                         } else if ((pi->pubpi.radiorev == 7)
26462                                    || (pi->pubpi.radiorev == 8)) {
26463
26464                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26465                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
26466
26467                         } else {
26468                                 ASSERT(0);
26469                         }
26470
26471                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26472                                          TXRXCOUPLE_2G_PWRUP, 0x0);
26473                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26474                                          TXRXCOUPLE_2G_ATTEN, 0xff);
26475
26476                 } else {
26477                         state->pwrup[core] =
26478                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26479                                             TXRXCOUPLE_5G_PWRUP);
26480                         state->atten[core] =
26481                             READ_RADIO_REG3(pi, RADIO_2057, TX, core,
26482                                             TXRXCOUPLE_5G_ATTEN);
26483                         state->pwrup[off_core] =
26484                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26485                                             TXRXCOUPLE_5G_PWRUP);
26486                         state->atten[off_core] =
26487                             READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26488                                             TXRXCOUPLE_5G_ATTEN);
26489
26490                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26491                                          TXRXCOUPLE_5G_PWRUP, 0xc);
26492
26493                         if ((pi->pubpi.radiorev == 7)
26494                             || (pi->pubpi.radiorev == 8)) {
26495
26496                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26497                                                  TXRXCOUPLE_5G_ATTEN, 0xf4);
26498
26499                         } else {
26500                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26501                                                  TXRXCOUPLE_5G_ATTEN, 0xf0);
26502                         }
26503
26504                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26505                                          TXRXCOUPLE_5G_PWRUP, 0x0);
26506                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
26507                                          TXRXCOUPLE_5G_ATTEN, 0xff);
26508                 }
26509
26510                 tone_freq = 4000;
26511
26512                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
26513
26514                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26515                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
26516
26517                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26518                             0x2a4, (0x1 << 13), (1) << 13);
26519
26520                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
26521                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
26522
26523                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
26524                             0x2a4, (0x1 << 13), (0) << 13);
26525
26526         } else {
26527
26528                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
26529
26530                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
26531
26532                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
26533
26534                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
26535                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
26536
26537                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
26538                                                     0xa6 : 0xa7);
26539                 state->afeoverride[core] =
26540                     read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
26541
26542                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
26543                             (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
26544                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
26545                                  0xa5),
26546                             (0x1 << 0) |
26547                             (0x1 << 1) |
26548                             (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
26549
26550                 state->vga_master[core] =
26551                     READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
26552                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
26553                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26554                         state->fbmix[core] =
26555                             READ_RADIO_REG2(pi, RADIO_2056, RX, core,
26556                                             TXFBMIX_G);
26557                         state->intpa_master[core] =
26558                             READ_RADIO_REG2(pi, RADIO_2056, TX, core,
26559                                             INTPAG_MASTER);
26560
26561                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
26562                                          0x03);
26563                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26564                                          INTPAG_MASTER, 0x04);
26565                 } else {
26566                         state->fbmix[core] =
26567                             READ_RADIO_REG2(pi, RADIO_2056, RX, core,
26568                                             TXFBMIX_A);
26569                         state->intpa_master[core] =
26570                             READ_RADIO_REG2(pi, RADIO_2056, TX, core,
26571                                             INTPAA_MASTER);
26572
26573                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
26574                                          0x03);
26575                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26576                                          INTPAA_MASTER, 0x04);
26577
26578                 }
26579
26580                 tone_freq = 4000;
26581
26582                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
26583
26584                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26585                             0x29b, (0x1 << 0), (1) << 0);
26586
26587                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
26588                             0x29b, (0x1 << 0), (0) << 0);
26589
26590                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
26591         }
26592 }
26593
26594 static void
26595 wlc_phy_papd_cal_cleanup_nphy(phy_info_t *pi, nphy_papd_restore_state *state)
26596 {
26597         u8 core;
26598
26599         wlc_phy_stopplayback_nphy(pi);
26600
26601         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26602
26603                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26604
26605                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26606                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26607                                                  TXRXCOUPLE_2G_PWRUP, 0);
26608                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26609                                                  TXRXCOUPLE_2G_ATTEN,
26610                                                  state->atten[core]);
26611                         } else {
26612                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26613                                                  TXRXCOUPLE_5G_PWRUP, 0);
26614                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
26615                                                  TXRXCOUPLE_5G_ATTEN,
26616                                                  state->atten[core]);
26617                         }
26618                 }
26619
26620                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6)) {
26621                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
26622                                                           1, 0x3, 0,
26623                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
26624                 } else {
26625                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),
26626                                                           0, 0x3, 1,
26627                                                           NPHY_REV7_RFCTRLOVERRIDE_ID0);
26628                 }
26629                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
26630                                                   0, 0x3, 1,
26631                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26632                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
26633                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26634                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
26635                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26636                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
26637                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26638                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
26639                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26640                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
26641                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26642                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
26643                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26644                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
26645                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26646                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
26647                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26648                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
26649                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26650                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
26651                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26652                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
26653                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26654                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
26655                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26656                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
26657                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26658                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
26659                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26660                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
26661                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26662
26663                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26664
26665                         write_phy_reg(pi, (core == PHY_CORE_0) ?
26666                                       0xa6 : 0xa7, state->afectrl[core]);
26667                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
26668                                       0xa5, state->afeoverride[core]);
26669                 }
26670
26671                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
26672                                             (state->mm & 0xff));
26673
26674                 if (NREV_IS(pi->pubpi.phy_rev, 7)
26675                     || NREV_GE(pi->pubpi.phy_rev, 8)) {
26676                         wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7), 0, 0,
26677                                                           1,
26678                                                           NPHY_REV7_RFCTRLOVERRIDE_ID1);
26679                 }
26680         } else {
26681
26682                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
26683                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
26684                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
26685
26686                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
26687                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
26688
26689                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26690
26691                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
26692                                          state->vga_master[core]);
26693                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
26694                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
26695                                                  TXFBMIX_G, state->fbmix[core]);
26696                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26697                                                  INTPAG_MASTER,
26698                                                  state->intpa_master[core]);
26699                         } else {
26700                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
26701                                                  TXFBMIX_A, state->fbmix[core]);
26702                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
26703                                                  INTPAA_MASTER,
26704                                                  state->intpa_master[core]);
26705                         }
26706
26707                         write_phy_reg(pi, (core == PHY_CORE_0) ?
26708                                       0xa6 : 0xa7, state->afectrl[core]);
26709                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
26710                                       0xa5, state->afeoverride[core]);
26711                 }
26712
26713                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
26714                                             (state->mm & 0xff));
26715
26716                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
26717         }
26718 }
26719
26720 static void
26721 wlc_phy_a1_nphy(phy_info_t *pi, u8 core, u32 winsz, u32 start,
26722                 u32 end)
26723 {
26724         u32 *buf, *src, *dst, sz;
26725
26726         sz = end - start + 1;
26727         ASSERT(end > start);
26728         ASSERT(end < NPHY_PAPD_EPS_TBL_SIZE);
26729
26730         buf = MALLOC(pi->sh->osh, 2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE);
26731         if (NULL == buf) {
26732                 return;
26733         }
26734
26735         src = buf;
26736         dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
26737
26738         wlc_phy_table_read_nphy(pi,
26739                                 (core ==
26740                                  PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
26741                                  NPHY_TBL_ID_EPSILONTBL1),
26742                                 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
26743
26744         do {
26745                 u32 phy_a1, phy_a2;
26746                 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
26747
26748                 phy_a1 = end - min(end, (winsz >> 1));
26749                 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1, end + (winsz >> 1));
26750                 phy_a3 = phy_a2 - phy_a1 + 1;
26751                 phy_a6 = 0;
26752                 phy_a7 = 0;
26753
26754                 do {
26755                         wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
26756                                                     &phy_a5);
26757                         phy_a6 += phy_a4;
26758                         phy_a7 += phy_a5;
26759                 } while (phy_a2-- != phy_a1);
26760
26761                 phy_a6 /= phy_a3;
26762                 phy_a7 /= phy_a3;
26763                 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
26764         } while (end-- != start);
26765
26766         wlc_phy_table_write_nphy(pi,
26767                                  (core ==
26768                                   PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
26769                                  NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
26770
26771         MFREE(pi->sh->osh, buf, 2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE);
26772 }
26773
26774 static void
26775 wlc_phy_a2_nphy(phy_info_t *pi, nphy_ipa_txcalgains_t *txgains,
26776                 phy_cal_mode_t cal_mode, u8 core)
26777 {
26778         u16 phy_a1, phy_a2, phy_a3;
26779         u16 phy_a4, phy_a5;
26780         bool phy_a6;
26781         u8 phy_a7, m[2];
26782         u32 phy_a8 = 0;
26783         nphy_txgains_t phy_a9;
26784
26785         if (NREV_LT(pi->pubpi.phy_rev, 3))
26786                 return;
26787
26788         phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
26789
26790         ASSERT((cal_mode == CAL_FULL) || (cal_mode == CAL_GCTRL)
26791                || (cal_mode == CAL_SOFT));
26792         phy_a6 = ((cal_mode == CAL_GCTRL)
26793                   || (cal_mode == CAL_SOFT)) ? true : false;
26794
26795         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26796
26797                 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
26798
26799                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26800                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
26801                                   (phy_a9.txgm[core] << 12) |
26802                                   (phy_a9.pga[core] << 8) |
26803                                   (txgains->gains.pad[core] << 3) |
26804                                   (phy_a9.ipa[core]));
26805                 } else {
26806                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
26807                                   (phy_a9.txgm[core] << 12) |
26808                                   (txgains->gains.pga[core] << 8) |
26809                                   (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
26810                 }
26811
26812                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26813                                                      NPHY_REV7_RfctrlOverride_cmd_txgain,
26814                                                      phy_a5, (1 << core), 0);
26815
26816                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26817                         if ((pi->pubpi.radiorev <= 4)
26818                             || (pi->pubpi.radiorev == 6)) {
26819
26820                                 m[core] = IS40MHZ(pi) ? 60 : 79;
26821                         } else {
26822
26823                                 m[core] = IS40MHZ(pi) ? 45 : 64;
26824                         }
26825
26826                 } else {
26827                         m[core] = IS40MHZ(pi) ? 75 : 107;
26828                 }
26829
26830                 m[phy_a7] = 0;
26831                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
26832
26833                 phy_a2 = 63;
26834
26835                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26836                         if (CHIPID(pi->sh->chip) == BCM6362_CHIP_ID) {
26837                                 phy_a1 = 35;
26838                                 phy_a3 = 35;
26839                         } else if ((pi->pubpi.radiorev == 4)
26840                                    || (pi->pubpi.radiorev == 6)) {
26841                                 phy_a1 = 30;
26842                                 phy_a3 = 30;
26843                         } else {
26844                                 phy_a1 = 25;
26845                                 phy_a3 = 25;
26846                         }
26847                 } else {
26848                         if ((pi->pubpi.radiorev == 5)
26849                             || (pi->pubpi.radiorev == 7)
26850                             || (pi->pubpi.radiorev == 8)) {
26851                                 phy_a1 = 25;
26852                                 phy_a3 = 25;
26853                         } else {
26854                                 phy_a1 = 35;
26855                                 phy_a3 = 35;
26856                         }
26857                 }
26858
26859                 if (cal_mode == CAL_GCTRL) {
26860                         if ((pi->pubpi.radiorev == 5)
26861                             && (CHSPEC_IS2G(pi->radio_chanspec))) {
26862                                 phy_a1 = 55;
26863                         } else if (((pi->pubpi.radiorev == 7) &&
26864                                     (CHSPEC_IS2G(pi->radio_chanspec))) ||
26865                                    ((pi->pubpi.radiorev == 8) &&
26866                                     (CHSPEC_IS2G(pi->radio_chanspec)))) {
26867                                 phy_a1 = 60;
26868                         } else {
26869                                 phy_a1 = 63;
26870                         }
26871
26872                 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
26873
26874                         phy_a1 = 35;
26875                         phy_a3 = 35;
26876                 }
26877
26878                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
26879                             0x29b, (0x1 << 0), (1) << 0);
26880
26881                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
26882                             0x29b, (0x1 << 0), (0) << 0);
26883
26884                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26885                             0x2a4, (0x1 << 13), (1) << 13);
26886
26887                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
26888                             0x2a4, (0x1 << 13), (0) << 13);
26889
26890                 write_phy_reg(pi, 0x2a1, 0x80);
26891                 write_phy_reg(pi, 0x2a2, 0x100);
26892
26893                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26894                             0x2a4, (0x7 << 4), (11) << 4);
26895
26896                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26897                             0x2a4, (0x7 << 8), (11) << 8);
26898
26899                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
26900                             0x2a4, (0x7 << 0), (0x3) << 0);
26901
26902                 write_phy_reg(pi, 0x2e5, 0x20);
26903
26904                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
26905
26906                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
26907
26908                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
26909
26910                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26911                                                   1, ((core == 0) ? 1 : 2), 0,
26912                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26913                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26914                                                   0, ((core == 0) ? 2 : 1), 0,
26915                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26916
26917                 write_phy_reg(pi, 0x2be, 1);
26918                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
26919
26920                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26921                                                   0, 0x3, 0,
26922                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26923
26924                 wlc_phy_table_write_nphy(pi,
26925                                          (core ==
26926                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
26927                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
26928                                          32, &phy_a8);
26929
26930                 if (cal_mode != CAL_GCTRL) {
26931                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26932                                 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
26933                         }
26934                 }
26935
26936                 wlc_phy_rfctrl_override_1tomany_nphy(pi,
26937                                                      NPHY_REV7_RfctrlOverride_cmd_txgain,
26938                                                      phy_a5, (1 << core), 1);
26939
26940         } else {
26941
26942                 if (txgains) {
26943                         if (txgains->useindex) {
26944                                 phy_a4 = 15 - ((txgains->index) >> 3);
26945                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26946                                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
26947                                                 phy_a5 = 0x00f7 | (phy_a4 << 8);
26948
26949                                                 if (CHIPID(pi->sh->chip) ==
26950                                                     BCM47162_CHIP_ID) {
26951                                                         phy_a5 =
26952                                                             0x10f7 | (phy_a4 <<
26953                                                                       8);
26954                                                 }
26955                                         } else
26956                                             if (NREV_IS(pi->pubpi.phy_rev, 5))
26957                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
26958                                         else
26959                                                 phy_a5 = 0x50f7 | (phy_a4 << 8);
26960                                 } else {
26961                                         phy_a5 = 0x70f7 | (phy_a4 << 8);
26962                                 }
26963                                 wlc_phy_rfctrl_override_nphy(pi,
26964                                                              (0x1 << 13),
26965                                                              phy_a5,
26966                                                              (1 << core), 0);
26967                         } else {
26968                                 wlc_phy_rfctrl_override_nphy(pi,
26969                                                              (0x1 << 13),
26970                                                              0x5bf7,
26971                                                              (1 << core), 0);
26972                         }
26973                 }
26974
26975                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
26976                         m[core] = IS40MHZ(pi) ? 45 : 64;
26977                 } else {
26978                         m[core] = IS40MHZ(pi) ? 75 : 107;
26979                 }
26980
26981                 m[phy_a7] = 0;
26982                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
26983
26984                 phy_a2 = 63;
26985
26986                 if (cal_mode == CAL_FULL) {
26987                         phy_a1 = 25;
26988                         phy_a3 = 25;
26989                 } else if (cal_mode == CAL_SOFT) {
26990                         phy_a1 = 25;
26991                         phy_a3 = 25;
26992                 } else if (cal_mode == CAL_GCTRL) {
26993                         phy_a1 = 63;
26994                         phy_a3 = 25;
26995                 } else {
26996
26997                         phy_a1 = 25;
26998                         phy_a3 = 25;
26999                 }
27000
27001                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27002                             0x29b, (0x1 << 0), (1) << 0);
27003
27004                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
27005                             0x29b, (0x1 << 0), (0) << 0);
27006
27007                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
27008                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27009                                     0x2a4, (0x1 << 13), (1) << 13);
27010
27011                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
27012                                     0x2a4, (0x1 << 13), (0) << 13);
27013
27014                         write_phy_reg(pi, 0x2a1, 0x20);
27015                         write_phy_reg(pi, 0x2a2, 0x60);
27016
27017                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27018                                     0x2a4, (0xf << 4), (9) << 4);
27019
27020                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27021                                     0x2a4, (0xf << 8), (9) << 8);
27022
27023                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27024                                     0x2a4, (0xf << 0), (0x2) << 0);
27025
27026                         write_phy_reg(pi, 0x2e5, 0x20);
27027                 } else {
27028                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27029                                     0x2a4, (0x1 << 11), (1) << 11);
27030
27031                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
27032                                     0x2a4, (0x1 << 11), (0) << 11);
27033
27034                         write_phy_reg(pi, 0x2a1, 0x80);
27035                         write_phy_reg(pi, 0x2a2, 0x600);
27036
27037                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27038                                     0x2a4, (0x7 << 4), (0) << 4);
27039
27040                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27041                                     0x2a4, (0x7 << 8), (0) << 8);
27042
27043                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
27044                                     0x2a4, (0x7 << 0), (0x3) << 0);
27045
27046                         mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
27047
27048                 }
27049
27050                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
27051
27052                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
27053
27054                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
27055
27056                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
27057
27058                 write_phy_reg(pi, 0x2be, 1);
27059                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
27060
27061                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
27062
27063                 wlc_phy_table_write_nphy(pi,
27064                                          (core ==
27065                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
27066                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
27067                                          32, &phy_a8);
27068
27069                 if (cal_mode != CAL_GCTRL) {
27070                         wlc_phy_a1_nphy(pi, core, 5, 0, 40);
27071                 }
27072         }
27073 }
27074
27075 static u8 wlc_phy_a3_nphy(phy_info_t *pi, u8 start_gain, u8 core)
27076 {
27077         int phy_a1;
27078         int phy_a2;
27079         bool phy_a3;
27080         nphy_ipa_txcalgains_t phy_a4;
27081         bool phy_a5 = false;
27082         bool phy_a6 = true;
27083         s32 phy_a7, phy_a8;
27084         u32 phy_a9;
27085         int phy_a10;
27086         bool phy_a11 = false;
27087         int phy_a12;
27088         u8 phy_a13 = 0;
27089         u8 phy_a14;
27090         u8 *phy_a15 = NULL;
27091
27092         phy_a4.useindex = true;
27093         phy_a12 = start_gain;
27094
27095         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27096
27097                 phy_a2 = 20;
27098                 phy_a1 = 1;
27099
27100                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
27101                         if (pi->pubpi.radiorev == 5) {
27102
27103                                 phy_a15 = pad_gain_codes_used_2057rev5;
27104                                 phy_a13 = sizeof(pad_gain_codes_used_2057rev5) /
27105                                     sizeof(pad_gain_codes_used_2057rev5[0]) - 1;
27106
27107                         } else if ((pi->pubpi.radiorev == 7)
27108                                    || (pi->pubpi.radiorev == 8)) {
27109
27110                                 phy_a15 = pad_gain_codes_used_2057rev7;
27111                                 phy_a13 = sizeof(pad_gain_codes_used_2057rev7) /
27112                                     sizeof(pad_gain_codes_used_2057rev7[0]) - 1;
27113
27114                         } else {
27115
27116                                 phy_a15 = pad_all_gain_codes_2057;
27117                                 phy_a13 = sizeof(pad_all_gain_codes_2057) /
27118                                     sizeof(pad_all_gain_codes_2057[0]) - 1;
27119                         }
27120
27121                 } else {
27122
27123                         phy_a15 = pga_all_gain_codes_2057;
27124                         phy_a13 = sizeof(pga_all_gain_codes_2057) /
27125                             sizeof(pga_all_gain_codes_2057[0]) - 1;
27126                 }
27127
27128                 phy_a14 = 0;
27129
27130                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
27131                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27132                                 phy_a4.gains.pad[core] =
27133                                     (u16) phy_a15[phy_a12];
27134                         } else {
27135                                 phy_a4.gains.pga[core] =
27136                                     (u16) phy_a15[phy_a12];
27137                         }
27138
27139                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
27140
27141                         wlc_phy_table_read_nphy(pi,
27142                                                 (core ==
27143                                                  PHY_CORE_0 ?
27144                                                  NPHY_TBL_ID_EPSILONTBL0 :
27145                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
27146                                                 63, 32, &phy_a9);
27147
27148                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
27149
27150                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
27151                                   (phy_a8 == 4095) || (phy_a8 == -4096));
27152
27153                         if (!phy_a6 && (phy_a3 != phy_a5)) {
27154                                 if (!phy_a3) {
27155                                         phy_a12 -= (u8) phy_a1;
27156                                 }
27157                                 phy_a11 = true;
27158                                 break;
27159                         }
27160
27161                         if (phy_a3)
27162                                 phy_a12 += (u8) phy_a1;
27163                         else
27164                                 phy_a12 -= (u8) phy_a1;
27165
27166                         if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
27167                                 if (phy_a12 < phy_a14) {
27168                                         phy_a12 = phy_a14;
27169                                 } else {
27170                                         phy_a12 = phy_a13;
27171                                 }
27172                                 phy_a11 = true;
27173                                 break;
27174                         }
27175
27176                         phy_a6 = false;
27177                         phy_a5 = phy_a3;
27178                 }
27179
27180         } else {
27181                 phy_a2 = 10;
27182                 phy_a1 = 8;
27183                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
27184                         phy_a4.index = (u8) phy_a12;
27185                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
27186
27187                         wlc_phy_table_read_nphy(pi,
27188                                                 (core ==
27189                                                  PHY_CORE_0 ?
27190                                                  NPHY_TBL_ID_EPSILONTBL0 :
27191                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
27192                                                 63, 32, &phy_a9);
27193
27194                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
27195
27196                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
27197                                   (phy_a8 == 4095) || (phy_a8 == -4096));
27198
27199                         if (!phy_a6 && (phy_a3 != phy_a5)) {
27200                                 if (!phy_a3) {
27201                                         phy_a12 -= (u8) phy_a1;
27202                                 }
27203                                 phy_a11 = true;
27204                                 break;
27205                         }
27206
27207                         if (phy_a3)
27208                                 phy_a12 += (u8) phy_a1;
27209                         else
27210                                 phy_a12 -= (u8) phy_a1;
27211
27212                         if ((phy_a12 < 0) || (phy_a12 > 127)) {
27213                                 if (phy_a12 < 0) {
27214                                         phy_a12 = 0;
27215                                 } else {
27216                                         phy_a12 = 127;
27217                                 }
27218                                 phy_a11 = true;
27219                                 break;
27220                         }
27221
27222                         phy_a6 = false;
27223                         phy_a5 = phy_a3;
27224                 }
27225
27226         }
27227
27228         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27229                 return (u8) phy_a15[phy_a12];
27230         } else {
27231                 return (u8) phy_a12;
27232         }
27233
27234 }
27235
27236 static void wlc_phy_a4(phy_info_t *pi, bool full_cal)
27237 {
27238         nphy_ipa_txcalgains_t phy_b1[2];
27239         nphy_papd_restore_state phy_b2;
27240         bool phy_b3;
27241         u8 phy_b4;
27242         u8 phy_b5;
27243         s16 phy_b6, phy_b7, phy_b8;
27244         u16 phy_b9;
27245         s16 phy_b10, phy_b11, phy_b12;
27246
27247         phy_b11 = 0;
27248         phy_b12 = 0;
27249         phy_b7 = 0;
27250         phy_b8 = 0;
27251         phy_b6 = 0;
27252
27253         if (pi->nphy_papd_skip == 1)
27254                 return;
27255
27256         phy_b3 =
27257             (0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
27258         if (!phy_b3) {
27259                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
27260         }
27261
27262         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27263
27264         pi->nphy_force_papd_cal = false;
27265
27266         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
27267                 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
27268                     wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
27269
27270         pi->nphy_papd_last_cal = pi->sh->now;
27271         pi->nphy_papd_recal_counter++;
27272
27273         if (NORADIO_ENAB(pi->pubpi))
27274                 return;
27275
27276         phy_b4 = pi->nphy_txpwrctrl;
27277         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
27278
27279         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
27280                                  nphy_papd_scaltbl);
27281         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
27282                                  nphy_papd_scaltbl);
27283
27284         phy_b9 = read_phy_reg(pi, 0x01);
27285         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27286
27287         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27288                 s32 i, val = 0;
27289                 for (i = 0; i < 64; i++) {
27290                         wlc_phy_table_write_nphy(pi,
27291                                                  ((phy_b5 ==
27292                                                    PHY_CORE_0) ?
27293                                                   NPHY_TBL_ID_EPSILONTBL0 :
27294                                                   NPHY_TBL_ID_EPSILONTBL1), 1,
27295                                                  i, 32, &val);
27296                 }
27297         }
27298
27299         wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
27300
27301         phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
27302         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27303                 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
27304
27305                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27306                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27307
27308                                 if ((pi->pubpi.radiorev == 3)
27309                                     || (pi->pubpi.radiorev == 4)
27310                                     || (pi->pubpi.radiorev == 6)) {
27311
27312                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27313                                             23;
27314
27315                                 } else if (pi->pubpi.radiorev == 5) {
27316
27317                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27318                                             0;
27319                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27320                                             wlc_phy_a3_nphy(pi,
27321                                                             pi->
27322                                                             nphy_papd_cal_gain_index
27323                                                             [phy_b5], phy_b5);
27324
27325                                 } else if ((pi->pubpi.radiorev == 7)
27326                                            || (pi->pubpi.radiorev == 8)) {
27327
27328                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27329                                             0;
27330                                         pi->nphy_papd_cal_gain_index[phy_b5] =
27331                                             wlc_phy_a3_nphy(pi,
27332                                                             pi->
27333                                                             nphy_papd_cal_gain_index
27334                                                             [phy_b5], phy_b5);
27335
27336                                 } else {
27337                                         ASSERT(0);
27338                                 }
27339
27340                                 phy_b1[phy_b5].gains.pad[phy_b5] =
27341                                     pi->nphy_papd_cal_gain_index[phy_b5];
27342
27343                         } else {
27344                                 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
27345                                 pi->nphy_papd_cal_gain_index[phy_b5] =
27346                                     wlc_phy_a3_nphy(pi,
27347                                                     pi->
27348                                                     nphy_papd_cal_gain_index
27349                                                     [phy_b5], phy_b5);
27350                                 phy_b1[phy_b5].gains.pga[phy_b5] =
27351                                     pi->nphy_papd_cal_gain_index[phy_b5];
27352                         }
27353                 } else {
27354                         phy_b1[phy_b5].useindex = true;
27355                         phy_b1[phy_b5].index = 16;
27356                         phy_b1[phy_b5].index =
27357                             wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index, phy_b5);
27358
27359                         pi->nphy_papd_cal_gain_index[phy_b5] =
27360                             15 - ((phy_b1[phy_b5].index) >> 3);
27361                 }
27362
27363                 switch (pi->nphy_papd_cal_type) {
27364                 case 0:
27365                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
27366                         break;
27367                 case 1:
27368                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
27369                         break;
27370                 }
27371
27372                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27373                         wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
27374                 }
27375         }
27376
27377         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27378                 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
27379         }
27380
27381         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
27382                 int eps_offset = 0;
27383
27384                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27385                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27386                                 if (pi->pubpi.radiorev == 3) {
27387                                         eps_offset = -2;
27388                                 } else if (pi->pubpi.radiorev == 5) {
27389                                         eps_offset = 3;
27390                                 } else {
27391                                         eps_offset = -1;
27392                                 }
27393                         } else {
27394                                 eps_offset = 2;
27395                         }
27396
27397                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27398                                 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
27399                                 phy_b10 = 0;
27400                                 if ((pi->pubpi.radiorev == 3) ||
27401                                     (pi->pubpi.radiorev == 4) ||
27402                                     (pi->pubpi.radiorev == 6)) {
27403                                         phy_b12 =
27404                                             -
27405                                             (nphy_papd_padgain_dlt_2g_2057rev3n4
27406                                              [phy_b8]
27407                                              + 1) / 2;
27408                                         phy_b10 = -1;
27409                                 } else if (pi->pubpi.radiorev == 5) {
27410                                         phy_b12 =
27411                                             -(nphy_papd_padgain_dlt_2g_2057rev5
27412                                               [phy_b8]
27413                                               + 1) / 2;
27414                                 } else if ((pi->pubpi.radiorev == 7) ||
27415                                            (pi->pubpi.radiorev == 8)) {
27416                                         phy_b12 =
27417                                             -(nphy_papd_padgain_dlt_2g_2057rev7
27418                                               [phy_b8]
27419                                               + 1) / 2;
27420                                 } else {
27421                                         ASSERT(0);
27422                                 }
27423                         } else {
27424                                 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
27425                                 if ((pi->pubpi.radiorev == 3) ||
27426                                     (pi->pubpi.radiorev == 4) ||
27427                                     (pi->pubpi.radiorev == 6)) {
27428                                         phy_b11 =
27429                                             -(nphy_papd_pgagain_dlt_5g_2057
27430                                               [phy_b7]
27431                                               + 1) / 2;
27432                                 } else if ((pi->pubpi.radiorev == 7)
27433                                            || (pi->pubpi.radiorev == 8)) {
27434                                         phy_b11 =
27435                                             -(nphy_papd_pgagain_dlt_5g_2057rev7
27436                                               [phy_b7]
27437                                               + 1) / 2;
27438                                 } else {
27439                                         ASSERT(0);
27440                                 }
27441
27442                                 phy_b10 = -9;
27443                         }
27444
27445                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27446                                 phy_b6 =
27447                                     -60 + 27 + eps_offset + phy_b12 + phy_b10;
27448                         } else {
27449                                 phy_b6 =
27450                                     -60 + 27 + eps_offset + phy_b11 + phy_b10;
27451                         }
27452
27453                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
27454                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
27455
27456                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
27457                 } else {
27458                         if (NREV_LT(pi->pubpi.phy_rev, 5)) {
27459                                 eps_offset = 4;
27460                         } else {
27461                                 eps_offset = 2;
27462                         }
27463
27464                         phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
27465
27466                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
27467                                 phy_b11 =
27468                                     -(nphy_papd_pga_gain_delta_ipa_2g[phy_b7] +
27469                                       1) / 2;
27470                                 phy_b10 = 0;
27471                         } else {
27472                                 phy_b11 =
27473                                     -(nphy_papd_pga_gain_delta_ipa_5g[phy_b7] +
27474                                       1) / 2;
27475                                 phy_b10 = -9;
27476                         }
27477
27478                         phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
27479
27480                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
27481                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
27482
27483                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
27484                 }
27485         }
27486
27487         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
27488                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
27489
27490         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
27491                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
27492
27493         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
27494                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
27495                             0x2a4, (0x1 << 13), (0) << 13);
27496
27497                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
27498                             0x2a4, (0x1 << 13), (0) << 13);
27499
27500         } else {
27501                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
27502                             0x2a4, (0x1 << 11), (0) << 11);
27503
27504                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
27505                             0x2a4, (0x1 << 11), (0) << 11);
27506
27507         }
27508         pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
27509
27510         write_phy_reg(pi, 0x01, phy_b9);
27511
27512         wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
27513
27514         wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
27515         if (phy_b4 == PHY_TPC_HW_OFF) {
27516                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
27517                                          (s8) (pi->nphy_txpwrindex[0].
27518                                                  index_internal), false);
27519                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
27520                                          (s8) (pi->nphy_txpwrindex[1].
27521                                                  index_internal), false);
27522         }
27523
27524         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27525
27526         if (!phy_b3) {
27527                 wlapi_enable_mac(pi->sh->physhim);
27528         }
27529 }
27530
27531 void wlc_phy_txpwr_fixpower_nphy(phy_info_t *pi)
27532 {
27533         uint core;
27534         u32 txgain;
27535         u16 rad_gain, dac_gain, bbmult, m1m2;
27536         u8 txpi[2], chan_freq_range;
27537         s32 rfpwr_offset;
27538
27539         ASSERT(pi->nphy_txpwrctrl == PHY_TPC_HW_OFF);
27540
27541         if (pi->phyhang_avoid)
27542                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27543
27544         if (pi->sh->sromrev < 4) {
27545                 txpi[0] = txpi[1] = 72;
27546         } else {
27547
27548                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27549                 switch (chan_freq_range) {
27550                 case WL_CHAN_FREQ_RANGE_2G:
27551                         txpi[0] = pi->nphy_txpid2g[0];
27552                         txpi[1] = pi->nphy_txpid2g[1];
27553                         break;
27554                 case WL_CHAN_FREQ_RANGE_5GL:
27555                         txpi[0] = pi->nphy_txpid5gl[0];
27556                         txpi[1] = pi->nphy_txpid5gl[1];
27557                         break;
27558                 case WL_CHAN_FREQ_RANGE_5GM:
27559                         txpi[0] = pi->nphy_txpid5g[0];
27560                         txpi[1] = pi->nphy_txpid5g[1];
27561                         break;
27562                 case WL_CHAN_FREQ_RANGE_5GH:
27563                         txpi[0] = pi->nphy_txpid5gh[0];
27564                         txpi[1] = pi->nphy_txpid5gh[1];
27565                         break;
27566                 default:
27567                         txpi[0] = txpi[1] = 91;
27568                         break;
27569                 }
27570         }
27571
27572         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27573                 txpi[0] = txpi[1] = 30;
27574         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27575                 txpi[0] = txpi[1] = 40;
27576         }
27577
27578         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27579
27580                 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27581                     (txpi[1] < 40) || (txpi[1] > 100))
27582                         txpi[0] = txpi[1] = 91;
27583         }
27584
27585         pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27586         pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27587         pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27588         pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27589
27590         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27591                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27592                         if (PHY_IPA(pi)) {
27593                                 u32 *tx_gaintbl =
27594                                     wlc_phy_get_ipa_gaintbl_nphy(pi);
27595                                 txgain = tx_gaintbl[txpi[core]];
27596                         } else {
27597                                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27598                                         if NREV_IS
27599                                                 (pi->pubpi.phy_rev, 3) {
27600                                                 txgain =
27601                                                     nphy_tpc_5GHz_txgain_rev3
27602                                                     [txpi[core]];
27603                                         } else if NREV_IS
27604                                                 (pi->pubpi.phy_rev, 4) {
27605                                                 txgain =
27606                                                     (pi->srom_fem5g.extpagain ==
27607                                                      3) ?
27608                                                     nphy_tpc_5GHz_txgain_HiPwrEPA
27609                                                     [txpi[core]] :
27610                                                     nphy_tpc_5GHz_txgain_rev4
27611                                                     [txpi[core]];
27612                                         } else {
27613                                                 txgain =
27614                                                     nphy_tpc_5GHz_txgain_rev5
27615                                                     [txpi[core]];
27616                                         }
27617                                 } else {
27618                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
27619                                             (pi->srom_fem2g.extpagain == 3)) {
27620                                                 txgain =
27621                                                     nphy_tpc_txgain_HiPwrEPA
27622                                                     [txpi[core]];
27623                                         } else {
27624                                                 txgain =
27625                                                     nphy_tpc_txgain_rev3[txpi
27626                                                                          [core]];
27627                                         }
27628                                 }
27629                         }
27630                 } else {
27631                         txgain = nphy_tpc_txgain[txpi[core]];
27632                 }
27633
27634                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27635                         rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27636                 } else {
27637                         rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27638                 }
27639
27640                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27641                         dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27642                 } else {
27643                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27644                 }
27645                 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27646
27647                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27648                         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27649                                          0xa5), (0x1 << 8), (0x1 << 8));
27650                 } else {
27651                         mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27652                 }
27653                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27654
27655                 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27656                                          &rad_gain);
27657
27658                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27659                 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27660                 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27661                 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27662
27663                 if (PHY_IPA(pi)) {
27664                         wlc_phy_table_read_nphy(pi,
27665                                                 (core ==
27666                                                  PHY_CORE_0 ?
27667                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
27668                                                  NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27669                                                 576 + txpi[core], 32,
27670                                                 &rfpwr_offset);
27671
27672                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27673                                     0x29b, (0x1ff << 4),
27674                                     ((s16) rfpwr_offset) << 4);
27675
27676                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27677                                     0x29b, (0x1 << 2), (1) << 2);
27678
27679                 }
27680         }
27681
27682         and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27683
27684         if (pi->phyhang_avoid)
27685                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27686 }
27687
27688 static void
27689 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27690                                 u8 tmp_max_pwr, u8 rate_start,
27691                                 u8 rate_end)
27692 {
27693         u8 rate;
27694         u8 word_num, nibble_num;
27695         u8 tmp_nibble;
27696
27697         for (rate = rate_start; rate <= rate_end; rate++) {
27698                 word_num = (rate - rate_start) >> 2;
27699                 nibble_num = (rate - rate_start) & 0x3;
27700                 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27701
27702                 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27703         }
27704 }
27705
27706 static void
27707 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27708                             u8 rate_start, u8 rate_end)
27709 {
27710         u8 rate;
27711
27712         for (rate = rate_start; rate <= rate_end; rate++) {
27713                 srom_max[rate] -= 2 * pwr_offset;
27714         }
27715 }
27716
27717 void
27718 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
27719                                 u8 rate_mcs_end, u8 rate_ofdm_start)
27720 {
27721         u8 rate1, rate2;
27722
27723         rate2 = rate_ofdm_start;
27724         for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
27725                 power[rate1] = power[rate2];
27726                 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
27727         }
27728         power[rate_mcs_end] = power[rate_mcs_end - 1];
27729 }
27730
27731 void
27732 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
27733                                 u8 rate_ofdm_end, u8 rate_mcs_start)
27734 {
27735         u8 rate1, rate2;
27736
27737         for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
27738              rate1 <= rate_ofdm_end; rate1++, rate2++) {
27739                 power[rate1] = power[rate2];
27740                 if (rate1 == rate_ofdm_start)
27741                         power[++rate1] = power[rate2];
27742         }
27743 }
27744
27745 void wlc_phy_txpwr_apply_nphy(phy_info_t *pi)
27746 {
27747         uint rate1, rate2, band_num;
27748         u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
27749         u8 tmp_max_pwr = 0;
27750         u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
27751         u8 *tx_srom_max_rate = NULL;
27752
27753         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP); band_num++) {
27754                 switch (band_num) {
27755                 case 0:
27756
27757                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
27758                                           pi->nphy_pwrctrl_info[1].max_pwr_2g);
27759
27760                         pwr_offsets1[0] = pi->cck2gpo;
27761                         wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
27762                                                         pwr_offsets1,
27763                                                         tmp_max_pwr,
27764                                                         TXP_FIRST_CCK,
27765                                                         TXP_LAST_CCK);
27766
27767                         pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
27768                         pwr_offsets1[1] =
27769                             (u16) (pi->ofdm2gpo >> 16) & 0xffff;
27770
27771                         pwr_offsets2 = pi->mcs2gpo;
27772
27773                         tmp_cddpo = pi->cdd2gpo;
27774                         tmp_stbcpo = pi->stbc2gpo;
27775                         tmp_bw40po = pi->bw402gpo;
27776
27777                         tx_srom_max_rate = pi->tx_srom_max_rate_2g;
27778                         break;
27779                 case 1:
27780
27781                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
27782                                           pi->nphy_pwrctrl_info[1].max_pwr_5gm);
27783
27784                         pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
27785                         pwr_offsets1[1] =
27786                             (u16) (pi->ofdm5gpo >> 16) & 0xffff;
27787
27788                         pwr_offsets2 = pi->mcs5gpo;
27789
27790                         tmp_cddpo = pi->cdd5gpo;
27791                         tmp_stbcpo = pi->stbc5gpo;
27792                         tmp_bw40po = pi->bw405gpo;
27793
27794                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
27795                         break;
27796                 case 2:
27797
27798                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
27799                                           pi->nphy_pwrctrl_info[1].max_pwr_5gl);
27800
27801                         pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
27802                         pwr_offsets1[1] =
27803                             (u16) (pi->ofdm5glpo >> 16) & 0xffff;
27804
27805                         pwr_offsets2 = pi->mcs5glpo;
27806
27807                         tmp_cddpo = pi->cdd5glpo;
27808                         tmp_stbcpo = pi->stbc5glpo;
27809                         tmp_bw40po = pi->bw405glpo;
27810
27811                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
27812                         break;
27813                 case 3:
27814
27815                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
27816                                           pi->nphy_pwrctrl_info[1].max_pwr_5gh);
27817
27818                         pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
27819                         pwr_offsets1[1] =
27820                             (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
27821
27822                         pwr_offsets2 = pi->mcs5ghpo;
27823
27824                         tmp_cddpo = pi->cdd5ghpo;
27825                         tmp_stbcpo = pi->stbc5ghpo;
27826                         tmp_bw40po = pi->bw405ghpo;
27827
27828                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
27829                         break;
27830                 }
27831
27832                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
27833                                                 tmp_max_pwr, TXP_FIRST_OFDM,
27834                                                 TXP_LAST_OFDM);
27835
27836                 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
27837                                                 TXP_FIRST_MCS_20_SISO,
27838                                                 TXP_LAST_MCS_20_SISO,
27839                                                 TXP_FIRST_OFDM);
27840
27841                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
27842                                                 tmp_max_pwr,
27843                                                 TXP_FIRST_MCS_20_CDD,
27844                                                 TXP_LAST_MCS_20_CDD);
27845
27846                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27847
27848                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
27849                                                     TXP_FIRST_MCS_20_CDD,
27850                                                     TXP_LAST_MCS_20_CDD);
27851                 }
27852
27853                 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27854                                                 TXP_FIRST_OFDM_20_CDD,
27855                                                 TXP_LAST_OFDM_20_CDD,
27856                                                 TXP_FIRST_MCS_20_CDD);
27857
27858                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
27859                                                 tmp_max_pwr,
27860                                                 TXP_FIRST_MCS_20_STBC,
27861                                                 TXP_LAST_MCS_20_STBC);
27862
27863                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27864
27865                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27866                                                     tmp_stbcpo,
27867                                                     TXP_FIRST_MCS_20_STBC,
27868                                                     TXP_LAST_MCS_20_STBC);
27869                 }
27870
27871                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27872                                                 &pwr_offsets2[2], tmp_max_pwr,
27873                                                 TXP_FIRST_MCS_20_SDM,
27874                                                 TXP_LAST_MCS_20_SDM);
27875
27876                 if (NPHY_IS_SROM_REINTERPRET) {
27877
27878                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27879                                                         &pwr_offsets2[4],
27880                                                         tmp_max_pwr,
27881                                                         TXP_FIRST_MCS_40_SISO,
27882                                                         TXP_LAST_MCS_40_SISO);
27883
27884                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27885                                                         TXP_FIRST_OFDM_40_SISO,
27886                                                         TXP_LAST_OFDM_40_SISO,
27887                                                         TXP_FIRST_MCS_40_SISO);
27888
27889                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27890                                                         &pwr_offsets2[4],
27891                                                         tmp_max_pwr,
27892                                                         TXP_FIRST_MCS_40_CDD,
27893                                                         TXP_LAST_MCS_40_CDD);
27894
27895                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
27896                                                     TXP_FIRST_MCS_40_CDD,
27897                                                     TXP_LAST_MCS_40_CDD);
27898
27899                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
27900                                                         TXP_FIRST_OFDM_40_CDD,
27901                                                         TXP_LAST_OFDM_40_CDD,
27902                                                         TXP_FIRST_MCS_40_CDD);
27903
27904                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27905                                                         &pwr_offsets2[4],
27906                                                         tmp_max_pwr,
27907                                                         TXP_FIRST_MCS_40_STBC,
27908                                                         TXP_LAST_MCS_40_STBC);
27909
27910                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27911                                                     tmp_stbcpo,
27912                                                     TXP_FIRST_MCS_40_STBC,
27913                                                     TXP_LAST_MCS_40_STBC);
27914
27915                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
27916                                                         &pwr_offsets2[6],
27917                                                         tmp_max_pwr,
27918                                                         TXP_FIRST_MCS_40_SDM,
27919                                                         TXP_LAST_MCS_40_SDM);
27920                 } else {
27921
27922                         for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
27923                              TXP_FIRST_OFDM; rate1 <= TXP_LAST_MCS_40_SDM;
27924                              rate1++, rate2++)
27925                                 tx_srom_max_rate[rate1] =
27926                                     tx_srom_max_rate[rate2];
27927                 }
27928
27929                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
27930                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
27931                                                     tmp_bw40po,
27932                                                     TXP_FIRST_OFDM_40_SISO,
27933                                                     TXP_LAST_MCS_40_SDM);
27934                 }
27935
27936                 tx_srom_max_rate[TXP_MCS_32] =
27937                     tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
27938         }
27939
27940         return;
27941 }
27942
27943 static void wlc_phy_txpwr_srom_read_ppr_nphy(phy_info_t *pi)
27944 {
27945         u16 bw40po, cddpo, stbcpo, bwduppo;
27946         uint band_num;
27947
27948         if (pi->sh->sromrev >= 9) {
27949
27950                 return;
27951         }
27952
27953         bw40po = (u16) PHY_GETINTVAR(pi, "bw40po");
27954         pi->bw402gpo = bw40po & 0xf;
27955         pi->bw405gpo = (bw40po & 0xf0) >> 4;
27956         pi->bw405glpo = (bw40po & 0xf00) >> 8;
27957         pi->bw405ghpo = (bw40po & 0xf000) >> 12;
27958
27959         cddpo = (u16) PHY_GETINTVAR(pi, "cddpo");
27960         pi->cdd2gpo = cddpo & 0xf;
27961         pi->cdd5gpo = (cddpo & 0xf0) >> 4;
27962         pi->cdd5glpo = (cddpo & 0xf00) >> 8;
27963         pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
27964
27965         stbcpo = (u16) PHY_GETINTVAR(pi, "stbcpo");
27966         pi->stbc2gpo = stbcpo & 0xf;
27967         pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
27968         pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
27969         pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
27970
27971         bwduppo = (u16) PHY_GETINTVAR(pi, "bwduppo");
27972         pi->bwdup2gpo = bwduppo & 0xf;
27973         pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
27974         pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
27975         pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
27976
27977         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP); band_num++) {
27978                 switch (band_num) {
27979                 case 0:
27980
27981                         pi->nphy_txpid2g[PHY_CORE_0] =
27982                             (u8) PHY_GETINTVAR(pi, "txpid2ga0");
27983                         pi->nphy_txpid2g[PHY_CORE_1] =
27984                             (u8) PHY_GETINTVAR(pi, "txpid2ga1");
27985                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
27986                             (s8) PHY_GETINTVAR(pi, "maxp2ga0");
27987                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
27988                             (s8) PHY_GETINTVAR(pi, "maxp2ga1");
27989                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
27990                             (s16) PHY_GETINTVAR(pi, "pa2gw0a0");
27991                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
27992                             (s16) PHY_GETINTVAR(pi, "pa2gw0a1");
27993                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
27994                             (s16) PHY_GETINTVAR(pi, "pa2gw1a0");
27995                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
27996                             (s16) PHY_GETINTVAR(pi, "pa2gw1a1");
27997                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
27998                             (s16) PHY_GETINTVAR(pi, "pa2gw2a0");
27999                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
28000                             (s16) PHY_GETINTVAR(pi, "pa2gw2a1");
28001                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
28002                             (s8) PHY_GETINTVAR(pi, "itt2ga0");
28003                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
28004                             (s8) PHY_GETINTVAR(pi, "itt2ga1");
28005
28006                         pi->cck2gpo = (u16) PHY_GETINTVAR(pi, "cck2gpo");
28007
28008                         pi->ofdm2gpo = (u32) PHY_GETINTVAR(pi, "ofdm2gpo");
28009
28010                         pi->mcs2gpo[0] = (u16) PHY_GETINTVAR(pi, "mcs2gpo0");
28011                         pi->mcs2gpo[1] = (u16) PHY_GETINTVAR(pi, "mcs2gpo1");
28012                         pi->mcs2gpo[2] = (u16) PHY_GETINTVAR(pi, "mcs2gpo2");
28013                         pi->mcs2gpo[3] = (u16) PHY_GETINTVAR(pi, "mcs2gpo3");
28014                         pi->mcs2gpo[4] = (u16) PHY_GETINTVAR(pi, "mcs2gpo4");
28015                         pi->mcs2gpo[5] = (u16) PHY_GETINTVAR(pi, "mcs2gpo5");
28016                         pi->mcs2gpo[6] = (u16) PHY_GETINTVAR(pi, "mcs2gpo6");
28017                         pi->mcs2gpo[7] = (u16) PHY_GETINTVAR(pi, "mcs2gpo7");
28018                         break;
28019                 case 1:
28020
28021                         pi->nphy_txpid5g[PHY_CORE_0] =
28022                             (u8) PHY_GETINTVAR(pi, "txpid5ga0");
28023                         pi->nphy_txpid5g[PHY_CORE_1] =
28024                             (u8) PHY_GETINTVAR(pi, "txpid5ga1");
28025                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
28026                             (s8) PHY_GETINTVAR(pi, "maxp5ga0");
28027                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
28028                             (s8) PHY_GETINTVAR(pi, "maxp5ga1");
28029                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
28030                             (s16) PHY_GETINTVAR(pi, "pa5gw0a0");
28031                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
28032                             (s16) PHY_GETINTVAR(pi, "pa5gw0a1");
28033                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
28034                             (s16) PHY_GETINTVAR(pi, "pa5gw1a0");
28035                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
28036                             (s16) PHY_GETINTVAR(pi, "pa5gw1a1");
28037                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
28038                             (s16) PHY_GETINTVAR(pi, "pa5gw2a0");
28039                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
28040                             (s16) PHY_GETINTVAR(pi, "pa5gw2a1");
28041                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
28042                             (s8) PHY_GETINTVAR(pi, "itt5ga0");
28043                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
28044                             (s8) PHY_GETINTVAR(pi, "itt5ga1");
28045
28046                         pi->ofdm5gpo = (u32) PHY_GETINTVAR(pi, "ofdm5gpo");
28047
28048                         pi->mcs5gpo[0] = (u16) PHY_GETINTVAR(pi, "mcs5gpo0");
28049                         pi->mcs5gpo[1] = (u16) PHY_GETINTVAR(pi, "mcs5gpo1");
28050                         pi->mcs5gpo[2] = (u16) PHY_GETINTVAR(pi, "mcs5gpo2");
28051                         pi->mcs5gpo[3] = (u16) PHY_GETINTVAR(pi, "mcs5gpo3");
28052                         pi->mcs5gpo[4] = (u16) PHY_GETINTVAR(pi, "mcs5gpo4");
28053                         pi->mcs5gpo[5] = (u16) PHY_GETINTVAR(pi, "mcs5gpo5");
28054                         pi->mcs5gpo[6] = (u16) PHY_GETINTVAR(pi, "mcs5gpo6");
28055                         pi->mcs5gpo[7] = (u16) PHY_GETINTVAR(pi, "mcs5gpo7");
28056                         break;
28057                 case 2:
28058
28059                         pi->nphy_txpid5gl[0] =
28060                             (u8) PHY_GETINTVAR(pi, "txpid5gla0");
28061                         pi->nphy_txpid5gl[1] =
28062                             (u8) PHY_GETINTVAR(pi, "txpid5gla1");
28063                         pi->nphy_pwrctrl_info[0].max_pwr_5gl =
28064                             (s8) PHY_GETINTVAR(pi, "maxp5gla0");
28065                         pi->nphy_pwrctrl_info[1].max_pwr_5gl =
28066                             (s8) PHY_GETINTVAR(pi, "maxp5gla1");
28067                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
28068                             (s16) PHY_GETINTVAR(pi, "pa5glw0a0");
28069                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
28070                             (s16) PHY_GETINTVAR(pi, "pa5glw0a1");
28071                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
28072                             (s16) PHY_GETINTVAR(pi, "pa5glw1a0");
28073                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
28074                             (s16) PHY_GETINTVAR(pi, "pa5glw1a1");
28075                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
28076                             (s16) PHY_GETINTVAR(pi, "pa5glw2a0");
28077                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
28078                             (s16) PHY_GETINTVAR(pi, "pa5glw2a1");
28079                         pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
28080                         pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
28081
28082                         pi->ofdm5glpo = (u32) PHY_GETINTVAR(pi, "ofdm5glpo");
28083
28084                         pi->mcs5glpo[0] =
28085                             (u16) PHY_GETINTVAR(pi, "mcs5glpo0");
28086                         pi->mcs5glpo[1] =
28087                             (u16) PHY_GETINTVAR(pi, "mcs5glpo1");
28088                         pi->mcs5glpo[2] =
28089                             (u16) PHY_GETINTVAR(pi, "mcs5glpo2");
28090                         pi->mcs5glpo[3] =
28091                             (u16) PHY_GETINTVAR(pi, "mcs5glpo3");
28092                         pi->mcs5glpo[4] =
28093                             (u16) PHY_GETINTVAR(pi, "mcs5glpo4");
28094                         pi->mcs5glpo[5] =
28095                             (u16) PHY_GETINTVAR(pi, "mcs5glpo5");
28096                         pi->mcs5glpo[6] =
28097                             (u16) PHY_GETINTVAR(pi, "mcs5glpo6");
28098                         pi->mcs5glpo[7] =
28099                             (u16) PHY_GETINTVAR(pi, "mcs5glpo7");
28100                         break;
28101                 case 3:
28102
28103                         pi->nphy_txpid5gh[0] =
28104                             (u8) PHY_GETINTVAR(pi, "txpid5gha0");
28105                         pi->nphy_txpid5gh[1] =
28106                             (u8) PHY_GETINTVAR(pi, "txpid5gha1");
28107                         pi->nphy_pwrctrl_info[0].max_pwr_5gh =
28108                             (s8) PHY_GETINTVAR(pi, "maxp5gha0");
28109                         pi->nphy_pwrctrl_info[1].max_pwr_5gh =
28110                             (s8) PHY_GETINTVAR(pi, "maxp5gha1");
28111                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
28112                             (s16) PHY_GETINTVAR(pi, "pa5ghw0a0");
28113                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
28114                             (s16) PHY_GETINTVAR(pi, "pa5ghw0a1");
28115                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
28116                             (s16) PHY_GETINTVAR(pi, "pa5ghw1a0");
28117                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
28118                             (s16) PHY_GETINTVAR(pi, "pa5ghw1a1");
28119                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
28120                             (s16) PHY_GETINTVAR(pi, "pa5ghw2a0");
28121                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
28122                             (s16) PHY_GETINTVAR(pi, "pa5ghw2a1");
28123                         pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
28124                         pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
28125
28126                         pi->ofdm5ghpo = (u32) PHY_GETINTVAR(pi, "ofdm5ghpo");
28127
28128                         pi->mcs5ghpo[0] =
28129                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo0");
28130                         pi->mcs5ghpo[1] =
28131                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo1");
28132                         pi->mcs5ghpo[2] =
28133                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo2");
28134                         pi->mcs5ghpo[3] =
28135                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo3");
28136                         pi->mcs5ghpo[4] =
28137                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo4");
28138                         pi->mcs5ghpo[5] =
28139                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo5");
28140                         pi->mcs5ghpo[6] =
28141                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo6");
28142                         pi->mcs5ghpo[7] =
28143                             (u16) PHY_GETINTVAR(pi, "mcs5ghpo7");
28144                         break;
28145                 }
28146         }
28147
28148         wlc_phy_txpwr_apply_nphy(pi);
28149 }
28150
28151 static bool wlc_phy_txpwr_srom_read_nphy(phy_info_t *pi)
28152 {
28153
28154         pi->antswitch = (u8) PHY_GETINTVAR(pi, "antswitch");
28155         pi->aa2g = (u8) PHY_GETINTVAR(pi, "aa2g");
28156         pi->aa5g = (u8) PHY_GETINTVAR(pi, "aa5g");
28157
28158         pi->srom_fem2g.tssipos = (u8) PHY_GETINTVAR(pi, "tssipos2g");
28159         pi->srom_fem2g.extpagain = (u8) PHY_GETINTVAR(pi, "extpagain2g");
28160         pi->srom_fem2g.pdetrange = (u8) PHY_GETINTVAR(pi, "pdetrange2g");
28161         pi->srom_fem2g.triso = (u8) PHY_GETINTVAR(pi, "triso2g");
28162         pi->srom_fem2g.antswctrllut = (u8) PHY_GETINTVAR(pi, "antswctl2g");
28163
28164         pi->srom_fem5g.tssipos = (u8) PHY_GETINTVAR(pi, "tssipos5g");
28165         pi->srom_fem5g.extpagain = (u8) PHY_GETINTVAR(pi, "extpagain5g");
28166         pi->srom_fem5g.pdetrange = (u8) PHY_GETINTVAR(pi, "pdetrange5g");
28167         pi->srom_fem5g.triso = (u8) PHY_GETINTVAR(pi, "triso5g");
28168         if (PHY_GETVAR(pi, "antswctl5g")) {
28169
28170                 pi->srom_fem5g.antswctrllut =
28171                     (u8) PHY_GETINTVAR(pi, "antswctl5g");
28172         } else {
28173
28174                 pi->srom_fem5g.antswctrllut =
28175                     (u8) PHY_GETINTVAR(pi, "antswctl2g");
28176         }
28177
28178         wlc_phy_txpower_ipa_upd(pi);
28179
28180         pi->phy_txcore_disable_temp = (s16) PHY_GETINTVAR(pi, "tempthresh");
28181         if (pi->phy_txcore_disable_temp == 0) {
28182                 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
28183         }
28184
28185         pi->phy_tempsense_offset = (s8) PHY_GETINTVAR(pi, "tempoffset");
28186         if (pi->phy_tempsense_offset != 0) {
28187                 if (pi->phy_tempsense_offset >
28188                     (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET)) {
28189                         pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
28190                 } else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
28191                                                     NPHY_SROM_MINTEMPOFFSET)) {
28192                         pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
28193                 } else {
28194                         pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
28195                 }
28196         }
28197
28198         pi->phy_txcore_enable_temp =
28199             pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
28200
28201         pi->phycal_tempdelta = (u8) PHY_GETINTVAR(pi, "phycal_tempdelta");
28202         if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA) {
28203                 pi->phycal_tempdelta = 0;
28204         }
28205
28206         wlc_phy_txpwr_srom_read_ppr_nphy(pi);
28207
28208         return true;
28209 }
28210
28211 void wlc_phy_txpower_recalc_target_nphy(phy_info_t *pi)
28212 {
28213         u8 tx_pwr_ctrl_state;
28214         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28215         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28216
28217         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28218
28219         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28220                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28221                 (void)R_REG(pi->sh->osh, &pi->regs->maccontrol);
28222                 OSL_DELAY(1);
28223         }
28224
28225         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28226
28227         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28228                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28229 }
28230
28231 static void wlc_phy_txpwrctrl_coeff_setup_nphy(phy_info_t *pi)
28232 {
28233         u32 idx;
28234         u16 iqloCalbuf[7];
28235         u32 iqcomp, locomp, curr_locomp;
28236         s8 locomp_i, locomp_q;
28237         s8 curr_locomp_i, curr_locomp_q;
28238         u32 tbl_id, tbl_len, tbl_offset;
28239         u32 regval[128];
28240
28241         if (pi->phyhang_avoid)
28242                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28243
28244         wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
28245
28246         tbl_len = 128;
28247         tbl_offset = 320;
28248         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28249              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28250                 iqcomp =
28251                     (tbl_id ==
28252                      26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
28253                     (iqloCalbuf[1] & 0x3ff)
28254                     : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
28255                     (iqloCalbuf[3] & 0x3ff);
28256
28257                 for (idx = 0; idx < tbl_len; idx++) {
28258                         regval[idx] = iqcomp;
28259                 }
28260                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28261                                          regval);
28262         }
28263
28264         tbl_offset = 448;
28265         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28266              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28267
28268                 locomp =
28269                     (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
28270                 locomp_i = (s8) ((locomp >> 8) & 0xff);
28271                 locomp_q = (s8) ((locomp) & 0xff);
28272                 for (idx = 0; idx < tbl_len; idx++) {
28273                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28274                                 curr_locomp_i = locomp_i;
28275                                 curr_locomp_q = locomp_q;
28276                         } else {
28277                                 curr_locomp_i = (s8) ((locomp_i *
28278                                                          nphy_tpc_loscale[idx] +
28279                                                          128) >> 8);
28280                                 curr_locomp_q =
28281                                     (s8) ((locomp_q * nphy_tpc_loscale[idx] +
28282                                              128) >> 8);
28283                         }
28284                         curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
28285                         curr_locomp |= (u32) (curr_locomp_q & 0xff);
28286                         regval[idx] = curr_locomp;
28287                 }
28288                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28289                                          regval);
28290         }
28291
28292         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
28293
28294                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
28295                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
28296         }
28297
28298         if (pi->phyhang_avoid)
28299                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28300 }
28301
28302 static void wlc_phy_ipa_internal_tssi_setup_nphy(phy_info_t *pi)
28303 {
28304         u8 core;
28305
28306         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28307                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28308                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28309                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28310                                                  TX_SSI_MASTER, 0x5);
28311                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28312                                                  TX_SSI_MUX, 0xe);
28313
28314                                 if (pi->pubpi.radiorev != 5)
28315                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28316                                                          core, TSSIA, 0);
28317
28318                                 if (!NREV_IS(pi->pubpi.phy_rev, 7)) {
28319
28320                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28321                                                          core, TSSIG, 0x1);
28322                                 } else {
28323
28324                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
28325                                                          core, TSSIG, 0x31);
28326                                 }
28327                         } else {
28328                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28329                                                  TX_SSI_MASTER, 0x9);
28330                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28331                                                  TX_SSI_MUX, 0xc);
28332                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
28333                                                  TSSIG, 0);
28334
28335                                 if (pi->pubpi.radiorev != 5) {
28336                                         if (!NREV_IS(pi->pubpi.phy_rev, 7)) {
28337
28338                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28339                                                                  TX, core,
28340                                                                  TSSIA, 0x1);
28341                                         } else {
28342
28343                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28344                                                                  TX, core,
28345                                                                  TSSIA, 0x31);
28346                                         }
28347                                 }
28348                         }
28349                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
28350                                          0);
28351                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
28352                                          0);
28353                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
28354                                          0x3);
28355                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
28356                                          0x0);
28357                 }
28358         } else {
28359                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
28360                                 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
28361                                 0x80);
28362                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
28363                 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
28364
28365                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28366                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
28367                                          0x0);
28368                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
28369                                          0x0);
28370                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
28371                                          0x3);
28372                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
28373                                          0x0);
28374                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
28375                                          0x8);
28376                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
28377                                          0x0);
28378                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
28379                                          0x0);
28380
28381                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28382                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28383                                                  TX_SSI_MASTER, 0x5);
28384
28385                                 if (pi->pubpi.radiorev != 5)
28386                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28387                                                          core, TSSIA, 0x0);
28388                                 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
28389
28390                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28391                                                          core, TSSIG, 0x31);
28392                                 } else {
28393                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
28394                                                          core, TSSIG, 0x11);
28395                                 }
28396                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28397                                                  TX_SSI_MUX, 0xe);
28398                         } else {
28399                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28400                                                  TX_SSI_MASTER, 0x9);
28401                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28402                                                  TSSIA, 0x31);
28403                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28404                                                  TSSIG, 0x0);
28405                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
28406                                                  TX_SSI_MUX, 0xc);
28407                         }
28408                 }
28409         }
28410 }
28411
28412 static void wlc_phy_txpwrctrl_idle_tssi_nphy(phy_info_t *pi)
28413 {
28414         s32 rssi_buf[4];
28415         s32 int_val;
28416
28417         if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
28418
28419                 return;
28420
28421         if (PHY_IPA(pi)) {
28422                 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
28423         }
28424
28425         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28426                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
28427                                                   0, 0x3, 0,
28428                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
28429         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28430                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
28431         }
28432
28433         wlc_phy_stopplayback_nphy(pi);
28434
28435         wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
28436
28437         OSL_DELAY(20);
28438         int_val =
28439             wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
28440                                    1);
28441         wlc_phy_stopplayback_nphy(pi);
28442         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
28443
28444         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28445                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
28446                                                   0, 0x3, 1,
28447                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
28448         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28449                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
28450         }
28451
28452         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28453
28454                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
28455                     (u8) ((int_val >> 24) & 0xff);
28456                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
28457                     (u8) ((int_val >> 24) & 0xff);
28458
28459                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
28460                     (u8) ((int_val >> 8) & 0xff);
28461                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
28462                     (u8) ((int_val >> 8) & 0xff);
28463         } else {
28464                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
28465                     (u8) ((int_val >> 24) & 0xff);
28466
28467                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
28468                     (u8) ((int_val >> 8) & 0xff);
28469
28470                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
28471                     (u8) ((int_val >> 16) & 0xff);
28472                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
28473                     (u8) ((int_val) & 0xff);
28474         }
28475
28476 }
28477
28478 static void wlc_phy_txpwrctrl_pwr_setup_nphy(phy_info_t *pi)
28479 {
28480         u32 idx;
28481         s16 a1[2], b0[2], b1[2];
28482         s8 target_pwr_qtrdbm[2];
28483         s32 num, den, pwr_est;
28484         u8 chan_freq_range;
28485         u8 idle_tssi[2];
28486         u32 tbl_id, tbl_len, tbl_offset;
28487         u32 regval[64];
28488         u8 core;
28489
28490         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28491                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28492                 (void)R_REG(pi->sh->osh, &pi->regs->maccontrol);
28493                 OSL_DELAY(1);
28494         }
28495
28496         if (pi->phyhang_avoid)
28497                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28498
28499         or_phy_reg(pi, 0x122, (0x1 << 0));
28500
28501         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28502                 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
28503         } else {
28504
28505                 or_phy_reg(pi, 0x1e7, (0x1 << 15));
28506         }
28507
28508         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28509                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28510
28511         if (pi->sh->sromrev < 4) {
28512                 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28513                 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28514                 target_pwr_qtrdbm[0] = 13 * 4;
28515                 target_pwr_qtrdbm[1] = 13 * 4;
28516                 a1[0] = -424;
28517                 a1[1] = -424;
28518                 b0[0] = 5612;
28519                 b0[1] = 5612;
28520                 b1[1] = -1393;
28521                 b1[0] = -1393;
28522         } else {
28523
28524                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
28525                 switch (chan_freq_range) {
28526                 case WL_CHAN_FREQ_RANGE_2G:
28527                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28528                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28529                         target_pwr_qtrdbm[0] =
28530                             pi->nphy_pwrctrl_info[0].max_pwr_2g;
28531                         target_pwr_qtrdbm[1] =
28532                             pi->nphy_pwrctrl_info[1].max_pwr_2g;
28533                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
28534                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
28535                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
28536                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
28537                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
28538                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
28539                         break;
28540                 case WL_CHAN_FREQ_RANGE_5GL:
28541                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28542                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28543                         target_pwr_qtrdbm[0] =
28544                             pi->nphy_pwrctrl_info[0].max_pwr_5gl;
28545                         target_pwr_qtrdbm[1] =
28546                             pi->nphy_pwrctrl_info[1].max_pwr_5gl;
28547                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
28548                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
28549                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
28550                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
28551                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
28552                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
28553                         break;
28554                 case WL_CHAN_FREQ_RANGE_5GM:
28555                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28556                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28557                         target_pwr_qtrdbm[0] =
28558                             pi->nphy_pwrctrl_info[0].max_pwr_5gm;
28559                         target_pwr_qtrdbm[1] =
28560                             pi->nphy_pwrctrl_info[1].max_pwr_5gm;
28561                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
28562                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
28563                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
28564                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
28565                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
28566                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
28567                         break;
28568                 case WL_CHAN_FREQ_RANGE_5GH:
28569                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
28570                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
28571                         target_pwr_qtrdbm[0] =
28572                             pi->nphy_pwrctrl_info[0].max_pwr_5gh;
28573                         target_pwr_qtrdbm[1] =
28574                             pi->nphy_pwrctrl_info[1].max_pwr_5gh;
28575                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
28576                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
28577                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
28578                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
28579                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
28580                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
28581                         break;
28582                 default:
28583                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
28584                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
28585                         target_pwr_qtrdbm[0] = 13 * 4;
28586                         target_pwr_qtrdbm[1] = 13 * 4;
28587                         a1[0] = -424;
28588                         a1[1] = -424;
28589                         b0[0] = 5612;
28590                         b0[1] = 5612;
28591                         b1[1] = -1393;
28592                         b1[0] = -1393;
28593                         break;
28594                 }
28595         }
28596
28597         target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
28598         target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
28599
28600         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28601                 if (pi->srom_fem2g.tssipos) {
28602                         or_phy_reg(pi, 0x1e9, (0x1 << 14));
28603                 }
28604
28605                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28606                         for (core = 0; core <= 1; core++) {
28607                                 if (PHY_IPA(pi)) {
28608
28609                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
28610                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28611                                                                  TX, core,
28612                                                                  TX_SSI_MUX,
28613                                                                  0xe);
28614                                         } else {
28615                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
28616                                                                  TX, core,
28617                                                                  TX_SSI_MUX,
28618                                                                  0xc);
28619                                         }
28620                                 } else {
28621                                 }
28622                         }
28623                 } else {
28624                         if (PHY_IPA(pi)) {
28625
28626                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28627                                                 RADIO_2056_TX0,
28628                                                 (CHSPEC_IS5G
28629                                                  (pi->
28630                                                   radio_chanspec)) ? 0xc : 0xe);
28631                                 write_radio_reg(pi,
28632                                                 RADIO_2056_TX_TX_SSI_MUX |
28633                                                 RADIO_2056_TX1,
28634                                                 (CHSPEC_IS5G
28635                                                  (pi->
28636                                                   radio_chanspec)) ? 0xc : 0xe);
28637                         } else {
28638
28639                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28640                                                 RADIO_2056_TX0, 0x11);
28641                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
28642                                                 RADIO_2056_TX1, 0x11);
28643                         }
28644                 }
28645         }
28646
28647         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28648                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28649                 (void)R_REG(pi->sh->osh, &pi->regs->maccontrol);
28650                 OSL_DELAY(1);
28651         }
28652
28653         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28654                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
28655                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
28656         } else {
28657                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
28658                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
28659         }
28660
28661         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28662                 mod_phy_reg(pi, 0x222, (0xff << 0),
28663                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
28664         } else if (NREV_GT(pi->pubpi.phy_rev, 1)) {
28665                 mod_phy_reg(pi, 0x222, (0xff << 0),
28666                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
28667         }
28668
28669         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28670                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28671
28672         write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
28673
28674         write_phy_reg(pi, 0x1e9,
28675                       (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
28676
28677         write_phy_reg(pi, 0x1ea,
28678                       (target_pwr_qtrdbm[0] << 0) |
28679                       (target_pwr_qtrdbm[1] << 8));
28680
28681         tbl_len = 64;
28682         tbl_offset = 0;
28683         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
28684              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
28685
28686                 for (idx = 0; idx < tbl_len; idx++) {
28687                         num =
28688                             8 * (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
28689                         den = 32768 + a1[tbl_id - 26] * idx;
28690                         pwr_est = max(((4 * num + den / 2) / den), -8);
28691                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
28692                                 if (idx <=
28693                                     (uint) (31 - idle_tssi[tbl_id - 26] + 1))
28694                                         pwr_est =
28695                                             max(pwr_est,
28696                                                 target_pwr_qtrdbm[tbl_id - 26] +
28697                                                 1);
28698                         }
28699                         regval[idx] = (u32) pwr_est;
28700                 }
28701                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
28702                                          regval);
28703         }
28704
28705         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28706         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
28707                                  pi->adj_pwr_tbl_nphy);
28708         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
28709                                  pi->adj_pwr_tbl_nphy);
28710
28711         if (pi->phyhang_avoid)
28712                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28713 }
28714
28715 static bool wlc_phy_txpwr_ison_nphy(phy_info_t *pi)
28716 {
28717         return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28718                                              (0x1 << 14) | (0x1 << 13));
28719 }
28720
28721 static u8 wlc_phy_txpwr_idx_cur_get_nphy(phy_info_t *pi, u8 core)
28722 {
28723         u16 tmp;
28724         tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
28725
28726         tmp = (tmp & (0x7f << 8)) >> 8;
28727         return (u8) tmp;
28728 }
28729
28730 static void
28731 wlc_phy_txpwr_idx_cur_set_nphy(phy_info_t *pi, u8 idx0, u8 idx1)
28732 {
28733         mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
28734
28735         if (NREV_GT(pi->pubpi.phy_rev, 1))
28736                 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
28737 }
28738
28739 u16 wlc_phy_txpwr_idx_get_nphy(phy_info_t *pi)
28740 {
28741         u16 tmp;
28742         u16 pwr_idx[2];
28743
28744         if (wlc_phy_txpwr_ison_nphy(pi)) {
28745                 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28746                 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28747
28748                 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28749         } else {
28750                 tmp =
28751                     ((pi->nphy_txpwrindex[PHY_CORE_0].
28752                       index_internal & 0xff) << 8) | (pi->
28753                                                       nphy_txpwrindex
28754                                                       [PHY_CORE_1].
28755                                                       index_internal & 0xff);
28756         }
28757
28758         return tmp;
28759 }
28760
28761 void wlc_phy_txpwr_papd_cal_nphy(phy_info_t *pi)
28762 {
28763         if (PHY_IPA(pi)
28764             && (pi->nphy_force_papd_cal
28765                 || (wlc_phy_txpwr_ison_nphy(pi)
28766                     &&
28767                     (((u32)
28768                       ABS(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28769                           pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28770                      || ((u32)
28771                          ABS(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28772                              pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4))))) {
28773                 wlc_phy_a4(pi, true);
28774         }
28775 }
28776
28777 void wlc_phy_txpwrctrl_enable_nphy(phy_info_t *pi, u8 ctrl_type)
28778 {
28779         u16 mask = 0, val = 0, ishw = 0;
28780         u8 ctr;
28781         uint core;
28782         u32 tbl_offset;
28783         u32 tbl_len;
28784         u16 regval[84];
28785
28786         if (pi->phyhang_avoid)
28787                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28788
28789         switch (ctrl_type) {
28790         case PHY_TPC_HW_OFF:
28791         case PHY_TPC_HW_ON:
28792                 pi->nphy_txpwrctrl = ctrl_type;
28793                 break;
28794         default:
28795                 break;
28796         }
28797
28798         if (ctrl_type == PHY_TPC_HW_OFF) {
28799                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28800
28801                         if (wlc_phy_txpwr_ison_nphy(pi)) {
28802                                 for (core = 0; core < pi->pubpi.phy_corenum;
28803                                      core++)
28804                                         pi->nphy_txpwr_idx[core] =
28805                                             wlc_phy_txpwr_idx_cur_get_nphy(pi,
28806                                                                            (u8)
28807                                                                            core);
28808                         }
28809
28810                 }
28811
28812                 tbl_len = 84;
28813                 tbl_offset = 64;
28814                 for (ctr = 0; ctr < tbl_len; ctr++) {
28815                         regval[ctr] = 0;
28816                 }
28817                 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28818                                          regval);
28819                 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28820                                          regval);
28821
28822                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28823
28824                         and_phy_reg(pi, 0x1e7,
28825                                     (u16) (~((0x1 << 15) |
28826                                                 (0x1 << 14) | (0x1 << 13))));
28827                 } else {
28828                         and_phy_reg(pi, 0x1e7,
28829                                     (u16) (~((0x1 << 14) | (0x1 << 13))));
28830                 }
28831
28832                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28833                         or_phy_reg(pi, 0x8f, (0x1 << 8));
28834                         or_phy_reg(pi, 0xa5, (0x1 << 8));
28835                 } else {
28836                         or_phy_reg(pi, 0xa5, (0x1 << 14));
28837                 }
28838
28839                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28840                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28841                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28842                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28843
28844                 if (NREV_LT(pi->pubpi.phy_rev, 2) && IS40MHZ(pi))
28845                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28846                                        MHF1_IQSWAP_WAR, WLC_BAND_ALL);
28847
28848         } else {
28849
28850                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28851                                          8, pi->adj_pwr_tbl_nphy);
28852                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28853                                          8, pi->adj_pwr_tbl_nphy);
28854
28855                 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28856                 mask = (0x1 << 14) | (0x1 << 13);
28857                 val = (ishw << 14) | (ishw << 13);
28858
28859                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28860                         mask |= (0x1 << 15);
28861                         val |= (ishw << 15);
28862                 }
28863
28864                 mod_phy_reg(pi, 0x1e7, mask, val);
28865
28866                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28867                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28868                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28869                                 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28870                         } else {
28871                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28872                                 if (NREV_GT(pi->pubpi.phy_rev, 1))
28873                                         mod_phy_reg(pi, 0x222,
28874                                                     (0xff << 0), 0x64);
28875                         }
28876                 }
28877
28878                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28879                         if ((pi->nphy_txpwr_idx[0] != 128)
28880                             && (pi->nphy_txpwr_idx[1] != 128)) {
28881                                 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28882                                                                pi->
28883                                                                nphy_txpwr_idx
28884                                                                [0],
28885                                                                pi->
28886                                                                nphy_txpwr_idx
28887                                                                [1]);
28888                         }
28889                 }
28890
28891                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28892                         and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28893                         and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28894                 } else {
28895                         and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28896                 }
28897
28898                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28899                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28900                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28901                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28902
28903                 if (NREV_LT(pi->pubpi.phy_rev, 2) && IS40MHZ(pi))
28904                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28905                                        0x0, WLC_BAND_ALL);
28906
28907                 if (PHY_IPA(pi)) {
28908                         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28909                                     0x29b, (0x1 << 2), (0) << 2);
28910
28911                         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28912                                     0x29b, (0x1 << 2), (0) << 2);
28913
28914                 }
28915
28916         }
28917
28918         if (pi->phyhang_avoid)
28919                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28920 }
28921
28922 void
28923 wlc_phy_txpwr_index_nphy(phy_info_t *pi, u8 core_mask, s8 txpwrindex,
28924                          bool restore_cals)
28925 {
28926         u8 core, txpwrctl_tbl;
28927         u16 tx_ind0, iq_ind0, lo_ind0;
28928         u16 m1m2;
28929         u32 txgain;
28930         u16 rad_gain, dac_gain;
28931         u8 bbmult;
28932         u32 iqcomp;
28933         u16 iqcomp_a, iqcomp_b;
28934         u32 locomp;
28935         u16 tmpval;
28936         u8 tx_pwr_ctrl_state;
28937         s32 rfpwr_offset;
28938         u16 regval[2];
28939
28940         if (pi->phyhang_avoid)
28941                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28942
28943         tx_ind0 = 192;
28944         iq_ind0 = 320;
28945         lo_ind0 = 448;
28946
28947         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28948
28949                 if ((core_mask & (1 << core)) == 0) {
28950                         continue;
28951                 }
28952
28953                 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28954
28955                 if (txpwrindex < 0) {
28956                         if (pi->nphy_txpwrindex[core].index < 0) {
28957
28958                                 continue;
28959                         }
28960
28961                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28962                                 mod_phy_reg(pi, 0x8f,
28963                                             (0x1 << 8),
28964                                             pi->nphy_txpwrindex[core].
28965                                             AfectrlOverride);
28966                                 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28967                                             pi->nphy_txpwrindex[core].
28968                                             AfectrlOverride);
28969                         } else {
28970                                 mod_phy_reg(pi, 0xa5,
28971                                             (0x1 << 14),
28972                                             pi->nphy_txpwrindex[core].
28973                                             AfectrlOverride);
28974                         }
28975
28976                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28977                                       0xaa : 0xab,
28978                                       pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28979
28980                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28981                                                  &pi->nphy_txpwrindex[core].
28982                                                  rad_gain);
28983
28984                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28985                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28986                         m1m2 |= ((core == PHY_CORE_0) ?
28987                                  (pi->nphy_txpwrindex[core].bbmult << 8) :
28988                                  (pi->nphy_txpwrindex[core].bbmult << 0));
28989                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28990
28991                         if (restore_cals) {
28992
28993                                 wlc_phy_table_write_nphy(pi, 15, 2,
28994                                                          (80 + 2 * core), 16,
28995                                                          (void *)&pi->
28996                                                          nphy_txpwrindex[core].
28997                                                          iqcomp_a);
28998
28999                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
29000                                                          16,
29001                                                          &pi->
29002                                                          nphy_txpwrindex[core].
29003                                                          locomp);
29004                                 wlc_phy_table_write_nphy(pi, 15, 1, (93 + core),
29005                                                          16,
29006                                                          (void *)&pi->
29007                                                          nphy_txpwrindex[core].
29008                                                          locomp);
29009                         }
29010
29011                         wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
29012
29013                         pi->nphy_txpwrindex[core].index_internal =
29014                             pi->nphy_txpwrindex[core].index_internal_save;
29015                 } else {
29016
29017                         if (pi->nphy_txpwrindex[core].index < 0) {
29018
29019                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29020                                         mod_phy_reg(pi, 0x8f,
29021                                                     (0x1 << 8),
29022                                                     pi->nphy_txpwrindex[core].
29023                                                     AfectrlOverride);
29024                                         mod_phy_reg(pi, 0xa5, (0x1 << 8),
29025                                                     pi->nphy_txpwrindex[core].
29026                                                     AfectrlOverride);
29027                                 } else {
29028                                         pi->nphy_txpwrindex[core].
29029                                             AfectrlOverride =
29030                                             read_phy_reg(pi, 0xa5);
29031                                 }
29032
29033                                 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
29034                                     read_phy_reg(pi,
29035                                                  (core ==
29036                                                   PHY_CORE_0) ? 0xaa : 0xab);
29037
29038                                 wlc_phy_table_read_nphy(pi, 7, 1,
29039                                                         (0x110 + core), 16,
29040                                                         &pi->
29041                                                         nphy_txpwrindex[core].
29042                                                         rad_gain);
29043
29044                                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
29045                                                         &tmpval);
29046                                 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
29047                                 tmpval &= 0xff;
29048                                 pi->nphy_txpwrindex[core].bbmult =
29049                                     (u8) tmpval;
29050
29051                                 wlc_phy_table_read_nphy(pi, 15, 2,
29052                                                         (80 + 2 * core), 16,
29053                                                         (void *)&pi->
29054                                                         nphy_txpwrindex[core].
29055                                                         iqcomp_a);
29056
29057                                 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
29058                                                         16,
29059                                                         (void *)&pi->
29060                                                         nphy_txpwrindex[core].
29061                                                         locomp);
29062
29063                                 pi->nphy_txpwrindex[core].index_internal_save =
29064                                     pi->nphy_txpwrindex[core].index_internal;
29065                         }
29066
29067                         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
29068                         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
29069
29070                         if (NREV_IS(pi->pubpi.phy_rev, 1))
29071                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
29072
29073                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29074                                                 (tx_ind0 + txpwrindex), 32,
29075                                                 &txgain);
29076
29077                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29078                                 rad_gain =
29079                                     (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
29080                         } else {
29081                                 rad_gain =
29082                                     (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
29083                         }
29084                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
29085                         bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
29086
29087                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
29088                                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
29089                                                  0xa5), (0x1 << 8), (0x1 << 8));
29090                         } else {
29091                                 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
29092                         }
29093                         write_phy_reg(pi, (core == PHY_CORE_0) ?
29094                                       0xaa : 0xab, dac_gain);
29095
29096                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
29097                                                  &rad_gain);
29098
29099                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
29100                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
29101                         m1m2 |=
29102                             ((core ==
29103                               PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
29104
29105                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
29106
29107                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29108                                                 (iq_ind0 + txpwrindex), 32,
29109                                                 &iqcomp);
29110                         iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
29111                         iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
29112
29113                         if (restore_cals) {
29114                                 regval[0] = (u16) iqcomp_a;
29115                                 regval[1] = (u16) iqcomp_b;
29116                                 wlc_phy_table_write_nphy(pi, 15, 2,
29117                                                          (80 + 2 * core), 16,
29118                                                          regval);
29119                         }
29120
29121                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
29122                                                 (lo_ind0 + txpwrindex), 32,
29123                                                 &locomp);
29124                         if (restore_cals) {
29125                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
29126                                                          16, &locomp);
29127                         }
29128
29129                         if (NREV_IS(pi->pubpi.phy_rev, 1))
29130                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
29131
29132                         if (PHY_IPA(pi)) {
29133                                 wlc_phy_table_read_nphy(pi,
29134                                                         (core ==
29135                                                          PHY_CORE_0 ?
29136                                                          NPHY_TBL_ID_CORE1TXPWRCTL
29137                                                          :
29138                                                          NPHY_TBL_ID_CORE2TXPWRCTL),
29139                                                         1, 576 + txpwrindex, 32,
29140                                                         &rfpwr_offset);
29141
29142                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
29143                                             0x29b, (0x1ff << 4),
29144                                             ((s16) rfpwr_offset) << 4);
29145
29146                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
29147                                             0x29b, (0x1 << 2), (1) << 2);
29148
29149                         }
29150
29151                         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
29152                 }
29153
29154                 pi->nphy_txpwrindex[core].index = txpwrindex;
29155         }
29156
29157         if (pi->phyhang_avoid)
29158                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
29159 }
29160
29161 void
29162 wlc_phy_txpower_sromlimit_get_nphy(phy_info_t *pi, uint chan, u8 *max_pwr,
29163                                    u8 txp_rate_idx)
29164 {
29165         u8 chan_freq_range;
29166
29167         chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
29168         switch (chan_freq_range) {
29169         case WL_CHAN_FREQ_RANGE_2G:
29170                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
29171                 break;
29172         case WL_CHAN_FREQ_RANGE_5GM:
29173                 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
29174                 break;
29175         case WL_CHAN_FREQ_RANGE_5GL:
29176                 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
29177                 break;
29178         case WL_CHAN_FREQ_RANGE_5GH:
29179                 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
29180                 break;
29181         default:
29182                 ASSERT(0);
29183                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
29184                 break;
29185         }
29186
29187         return;
29188 }
29189
29190 void wlc_phy_stay_in_carriersearch_nphy(phy_info_t *pi, bool enable)
29191 {
29192         u16 clip_off[] = { 0xffff, 0xffff };
29193
29194         ASSERT(0 == (R_REG(pi->sh->osh, &pi->regs->maccontrol) & MCTL_EN_MAC));
29195
29196         if (enable) {
29197                 if (pi->nphy_deaf_count == 0) {
29198                         pi->classifier_state =
29199                             wlc_phy_classifier_nphy(pi, 0, 0);
29200                         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
29201                         wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
29202                         wlc_phy_clip_det_nphy(pi, 1, clip_off);
29203                 }
29204
29205                 pi->nphy_deaf_count++;
29206
29207                 wlc_phy_resetcca_nphy(pi);
29208
29209         } else {
29210                 ASSERT(pi->nphy_deaf_count > 0);
29211
29212                 pi->nphy_deaf_count--;
29213
29214                 if (pi->nphy_deaf_count == 0) {
29215                         wlc_phy_classifier_nphy(pi, (0x7 << 0),
29216                                                 pi->classifier_state);
29217                         wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
29218                 }
29219         }
29220 }
29221
29222 void wlc_nphy_deaf_mode(phy_info_t *pi, bool mode)
29223 {
29224         wlapi_suspend_mac_and_wait(pi->sh->physhim);
29225
29226         if (mode) {
29227                 if (pi->nphy_deaf_count == 0)
29228                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
29229         } else {
29230                 if (pi->nphy_deaf_count > 0)
29231                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
29232         }
29233         wlapi_enable_mac(pi->sh->physhim);
29234 }